@@ -9,35 +9,23 @@ target triple = "aarch64-unknown-linux-gnu"
99define double @t1 (double %x ) {
1010; CHECK-LABEL: t1:
1111; CHECK: // %bb.0: // %entry
12- ; CHECK-NEXT: mov x8, #-4332462841530417152 // =0xc3e0000000000000
13- ; CHECK-NEXT: fmov d1, x8
14- ; CHECK-NEXT: mov x8, #4890909195324358655 // =0x43dfffffffffffff
15- ; CHECK-NEXT: fmaxnm d0, d0, d1
16- ; CHECK-NEXT: fmov d1, x8
17- ; CHECK-NEXT: fminnm d0, d0, d1
18- ; CHECK-NEXT: frintz d0, d0
12+ ; CHECK-NEXT: ptrue p0.d
13+ ; CHECK-NEXT: // kill: def $d0 killed $d0 def $z0
14+ ; CHECK-NEXT: fcvtzs z0.d, p0/m, z0.d
15+ ; CHECK-NEXT: scvtf z0.d, p0/m, z0.d
16+ ; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z0
1917; CHECK-NEXT: ret
2018;
2119; USE-NEON-NO-GPRS-LABEL: t1:
2220; USE-NEON-NO-GPRS: // %bb.0: // %entry
23- ; USE-NEON-NO-GPRS-NEXT: mov x8, #-4332462841530417152 // =0xc3e0000000000000
24- ; USE-NEON-NO-GPRS-NEXT: fmov d1, x8
25- ; USE-NEON-NO-GPRS-NEXT: mov x8, #4890909195324358655 // =0x43dfffffffffffff
26- ; USE-NEON-NO-GPRS-NEXT: fmaxnm d0, d0, d1
27- ; USE-NEON-NO-GPRS-NEXT: fmov d1, x8
28- ; USE-NEON-NO-GPRS-NEXT: fminnm d0, d0, d1
29- ; USE-NEON-NO-GPRS-NEXT: frintz d0, d0
21+ ; USE-NEON-NO-GPRS-NEXT: fcvtzs d0, d0
22+ ; USE-NEON-NO-GPRS-NEXT: scvtf d0, d0
3023; USE-NEON-NO-GPRS-NEXT: ret
3124;
3225; NONEON-NOSVE-LABEL: t1:
3326; NONEON-NOSVE: // %bb.0: // %entry
34- ; NONEON-NOSVE-NEXT: mov x8, #-4332462841530417152 // =0xc3e0000000000000
35- ; NONEON-NOSVE-NEXT: fmov d1, x8
36- ; NONEON-NOSVE-NEXT: mov x8, #4890909195324358655 // =0x43dfffffffffffff
37- ; NONEON-NOSVE-NEXT: fmaxnm d0, d0, d1
38- ; NONEON-NOSVE-NEXT: fmov d1, x8
39- ; NONEON-NOSVE-NEXT: fminnm d0, d0, d1
40- ; NONEON-NOSVE-NEXT: frintz d0, d0
27+ ; NONEON-NOSVE-NEXT: fcvtzs x8, d0
28+ ; NONEON-NOSVE-NEXT: scvtf d0, x8
4129; NONEON-NOSVE-NEXT: ret
4230entry:
4331 %conv = fptosi double %x to i64
@@ -48,35 +36,23 @@ entry:
4836define float @t2 (float %x ) {
4937; CHECK-LABEL: t2:
5038; CHECK: // %bb.0: // %entry
51- ; CHECK-NEXT: mov w8, #-822083584 // =0xcf000000
52- ; CHECK-NEXT: fmov s1, w8
53- ; CHECK-NEXT: mov w8, #1325400063 // =0x4effffff
54- ; CHECK-NEXT: fmaxnm s0, s0, s1
55- ; CHECK-NEXT: fmov s1, w8
56- ; CHECK-NEXT: fminnm s0, s0, s1
57- ; CHECK-NEXT: frintz s0, s0
39+ ; CHECK-NEXT: ptrue p0.s
40+ ; CHECK-NEXT: // kill: def $s0 killed $s0 def $z0
41+ ; CHECK-NEXT: fcvtzs z0.s, p0/m, z0.s
42+ ; CHECK-NEXT: scvtf z0.s, p0/m, z0.s
43+ ; CHECK-NEXT: // kill: def $s0 killed $s0 killed $z0
5844; CHECK-NEXT: ret
5945;
6046; USE-NEON-NO-GPRS-LABEL: t2:
6147; USE-NEON-NO-GPRS: // %bb.0: // %entry
62- ; USE-NEON-NO-GPRS-NEXT: mov w8, #-822083584 // =0xcf000000
63- ; USE-NEON-NO-GPRS-NEXT: fmov s1, w8
64- ; USE-NEON-NO-GPRS-NEXT: mov w8, #1325400063 // =0x4effffff
65- ; USE-NEON-NO-GPRS-NEXT: fmaxnm s0, s0, s1
66- ; USE-NEON-NO-GPRS-NEXT: fmov s1, w8
67- ; USE-NEON-NO-GPRS-NEXT: fminnm s0, s0, s1
68- ; USE-NEON-NO-GPRS-NEXT: frintz s0, s0
48+ ; USE-NEON-NO-GPRS-NEXT: fcvtzs s0, s0
49+ ; USE-NEON-NO-GPRS-NEXT: scvtf s0, s0
6950; USE-NEON-NO-GPRS-NEXT: ret
7051;
7152; NONEON-NOSVE-LABEL: t2:
7253; NONEON-NOSVE: // %bb.0: // %entry
73- ; NONEON-NOSVE-NEXT: mov w8, #-822083584 // =0xcf000000
74- ; NONEON-NOSVE-NEXT: fmov s1, w8
75- ; NONEON-NOSVE-NEXT: mov w8, #1325400063 // =0x4effffff
76- ; NONEON-NOSVE-NEXT: fmaxnm s0, s0, s1
77- ; NONEON-NOSVE-NEXT: fmov s1, w8
78- ; NONEON-NOSVE-NEXT: fminnm s0, s0, s1
79- ; NONEON-NOSVE-NEXT: frintz s0, s0
54+ ; NONEON-NOSVE-NEXT: fcvtzs w8, s0
55+ ; NONEON-NOSVE-NEXT: scvtf s0, w8
8056; NONEON-NOSVE-NEXT: ret
8157entry:
8258 %conv = fptosi float %x to i32
@@ -87,36 +63,24 @@ entry:
8763define half @t3 (half %x ) {
8864; CHECK-LABEL: t3:
8965; CHECK: // %bb.0: // %entry
90- ; CHECK-NEXT: adrp x8, .LCPI2_0
91- ; CHECK-NEXT: ldr h1, [x8, :lo12:.LCPI2_0]
92- ; CHECK-NEXT: adrp x8, .LCPI2_1
93- ; CHECK-NEXT: fmaxnm h0, h0, h1
94- ; CHECK-NEXT: ldr h1, [x8, :lo12:.LCPI2_1]
95- ; CHECK-NEXT: fminnm h0, h0, h1
96- ; CHECK-NEXT: frintz h0, h0
66+ ; CHECK-NEXT: ptrue p0.s
67+ ; CHECK-NEXT: // kill: def $h0 killed $h0 def $z0
68+ ; CHECK-NEXT: fcvtzs z0.s, p0/m, z0.h
69+ ; CHECK-NEXT: scvtf z0.h, p0/m, z0.s
70+ ; CHECK-NEXT: // kill: def $h0 killed $h0 killed $z0
9771; CHECK-NEXT: ret
9872;
9973; USE-NEON-NO-GPRS-LABEL: t3:
10074; USE-NEON-NO-GPRS: // %bb.0: // %entry
101- ; USE-NEON-NO-GPRS-NEXT: adrp x8, .LCPI2_0
102- ; USE-NEON-NO-GPRS-NEXT: ldr h1, [x8, :lo12:.LCPI2_0]
103- ; USE-NEON-NO-GPRS-NEXT: adrp x8, .LCPI2_1
104- ; USE-NEON-NO-GPRS-NEXT: fmaxnm h0, h0, h1
105- ; USE-NEON-NO-GPRS-NEXT: ldr h1, [x8, :lo12:.LCPI2_1]
106- ; USE-NEON-NO-GPRS-NEXT: fminnm h0, h0, h1
107- ; USE-NEON-NO-GPRS-NEXT: frintz h0, h0
75+ ; USE-NEON-NO-GPRS-NEXT: fcvtzs h0, h0
76+ ; USE-NEON-NO-GPRS-NEXT: scvtf h0, h0
10877; USE-NEON-NO-GPRS-NEXT: ret
10978;
11079; NONEON-NOSVE-LABEL: t3:
11180; NONEON-NOSVE: // %bb.0: // %entry
11281; NONEON-NOSVE-NEXT: fcvt s0, h0
113- ; NONEON-NOSVE-NEXT: mov w8, #-822083584 // =0xcf000000
114- ; NONEON-NOSVE-NEXT: fmov s1, w8
115- ; NONEON-NOSVE-NEXT: mov w8, #1325400063 // =0x4effffff
116- ; NONEON-NOSVE-NEXT: fmaxnm s0, s0, s1
117- ; NONEON-NOSVE-NEXT: fmov s1, w8
118- ; NONEON-NOSVE-NEXT: fminnm s0, s0, s1
119- ; NONEON-NOSVE-NEXT: frintz s0, s0
82+ ; NONEON-NOSVE-NEXT: fcvtzs w8, s0
83+ ; NONEON-NOSVE-NEXT: scvtf s0, w8
12084; NONEON-NOSVE-NEXT: fcvt h0, s0
12185; NONEON-NOSVE-NEXT: ret
12286entry:
0 commit comments