@@ -174,6 +174,22 @@ define <vscale x 7 x i1> @lane_mask_nxv7i1_i64(i64 %index, i64 %TC) {
174174 ret <vscale x 7 x i1 > %active.lane.mask
175175}
176176
177+ define <vscale x 1 x i1 > @lane_mask_nxv1i1_i8 (i32 %index , i32 %TC ) {
178+ ; CHECK-LABEL: lane_mask_nxv1i1_i8:
179+ ; CHECK: // %bb.0:
180+ ; CHECK-NEXT: index z0.s, #0, #1
181+ ; CHECK-NEXT: mov z1.s, w0
182+ ; CHECK-NEXT: ptrue p0.s
183+ ; CHECK-NEXT: uqadd z0.s, z0.s, z1.s
184+ ; CHECK-NEXT: mov z1.s, w1
185+ ; CHECK-NEXT: cmphi p0.s, p0/z, z1.s, z0.s
186+ ; CHECK-NEXT: punpklo p0.h, p0.b
187+ ; CHECK-NEXT: punpklo p0.h, p0.b
188+ ; CHECK-NEXT: ret
189+ %active.lane.mask = call <vscale x 1 x i1 > @llvm.get.active.lane.mask.nxv1i1.i32 (i32 %index , i32 %TC )
190+ ret <vscale x 1 x i1 > %active.lane.mask
191+ }
192+
177193; UTC_ARGS: --disable
178194; This test exists to protect against a compiler crash caused by an attempt to
179195; convert (via changeVectorElementType) an MVT into an EVT, which is impossible.
@@ -392,6 +408,7 @@ declare <vscale x 16 x i1> @llvm.get.active.lane.mask.nxv16i1.i32(i32, i32)
392408declare <vscale x 8 x i1 > @llvm.get.active.lane.mask.nxv8i1.i32 (i32 , i32 )
393409declare <vscale x 4 x i1 > @llvm.get.active.lane.mask.nxv4i1.i32 (i32 , i32 )
394410declare <vscale x 2 x i1 > @llvm.get.active.lane.mask.nxv2i1.i32 (i32 , i32 )
411+ declare <vscale x 1 x i1 > @llvm.get.active.lane.mask.nxv1i1.i32 (i32 , i32 )
395412
396413declare <vscale x 64 x i1 > @llvm.get.active.lane.mask.nxv64i1.i64 (i64 , i64 )
397414declare <vscale x 32 x i1 > @llvm.get.active.lane.mask.nxv32i1.i64 (i64 , i64 )
0 commit comments