Skip to content

Commit 37413f3

Browse files
committed
update testcases
1 parent cccc073 commit 37413f3

File tree

3 files changed

+133
-51
lines changed

3 files changed

+133
-51
lines changed

llvm/test/CodeGen/AArch64/cvt-fp-int-fp.ll

Lines changed: 40 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,13 @@
44
define double @t1(double %x) {
55
; CHECK-LABEL: t1:
66
; CHECK: // %bb.0: // %entry
7-
; CHECK-NEXT: fcvtzs d0, d0
8-
; CHECK-NEXT: scvtf d0, d0
7+
; CHECK-NEXT: mov x8, #-4332462841530417152 // =0xc3e0000000000000
8+
; CHECK-NEXT: fmov d1, x8
9+
; CHECK-NEXT: mov x8, #4890909195324358655 // =0x43dfffffffffffff
10+
; CHECK-NEXT: fmaxnm d0, d0, d1
11+
; CHECK-NEXT: fmov d1, x8
12+
; CHECK-NEXT: fminnm d0, d0, d1
13+
; CHECK-NEXT: frintz d0, d0
914
; CHECK-NEXT: ret
1015
entry:
1116
%conv = fptosi double %x to i64
@@ -16,8 +21,12 @@ entry:
1621
define float @t2(float %x) {
1722
; CHECK-LABEL: t2:
1823
; CHECK: // %bb.0: // %entry
19-
; CHECK-NEXT: fcvtzs s0, s0
20-
; CHECK-NEXT: scvtf s0, s0
24+
; CHECK-NEXT: movi v1.2s, #207, lsl #24
25+
; CHECK-NEXT: mov w8, #1325400063 // =0x4effffff
26+
; CHECK-NEXT: fmaxnm s0, s0, s1
27+
; CHECK-NEXT: fmov s1, w8
28+
; CHECK-NEXT: fminnm s0, s0, s1
29+
; CHECK-NEXT: frintz s0, s0
2130
; CHECK-NEXT: ret
2231
entry:
2332
%conv = fptosi float %x to i32
@@ -28,8 +37,13 @@ entry:
2837
define half @t3(half %x) {
2938
; CHECK-LABEL: t3:
3039
; CHECK: // %bb.0: // %entry
31-
; CHECK-NEXT: fcvtzs h0, h0
32-
; CHECK-NEXT: scvtf h0, h0
40+
; CHECK-NEXT: mov w8, #64511 // =0xfbff
41+
; CHECK-NEXT: fmov h1, w8
42+
; CHECK-NEXT: mov w8, #31743 // =0x7bff
43+
; CHECK-NEXT: fmaxnm h0, h0, h1
44+
; CHECK-NEXT: fmov h1, w8
45+
; CHECK-NEXT: fminnm h0, h0, h1
46+
; CHECK-NEXT: frintz h0, h0
3347
; CHECK-NEXT: ret
3448
entry:
3549
%conv = fptosi half %x to i32
@@ -170,8 +184,14 @@ entry:
170184
define i64 @tests_f64_multiuse(double %x) {
171185
; CHECK-LABEL: tests_f64_multiuse:
172186
; CHECK: // %bb.0: // %entry
187+
; CHECK-NEXT: mov x8, #-4332462841530417152 // =0xc3e0000000000000
188+
; CHECK-NEXT: fmov d1, x8
189+
; CHECK-NEXT: mov x8, #4890909195324358655 // =0x43dfffffffffffff
190+
; CHECK-NEXT: fmov d2, x8
173191
; CHECK-NEXT: fcvtzs x8, d0
174-
; CHECK-NEXT: scvtf d1, x8
192+
; CHECK-NEXT: fmaxnm d1, d0, d1
193+
; CHECK-NEXT: fminnm d1, d1, d2
194+
; CHECK-NEXT: frintz d1, d1
175195
; CHECK-NEXT: fcmp d0, d1
176196
; CHECK-NEXT: csel x0, x8, xzr, eq
177197
; CHECK-NEXT: ret
@@ -186,8 +206,13 @@ entry:
186206
define i32 @tests_f32_multiuse(float %x) {
187207
; CHECK-LABEL: tests_f32_multiuse:
188208
; CHECK: // %bb.0: // %entry
209+
; CHECK-NEXT: movi v1.2s, #207, lsl #24
210+
; CHECK-NEXT: mov w8, #1325400063 // =0x4effffff
211+
; CHECK-NEXT: fmov s2, w8
189212
; CHECK-NEXT: fcvtzs w8, s0
190-
; CHECK-NEXT: scvtf s1, w8
213+
; CHECK-NEXT: fmaxnm s1, s0, s1
214+
; CHECK-NEXT: fminnm s1, s1, s2
215+
; CHECK-NEXT: frintz s1, s1
191216
; CHECK-NEXT: fcmp s0, s1
192217
; CHECK-NEXT: csel w0, w8, wzr, eq
193218
; CHECK-NEXT: ret
@@ -202,8 +227,14 @@ entry:
202227
define i32 @tests_f16_multiuse(half %x) {
203228
; CHECK-LABEL: tests_f16_multiuse:
204229
; CHECK: // %bb.0: // %entry
230+
; CHECK-NEXT: mov w8, #64511 // =0xfbff
231+
; CHECK-NEXT: fmov h1, w8
232+
; CHECK-NEXT: mov w8, #31743 // =0x7bff
233+
; CHECK-NEXT: fmov h2, w8
205234
; CHECK-NEXT: fcvtzs w8, h0
206-
; CHECK-NEXT: scvtf h1, w8
235+
; CHECK-NEXT: fmaxnm h1, h0, h1
236+
; CHECK-NEXT: fminnm h1, h1, h2
237+
; CHECK-NEXT: frintz h1, h1
207238
; CHECK-NEXT: fcmp h0, h1
208239
; CHECK-NEXT: csel w0, w8, wzr, eq
209240
; CHECK-NEXT: ret

llvm/test/CodeGen/AArch64/sve-streaming-mode-cvt-fp-int-fp.ll

Lines changed: 73 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,35 @@ target triple = "aarch64-unknown-linux-gnu"
99
define double @t1(double %x) {
1010
; CHECK-LABEL: t1:
1111
; CHECK: // %bb.0: // %entry
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
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
1719
; CHECK-NEXT: ret
1820
;
1921
; USE-NEON-NO-GPRS-LABEL: t1:
2022
; USE-NEON-NO-GPRS: // %bb.0: // %entry
21-
; USE-NEON-NO-GPRS-NEXT: fcvtzs d0, d0
22-
; USE-NEON-NO-GPRS-NEXT: scvtf d0, d0
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
2330
; USE-NEON-NO-GPRS-NEXT: ret
2431
;
2532
; NONEON-NOSVE-LABEL: t1:
2633
; NONEON-NOSVE: // %bb.0: // %entry
27-
; NONEON-NOSVE-NEXT: fcvtzs x8, d0
28-
; NONEON-NOSVE-NEXT: scvtf d0, x8
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
2941
; NONEON-NOSVE-NEXT: ret
3042
entry:
3143
%conv = fptosi double %x to i64
@@ -36,23 +48,35 @@ entry:
3648
define float @t2(float %x) {
3749
; CHECK-LABEL: t2:
3850
; CHECK: // %bb.0: // %entry
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
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
4458
; CHECK-NEXT: ret
4559
;
4660
; USE-NEON-NO-GPRS-LABEL: t2:
4761
; USE-NEON-NO-GPRS: // %bb.0: // %entry
48-
; USE-NEON-NO-GPRS-NEXT: fcvtzs s0, s0
49-
; USE-NEON-NO-GPRS-NEXT: scvtf s0, s0
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
5069
; USE-NEON-NO-GPRS-NEXT: ret
5170
;
5271
; NONEON-NOSVE-LABEL: t2:
5372
; NONEON-NOSVE: // %bb.0: // %entry
54-
; NONEON-NOSVE-NEXT: fcvtzs w8, s0
55-
; NONEON-NOSVE-NEXT: scvtf s0, w8
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
5680
; NONEON-NOSVE-NEXT: ret
5781
entry:
5882
%conv = fptosi float %x to i32
@@ -63,18 +87,36 @@ entry:
6387
define half @t3(half %x) {
6488
; CHECK-LABEL: t3:
6589
; CHECK: // %bb.0: // %entry
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
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
7197
; CHECK-NEXT: ret
7298
;
99+
; USE-NEON-NO-GPRS-LABEL: t3:
100+
; 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
108+
; USE-NEON-NO-GPRS-NEXT: ret
109+
;
73110
; NONEON-NOSVE-LABEL: t3:
74111
; NONEON-NOSVE: // %bb.0: // %entry
75112
; NONEON-NOSVE-NEXT: fcvt s0, h0
76-
; NONEON-NOSVE-NEXT: fcvtzs w8, s0
77-
; NONEON-NOSVE-NEXT: scvtf s0, w8
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
78120
; NONEON-NOSVE-NEXT: fcvt h0, s0
79121
; NONEON-NOSVE-NEXT: ret
80122
entry:
@@ -147,6 +189,12 @@ define half @t6(half %x) {
147189
; CHECK-NEXT: // kill: def $h0 killed $h0 killed $z0
148190
; CHECK-NEXT: ret
149191
;
192+
; USE-NEON-NO-GPRS-LABEL: t6:
193+
; USE-NEON-NO-GPRS: // %bb.0: // %entry
194+
; USE-NEON-NO-GPRS-NEXT: fcvtzu h0, h0
195+
; USE-NEON-NO-GPRS-NEXT: ucvtf h0, h0
196+
; USE-NEON-NO-GPRS-NEXT: ret
197+
;
150198
; NONEON-NOSVE-LABEL: t6:
151199
; NONEON-NOSVE: // %bb.0: // %entry
152200
; NONEON-NOSVE-NEXT: fcvt s0, h0

llvm/test/CodeGen/AMDGPU/amdgpu-simplify-libcall-pow-codegen.ll

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -60,15 +60,16 @@ define half @test_pow_fast_f16__integral_y(half %x, i32 %y.i) {
6060
; CHECK-NEXT: v_cvt_f32_i32_e32 v1, v1
6161
; CHECK-NEXT: v_log_f16_e64 v3, |v0|
6262
; CHECK-NEXT: v_cvt_f16_f32_e32 v1, v1
63-
; CHECK-NEXT: v_cvt_f32_f16_e32 v1, v1
64-
; CHECK-NEXT: v_cvt_i32_f32_e32 v1, v1
65-
; CHECK-NEXT: v_cvt_f32_i32_e32 v2, v1
66-
; CHECK-NEXT: v_lshlrev_b16_e32 v1, 15, v1
67-
; CHECK-NEXT: v_and_b32_e32 v0, v1, v0
68-
; CHECK-NEXT: v_cvt_f16_f32_e32 v2, v2
69-
; CHECK-NEXT: v_mul_f16_e32 v2, v3, v2
70-
; CHECK-NEXT: v_exp_f16_e32 v2, v2
71-
; CHECK-NEXT: v_or_b32_e32 v0, v0, v2
63+
; CHECK-NEXT: v_cvt_f32_f16_e32 v2, v1
64+
; CHECK-NEXT: v_max_f16_e32 v1, 0xfbff, v1
65+
; CHECK-NEXT: v_min_f16_e32 v1, 0x7bff, v1
66+
; CHECK-NEXT: v_trunc_f16_e32 v1, v1
67+
; CHECK-NEXT: v_cvt_i32_f32_e32 v2, v2
68+
; CHECK-NEXT: v_mul_f16_e32 v1, v3, v1
69+
; CHECK-NEXT: v_exp_f16_e32 v1, v1
70+
; CHECK-NEXT: v_lshlrev_b16_e32 v2, 15, v2
71+
; CHECK-NEXT: v_and_b32_e32 v0, v2, v0
72+
; CHECK-NEXT: v_or_b32_e32 v0, v0, v1
7273
; CHECK-NEXT: s_setpc_b64 s[30:31]
7374
%y = sitofp i32 %y.i to half
7475
%pow = tail call fast half @_Z3powDhDh(half %x, half %y)
@@ -79,28 +80,30 @@ define float @test_pow_fast_f32__integral_y(float %x, i32 %y.i) {
7980
; CHECK-LABEL: test_pow_fast_f32__integral_y:
8081
; CHECK: ; %bb.0:
8182
; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
82-
; CHECK-NEXT: v_cvt_f32_i32_e32 v1, v1
8383
; CHECK-NEXT: s_mov_b32 s4, 0x800000
8484
; CHECK-NEXT: v_cmp_lt_f32_e64 vcc, |v0|, s4
8585
; CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 32, vcc
86-
; CHECK-NEXT: v_cvt_i32_f32_e32 v1, v1
8786
; CHECK-NEXT: v_ldexp_f32 v3, |v0|, v3
8887
; CHECK-NEXT: v_log_f32_e32 v3, v3
88+
; CHECK-NEXT: v_cvt_f32_i32_e32 v1, v1
8989
; CHECK-NEXT: v_mov_b32_e32 v2, 0x42000000
90-
; CHECK-NEXT: v_cvt_f32_i32_e32 v4, v1
9190
; CHECK-NEXT: v_cndmask_b32_e32 v2, 0, v2, vcc
9291
; CHECK-NEXT: v_sub_f32_e32 v2, v3, v2
92+
; CHECK-NEXT: v_max_f32_e32 v3, 0xcf000000, v1
93+
; CHECK-NEXT: v_min_f32_e32 v3, 0x4effffff, v3
94+
; CHECK-NEXT: v_trunc_f32_e32 v3, v3
95+
; CHECK-NEXT: v_mul_f32_e32 v4, v2, v3
9396
; CHECK-NEXT: s_mov_b32 s4, 0xc2fc0000
94-
; CHECK-NEXT: v_mul_f32_e32 v3, v2, v4
9597
; CHECK-NEXT: v_mov_b32_e32 v5, 0x42800000
96-
; CHECK-NEXT: v_cmp_gt_f32_e32 vcc, s4, v3
97-
; CHECK-NEXT: v_cndmask_b32_e32 v3, 0, v5, vcc
98-
; CHECK-NEXT: v_fma_f32 v2, v2, v4, v3
98+
; CHECK-NEXT: v_cmp_gt_f32_e32 vcc, s4, v4
99+
; CHECK-NEXT: v_cndmask_b32_e32 v4, 0, v5, vcc
100+
; CHECK-NEXT: v_fma_f32 v2, v2, v3, v4
99101
; CHECK-NEXT: v_exp_f32_e32 v2, v2
102+
; CHECK-NEXT: v_cvt_i32_f32_e32 v1, v1
100103
; CHECK-NEXT: v_not_b32_e32 v3, 63
101104
; CHECK-NEXT: v_cndmask_b32_e32 v3, 0, v3, vcc
102-
; CHECK-NEXT: v_lshlrev_b32_e32 v1, 31, v1
103105
; CHECK-NEXT: v_ldexp_f32 v2, v2, v3
106+
; CHECK-NEXT: v_lshlrev_b32_e32 v1, 31, v1
104107
; CHECK-NEXT: v_and_or_b32 v0, v1, v0, v2
105108
; CHECK-NEXT: s_setpc_b64 s[30:31]
106109
%y = sitofp i32 %y.i to float

0 commit comments

Comments
 (0)