@@ -49,16 +49,16 @@ define <vscale x 8 x i32> @test_signed_v8f32_v8i32(<vscale x 8 x float> %f) {
4949; CHECK-LABEL: test_signed_v8f32_v8i32:
5050; CHECK: // %bb.0:
5151; CHECK-NEXT: ptrue p0.s
52- ; CHECK-NEXT: movi v2.2d, #0000000000000000
5352; CHECK-NEXT: mov w8, #1333788671 // =0x4f7fffff
53+ ; CHECK-NEXT: movi v2.2d, #0000000000000000
5454; CHECK-NEXT: movi v3.2d, #0000000000000000
5555; CHECK-NEXT: mov z4.s, w8
5656; CHECK-NEXT: fcmge p1.s, p0/z, z0.s, #0.0
5757; CHECK-NEXT: fcmge p2.s, p0/z, z1.s, #0.0
5858; CHECK-NEXT: fcvtzu z2.s, p1/m, z0.s
5959; CHECK-NEXT: fcmgt p1.s, p0/z, z0.s, z4.s
60- ; CHECK-NEXT: fcmgt p0.s, p0/z, z1.s, z4.s
6160; CHECK-NEXT: fcvtzu z3.s, p2/m, z1.s
61+ ; CHECK-NEXT: fcmgt p0.s, p0/z, z1.s, z4.s
6262; CHECK-NEXT: mov z2.s, p1/m, #-1 // =0xffffffffffffffff
6363; CHECK-NEXT: mov z3.s, p0/m, #-1 // =0xffffffffffffffff
6464; CHECK-NEXT: mov z0.d, z2.d
@@ -95,13 +95,13 @@ define <vscale x 8 x i16> @test_signed_v8f32_v8i16(<vscale x 8 x float> %f) {
9595; CHECK-NEXT: movk w8, #18303, lsl #16
9696; CHECK-NEXT: movi v3.2d, #0000000000000000
9797; CHECK-NEXT: fcmge p1.s, p0/z, z1.s, #0.0
98- ; CHECK-NEXT: fcmge p2.s, p0/z, z0.s, #0.0
9998; CHECK-NEXT: mov z4.s, w8
99+ ; CHECK-NEXT: fcmge p2.s, p0/z, z0.s, #0.0
100100; CHECK-NEXT: fcvtzu z2.s, p1/m, z1.s
101101; CHECK-NEXT: fcmgt p1.s, p0/z, z1.s, z4.s
102102; CHECK-NEXT: mov z1.s, #65535 // =0xffff
103- ; CHECK-NEXT: fcmgt p0.s, p0/z, z0.s, z4.s
104103; CHECK-NEXT: fcvtzu z3.s, p2/m, z0.s
104+ ; CHECK-NEXT: fcmgt p0.s, p0/z, z0.s, z4.s
105105; CHECK-NEXT: sel z0.s, p1, z1.s, z2.s
106106; CHECK-NEXT: sel z1.s, p0, z1.s, z3.s
107107; CHECK-NEXT: uzp1 z0.h, z1.h, z0.h
@@ -141,8 +141,8 @@ define <vscale x 4 x i64> @test_signed_v4f32_v4i64(<vscale x 4 x float> %f) {
141141; CHECK-NEXT: fcmge p2.s, p0/z, z3.s, #0.0
142142; CHECK-NEXT: fcvtzu z0.d, p1/m, z2.s
143143; CHECK-NEXT: fcmgt p1.s, p0/z, z2.s, z4.s
144- ; CHECK-NEXT: fcmgt p0.s, p0/z, z3.s, z4.s
145144; CHECK-NEXT: fcvtzu z1.d, p2/m, z3.s
145+ ; CHECK-NEXT: fcmgt p0.s, p0/z, z3.s, z4.s
146146; CHECK-NEXT: mov z0.d, p1/m, #-1 // =0xffffffffffffffff
147147; CHECK-NEXT: mov z1.d, p0/m, #-1 // =0xffffffffffffffff
148148; CHECK-NEXT: ret
@@ -187,13 +187,13 @@ define <vscale x 4 x i32> @test_signed_v4f64_v4i32(<vscale x 4 x double> %f) {
187187; CHECK-NEXT: movk x8, #16879, lsl #48
188188; CHECK-NEXT: movi v3.2d, #0000000000000000
189189; CHECK-NEXT: fcmge p1.d, p0/z, z1.d, #0.0
190- ; CHECK-NEXT: fcmge p2.d, p0/z, z0.d, #0.0
191190; CHECK-NEXT: mov z4.d, x8
191+ ; CHECK-NEXT: fcmge p2.d, p0/z, z0.d, #0.0
192192; CHECK-NEXT: fcvtzu z2.d, p1/m, z1.d
193193; CHECK-NEXT: fcmgt p1.d, p0/z, z1.d, z4.d
194194; CHECK-NEXT: mov z1.d, #0xffffffff
195- ; CHECK-NEXT: fcmgt p0.d, p0/z, z0.d, z4.d
196195; CHECK-NEXT: fcvtzu z3.d, p2/m, z0.d
196+ ; CHECK-NEXT: fcmgt p0.d, p0/z, z0.d, z4.d
197197; CHECK-NEXT: sel z0.d, p1, z1.d, z2.d
198198; CHECK-NEXT: sel z1.d, p0, z1.d, z3.d
199199; CHECK-NEXT: uzp1 z0.s, z1.s, z0.s
@@ -213,29 +213,29 @@ define <vscale x 8 x i32> @test_signed_v8f64_v8i32(<vscale x 8 x double> %f) {
213213; CHECK-NEXT: ptrue p0.d
214214; CHECK-NEXT: mov x8, #281474974613504 // =0xffffffe00000
215215; CHECK-NEXT: movi v4.2d, #0000000000000000
216+ ; CHECK-NEXT: movk x8, #16879, lsl #48
216217; CHECK-NEXT: movi v5.2d, #0000000000000000
217218; CHECK-NEXT: movi v6.2d, #0000000000000000
218- ; CHECK-NEXT: movk x8, #16879, lsl #48
219219; CHECK-NEXT: fcmge p1.d, p0/z, z1.d, #0.0
220+ ; CHECK-NEXT: movi v24.2d, #0000000000000000
221+ ; CHECK-NEXT: mov z7.d, x8
220222; CHECK-NEXT: fcmge p2.d, p0/z, z0.d, #0.0
221223; CHECK-NEXT: fcmge p3.d, p0/z, z3.d, #0.0
222- ; CHECK-NEXT: movi v7.2d, #0000000000000000
223224; CHECK-NEXT: fcmge p4.d, p0/z, z2.d, #0.0
224- ; CHECK-NEXT: mov z24.d, x8
225225; CHECK-NEXT: fcvtzu z4.d, p1/m, z1.d
226226; CHECK-NEXT: fcvtzu z5.d, p2/m, z0.d
227227; CHECK-NEXT: fcvtzu z6.d, p3/m, z3.d
228- ; CHECK-NEXT: fcmgt p1.d, p0/z, z1.d, z24.d
229- ; CHECK-NEXT: fcmgt p2.d, p0/z, z0.d, z24.d
230- ; CHECK-NEXT: mov z0.d, #0xffffffff
231- ; CHECK-NEXT: fcvtzu z7.d, p4/m, z2.d
232- ; CHECK-NEXT: fcmgt p3.d, p0/z, z3.d, z24.d
228+ ; CHECK-NEXT: fcmgt p1.d, p0/z, z1.d, z7.d
229+ ; CHECK-NEXT: fcvtzu z24.d, p4/m, z2.d
233230; CHECK-NEXT: ldr p4, [sp, #7, mul vl] // 2-byte Folded Reload
234- ; CHECK-NEXT: fcmgt p0.d, p0/z, z2.d, z24.d
231+ ; CHECK-NEXT: fcmgt p2.d, p0/z, z0.d, z7.d
232+ ; CHECK-NEXT: mov z0.d, #0xffffffff
233+ ; CHECK-NEXT: fcmgt p3.d, p0/z, z3.d, z7.d
234+ ; CHECK-NEXT: fcmgt p0.d, p0/z, z2.d, z7.d
235235; CHECK-NEXT: sel z1.d, p1, z0.d, z4.d
236236; CHECK-NEXT: sel z2.d, p2, z0.d, z5.d
237237; CHECK-NEXT: sel z3.d, p3, z0.d, z6.d
238- ; CHECK-NEXT: sel z4.d, p0, z0.d, z7 .d
238+ ; CHECK-NEXT: sel z4.d, p0, z0.d, z24 .d
239239; CHECK-NEXT: uzp1 z0.s, z2.s, z1.s
240240; CHECK-NEXT: uzp1 z1.s, z4.s, z3.s
241241; CHECK-NEXT: addvl sp, sp, #1
@@ -254,13 +254,13 @@ define <vscale x 4 x i16> @test_signed_v4f64_v4i16(<vscale x 4 x double> %f) {
254254; CHECK-NEXT: movk x8, #16623, lsl #48
255255; CHECK-NEXT: movi v3.2d, #0000000000000000
256256; CHECK-NEXT: fcmge p1.d, p0/z, z1.d, #0.0
257- ; CHECK-NEXT: fcmge p2.d, p0/z, z0.d, #0.0
258257; CHECK-NEXT: mov z4.d, x8
258+ ; CHECK-NEXT: fcmge p2.d, p0/z, z0.d, #0.0
259259; CHECK-NEXT: fcvtzu z2.d, p1/m, z1.d
260260; CHECK-NEXT: fcmgt p1.d, p0/z, z1.d, z4.d
261261; CHECK-NEXT: mov z1.d, #65535 // =0xffff
262- ; CHECK-NEXT: fcmgt p0.d, p0/z, z0.d, z4.d
263262; CHECK-NEXT: fcvtzu z3.d, p2/m, z0.d
263+ ; CHECK-NEXT: fcmgt p0.d, p0/z, z0.d, z4.d
264264; CHECK-NEXT: sel z0.d, p1, z1.d, z2.d
265265; CHECK-NEXT: sel z1.d, p0, z1.d, z3.d
266266; CHECK-NEXT: uzp1 z0.s, z1.s, z0.s
@@ -280,29 +280,29 @@ define <vscale x 8 x i16> @test_signed_v8f64_v8i16(<vscale x 8 x double> %f) {
280280; CHECK-NEXT: ptrue p0.d
281281; CHECK-NEXT: mov x8, #281337537757184 // =0xffe000000000
282282; CHECK-NEXT: movi v4.2d, #0000000000000000
283+ ; CHECK-NEXT: movk x8, #16623, lsl #48
283284; CHECK-NEXT: movi v5.2d, #0000000000000000
284285; CHECK-NEXT: movi v6.2d, #0000000000000000
285- ; CHECK-NEXT: movk x8, #16623, lsl #48
286286; CHECK-NEXT: fcmge p1.d, p0/z, z3.d, #0.0
287+ ; CHECK-NEXT: movi v24.2d, #0000000000000000
288+ ; CHECK-NEXT: mov z7.d, x8
287289; CHECK-NEXT: fcmge p2.d, p0/z, z2.d, #0.0
288290; CHECK-NEXT: fcmge p3.d, p0/z, z1.d, #0.0
289- ; CHECK-NEXT: movi v7.2d, #0000000000000000
290291; CHECK-NEXT: fcmge p4.d, p0/z, z0.d, #0.0
291- ; CHECK-NEXT: mov z24.d, x8
292292; CHECK-NEXT: fcvtzu z4.d, p1/m, z3.d
293293; CHECK-NEXT: fcvtzu z5.d, p2/m, z2.d
294294; CHECK-NEXT: fcvtzu z6.d, p3/m, z1.d
295- ; CHECK-NEXT: fcmgt p1.d, p0/z, z3.d, z24.d
296- ; CHECK-NEXT: fcmgt p2.d, p0/z, z2.d, z24.d
297- ; CHECK-NEXT: mov z2.d, #65535 // =0xffff
298- ; CHECK-NEXT: fcvtzu z7.d, p4/m, z0.d
299- ; CHECK-NEXT: fcmgt p3.d, p0/z, z1.d, z24.d
295+ ; CHECK-NEXT: fcmgt p1.d, p0/z, z3.d, z7.d
296+ ; CHECK-NEXT: fcvtzu z24.d, p4/m, z0.d
300297; CHECK-NEXT: ldr p4, [sp, #7, mul vl] // 2-byte Folded Reload
301- ; CHECK-NEXT: fcmgt p0.d, p0/z, z0.d, z24.d
298+ ; CHECK-NEXT: fcmgt p2.d, p0/z, z2.d, z7.d
299+ ; CHECK-NEXT: mov z2.d, #65535 // =0xffff
300+ ; CHECK-NEXT: fcmgt p3.d, p0/z, z1.d, z7.d
301+ ; CHECK-NEXT: fcmgt p0.d, p0/z, z0.d, z7.d
302302; CHECK-NEXT: sel z0.d, p1, z2.d, z4.d
303303; CHECK-NEXT: sel z1.d, p2, z2.d, z5.d
304304; CHECK-NEXT: sel z3.d, p3, z2.d, z6.d
305- ; CHECK-NEXT: sel z2.d, p0, z2.d, z7 .d
305+ ; CHECK-NEXT: sel z2.d, p0, z2.d, z24 .d
306306; CHECK-NEXT: uzp1 z0.s, z1.s, z0.s
307307; CHECK-NEXT: uzp1 z1.s, z2.s, z3.s
308308; CHECK-NEXT: uzp1 z0.h, z1.h, z0.h
@@ -334,16 +334,16 @@ define <vscale x 4 x i64> @test_signed_v4f64_v4i64(<vscale x 4 x double> %f) {
334334; CHECK-LABEL: test_signed_v4f64_v4i64:
335335; CHECK: // %bb.0:
336336; CHECK-NEXT: ptrue p0.d
337- ; CHECK-NEXT: movi v2.2d, #0000000000000000
338337; CHECK-NEXT: mov x8, #4895412794951729151 // =0x43efffffffffffff
338+ ; CHECK-NEXT: movi v2.2d, #0000000000000000
339339; CHECK-NEXT: movi v3.2d, #0000000000000000
340340; CHECK-NEXT: mov z4.d, x8
341341; CHECK-NEXT: fcmge p1.d, p0/z, z0.d, #0.0
342342; CHECK-NEXT: fcmge p2.d, p0/z, z1.d, #0.0
343343; CHECK-NEXT: fcvtzu z2.d, p1/m, z0.d
344344; CHECK-NEXT: fcmgt p1.d, p0/z, z0.d, z4.d
345- ; CHECK-NEXT: fcmgt p0.d, p0/z, z1.d, z4.d
346345; CHECK-NEXT: fcvtzu z3.d, p2/m, z1.d
346+ ; CHECK-NEXT: fcmgt p0.d, p0/z, z1.d, z4.d
347347; CHECK-NEXT: mov z2.d, p1/m, #-1 // =0xffffffffffffffff
348348; CHECK-NEXT: mov z3.d, p0/m, #-1 // =0xffffffffffffffff
349349; CHECK-NEXT: mov z0.d, z2.d
@@ -412,8 +412,8 @@ define <vscale x 8 x i32> @test_signed_v8f16_v8i32(<vscale x 8 x half> %f) {
412412; CHECK-NEXT: fcmge p2.h, p0/z, z3.h, #0.0
413413; CHECK-NEXT: fcvtzu z0.s, p1/m, z2.h
414414; CHECK-NEXT: fcmgt p1.h, p0/z, z2.h, z4.h
415- ; CHECK-NEXT: fcmgt p0.h, p0/z, z3.h, z4.h
416415; CHECK-NEXT: fcvtzu z1.s, p2/m, z3.h
416+ ; CHECK-NEXT: fcmgt p0.h, p0/z, z3.h, z4.h
417417; CHECK-NEXT: mov z0.s, p1/m, #-1 // =0xffffffffffffffff
418418; CHECK-NEXT: mov z1.s, p0/m, #-1 // =0xffffffffffffffff
419419; CHECK-NEXT: ret
@@ -486,8 +486,8 @@ define <vscale x 4 x i64> @test_signed_v4f16_v4i64(<vscale x 4 x half> %f) {
486486; CHECK-NEXT: fcmge p2.h, p0/z, z3.h, #0.0
487487; CHECK-NEXT: fcvtzu z0.d, p1/m, z2.h
488488; CHECK-NEXT: fcmgt p1.h, p0/z, z2.h, z4.h
489- ; CHECK-NEXT: fcmgt p0.h, p0/z, z3.h, z4.h
490489; CHECK-NEXT: fcvtzu z1.d, p2/m, z3.h
490+ ; CHECK-NEXT: fcmgt p0.h, p0/z, z3.h, z4.h
491491; CHECK-NEXT: mov z0.d, p1/m, #-1 // =0xffffffffffffffff
492492; CHECK-NEXT: mov z1.d, p0/m, #-1 // =0xffffffffffffffff
493493; CHECK-NEXT: ret
0 commit comments