@@ -304,9 +304,12 @@ define <16 x i1> @lane_mask_v16i1_i8(i8 %index, i8 %TC) {
304304;
305305; CHECK-STREAMING-LABEL: lane_mask_v16i1_i8:
306306; CHECK-STREAMING: // %bb.0:
307- ; CHECK-STREAMING-NEXT: index z0.b, w0, #1
308- ; CHECK-STREAMING-NEXT: mov z1.b, w0
307+ ; CHECK-STREAMING-NEXT: index z0.b, #0, #1
309308; CHECK-STREAMING-NEXT: ptrue p0.b, vl16
309+ ; CHECK-STREAMING-NEXT: mov z1.b, w0
310+ ; CHECK-STREAMING-NEXT: mov z0.b, p0/m, z0.b
311+ ; CHECK-STREAMING-NEXT: sel z1.b, p0, z1.b, z0.b
312+ ; CHECK-STREAMING-NEXT: add z0.b, z1.b, z0.b
310313; CHECK-STREAMING-NEXT: cmphi p1.b, p0/z, z1.b, z0.b
311314; CHECK-STREAMING-NEXT: mov z1.b, p1/z, #-1 // =0xffffffffffffffff
312315; CHECK-STREAMING-NEXT: orr z0.d, z0.d, z1.d
@@ -331,9 +334,12 @@ define <8 x i1> @lane_mask_v8i1_i8(i8 %index, i8 %TC) {
331334;
332335; CHECK-STREAMING-LABEL: lane_mask_v8i1_i8:
333336; CHECK-STREAMING: // %bb.0:
334- ; CHECK-STREAMING-NEXT: index z0.b, w0, #1
335- ; CHECK-STREAMING-NEXT: mov z1.b, w0
337+ ; CHECK-STREAMING-NEXT: index z0.b, #0, #1
336338; CHECK-STREAMING-NEXT: ptrue p0.b, vl8
339+ ; CHECK-STREAMING-NEXT: mov z1.b, w0
340+ ; CHECK-STREAMING-NEXT: mov z0.b, p0/m, z0.b
341+ ; CHECK-STREAMING-NEXT: sel z1.b, p0, z1.b, z0.b
342+ ; CHECK-STREAMING-NEXT: add z0.b, z1.b, z0.b
337343; CHECK-STREAMING-NEXT: cmphi p1.b, p0/z, z1.b, z0.b
338344; CHECK-STREAMING-NEXT: mov z1.b, p1/z, #-1 // =0xffffffffffffffff
339345; CHECK-STREAMING-NEXT: orr z0.d, z0.d, z1.d
@@ -362,15 +368,20 @@ define <4 x i1> @lane_mask_v4i1_i8(i8 %index, i8 %TC) {
362368;
363369; CHECK-STREAMING-LABEL: lane_mask_v4i1_i8:
364370; CHECK-STREAMING: // %bb.0:
365- ; CHECK-STREAMING-NEXT: mov z1.h, w0
366- ; CHECK-STREAMING-NEXT: index z0.h, #0, #1
371+ ; CHECK-STREAMING-NEXT: mov z0.h, #255 // =0xff
367372; CHECK-STREAMING-NEXT: ptrue p0.h, vl4
368- ; CHECK-STREAMING-NEXT: and z1.h, z1.h, #0xff
369- ; CHECK-STREAMING-NEXT: add z0.h, z1.h, z0.h
370- ; CHECK-STREAMING-NEXT: mov z1.h, w1
371- ; CHECK-STREAMING-NEXT: umin z0.h, z0.h, #255
372- ; CHECK-STREAMING-NEXT: and z1.h, z1.h, #0xff
373- ; CHECK-STREAMING-NEXT: cmphi p0.h, p0/z, z1.h, z0.h
373+ ; CHECK-STREAMING-NEXT: index z2.h, #0, #1
374+ ; CHECK-STREAMING-NEXT: mov z1.h, w0
375+ ; CHECK-STREAMING-NEXT: mov z3.h, w1
376+ ; CHECK-STREAMING-NEXT: mov z0.h, p0/m, z0.h
377+ ; CHECK-STREAMING-NEXT: sel z1.h, p0, z1.h, z0.h
378+ ; CHECK-STREAMING-NEXT: sel z2.h, p0, z2.h, z0.h
379+ ; CHECK-STREAMING-NEXT: sel z3.h, p0, z3.h, z0.h
380+ ; CHECK-STREAMING-NEXT: and z1.d, z1.d, z0.d
381+ ; CHECK-STREAMING-NEXT: add z1.h, z1.h, z2.h
382+ ; CHECK-STREAMING-NEXT: and z2.d, z3.d, z0.d
383+ ; CHECK-STREAMING-NEXT: umin z0.h, p0/m, z0.h, z1.h
384+ ; CHECK-STREAMING-NEXT: cmphi p0.h, p0/z, z2.h, z0.h
374385; CHECK-STREAMING-NEXT: mov z0.h, p0/z, #-1 // =0xffffffffffffffff
375386; CHECK-STREAMING-NEXT: // kill: def $d0 killed $d0 killed $z0
376387; CHECK-STREAMING-NEXT: ret
@@ -394,10 +405,14 @@ define <2 x i1> @lane_mask_v2i1_i8(i8 %index, i8 %TC) {
394405;
395406; CHECK-STREAMING-LABEL: lane_mask_v2i1_i8:
396407; CHECK-STREAMING: // %bb.0:
397- ; CHECK-STREAMING-NEXT: and w8, w0 , #0xff
408+ ; CHECK-STREAMING-NEXT: index z0.s, #0 , #1
398409; CHECK-STREAMING-NEXT: ptrue p0.s, vl2
399- ; CHECK-STREAMING-NEXT: index z0.s, w8, #1
410+ ; CHECK-STREAMING-NEXT: and w8, w0, #0xff
411+ ; CHECK-STREAMING-NEXT: mov z1.s, w8
400412; CHECK-STREAMING-NEXT: and w8, w1, #0xff
413+ ; CHECK-STREAMING-NEXT: mov z0.s, p0/m, z0.s
414+ ; CHECK-STREAMING-NEXT: sel z1.s, p0, z1.s, z0.s
415+ ; CHECK-STREAMING-NEXT: add z0.s, z1.s, z0.s
401416; CHECK-STREAMING-NEXT: mov z1.s, w8
402417; CHECK-STREAMING-NEXT: umin z0.s, z0.s, #255
403418; CHECK-STREAMING-NEXT: cmphi p0.s, p0/z, z1.s, z0.s
0 commit comments