Skip to content

Commit 4dcf33b

Browse files
committed
[AArch64] Cleanup and GISel coverage for lrint tests. NFC
1 parent 335d5d5 commit 4dcf33b

File tree

2 files changed

+70
-35
lines changed

2 files changed

+70
-35
lines changed

llvm/test/CodeGen/AArch64/lrint-conv.ll

Lines changed: 40 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,78 @@
1-
; RUN: llc < %s -mtriple=aarch64 -mattr=+neon | FileCheck %s
2-
; RUN: llc < %s -global-isel -global-isel-abort=2 -pass-remarks-missed=gisel* -mtriple=aarch64 | FileCheck %s --check-prefixes=FALLBACK,CHECK
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
2+
; RUN: llc < %s -mtriple=aarch64 | FileCheck %s
3+
; RUN: llc < %s -mtriple=aarch64 -global-isel -global-isel-abort=2 2>&1 | FileCheck %s --check-prefixes=CHECK,CHECK-GI
4+
5+
; CHECK-GI: warning: Instruction selection used fallback path for testmswl
6+
; CHECK-GI-NEXT: warning: Instruction selection used fallback path for testmsll
37

4-
; CHECK-LABEL: testmsws:
5-
; CHECK: frintx [[REG:s[0-9]]], s0
6-
; CHECK-NEXT: fcvtzs x0, [[REG]]
7-
; CHECK: ret
8-
; FALLBACK-NOT: remark{{.*}}testmsws
98
define i32 @testmsws(float %x) {
9+
; CHECK-LABEL: testmsws:
10+
; CHECK: // %bb.0: // %entry
11+
; CHECK-NEXT: frintx s0, s0
12+
; CHECK-NEXT: fcvtzs x0, s0
13+
; CHECK-NEXT: // kill: def $w0 killed $w0 killed $x0
14+
; CHECK-NEXT: ret
1015
entry:
1116
%0 = tail call i64 @llvm.lrint.i64.f32(float %x)
1217
%conv = trunc i64 %0 to i32
1318
ret i32 %conv
1419
}
1520

16-
; CHECK-LABEL: testmsxs:
17-
; CHECK: frintx [[REG:s[0-9]]], s0
18-
; CHECK-NEXT: fcvtzs x0, [[REG]]
19-
; CHECK-NEXT: ret
20-
; FALLBACK-NOT: remark{{.*}}testmsxs
2121
define i64 @testmsxs(float %x) {
22+
; CHECK-LABEL: testmsxs:
23+
; CHECK: // %bb.0: // %entry
24+
; CHECK-NEXT: frintx s0, s0
25+
; CHECK-NEXT: fcvtzs x0, s0
26+
; CHECK-NEXT: ret
2227
entry:
2328
%0 = tail call i64 @llvm.lrint.i64.f32(float %x)
2429
ret i64 %0
2530
}
2631

27-
; CHECK-LABEL: testmswd:
28-
; CHECK: frintx [[REG:d[0-9]]], d0
29-
; CHECK-NEXT: fcvtzs x0, [[REG]]
30-
; CHECK: ret
31-
; FALLBACK-NOT: remark{{.*}}testmswd
3232
define i32 @testmswd(double %x) {
33+
; CHECK-LABEL: testmswd:
34+
; CHECK: // %bb.0: // %entry
35+
; CHECK-NEXT: frintx d0, d0
36+
; CHECK-NEXT: fcvtzs x0, d0
37+
; CHECK-NEXT: // kill: def $w0 killed $w0 killed $x0
38+
; CHECK-NEXT: ret
3339
entry:
3440
%0 = tail call i64 @llvm.lrint.i64.f64(double %x)
3541
%conv = trunc i64 %0 to i32
3642
ret i32 %conv
3743
}
3844

39-
; CHECK-LABEL: testmsxd:
40-
; CHECK: frintx [[REG:d[0-9]]], d0
41-
; CHECK-NEXT: fcvtzs x0, [[REG]]
42-
; CHECK-NEXT: ret
43-
; FALLBACK-NOT: remark{{.*}}testmsxd
4445
define i64 @testmsxd(double %x) {
46+
; CHECK-LABEL: testmsxd:
47+
; CHECK: // %bb.0: // %entry
48+
; CHECK-NEXT: frintx d0, d0
49+
; CHECK-NEXT: fcvtzs x0, d0
50+
; CHECK-NEXT: ret
4551
entry:
4652
%0 = tail call i64 @llvm.lrint.i64.f64(double %x)
4753
ret i64 %0
4854
}
4955

50-
; CHECK-LABEL: testmswl:
51-
; CHECK: bl lrintl
5256
define dso_local i32 @testmswl(fp128 %x) {
57+
; CHECK-LABEL: testmswl:
58+
; CHECK: // %bb.0: // %entry
59+
; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
60+
; CHECK-NEXT: .cfi_def_cfa_offset 16
61+
; CHECK-NEXT: .cfi_offset w30, -16
62+
; CHECK-NEXT: bl lrintl
63+
; CHECK-NEXT: // kill: def $w0 killed $w0 killed $x0
64+
; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
65+
; CHECK-NEXT: ret
5366
entry:
5467
%0 = tail call i64 @llvm.lrint.i64.f128(fp128 %x)
5568
%conv = trunc i64 %0 to i32
5669
ret i32 %conv
5770
}
5871

59-
; CHECK-LABEL: testmsll:
60-
; CHECK: b lrintl
6172
define dso_local i64 @testmsll(fp128 %x) {
73+
; CHECK-LABEL: testmsll:
74+
; CHECK: // %bb.0: // %entry
75+
; CHECK-NEXT: b lrintl
6276
entry:
6377
%0 = tail call i64 @llvm.lrint.i64.f128(fp128 %x)
6478
ret i64 %0

llvm/test/CodeGen/AArch64/vector-lrint.ll

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,20 @@
11
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2-
; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=aarch64 -mattr=+neon | FileCheck %s
3-
; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=aarch64 -mattr=+neon | FileCheck %s
2+
; RUN: llc < %s -mtriple=aarch64 | FileCheck %s --check-prefixes=CHECK,CHECK-SD
3+
; RUN: llc < %s -mtriple=aarch64 -global-isel -global-isel-abort=2 2>&1 | FileCheck %s --check-prefixes=CHECK,CHECK-GI
4+
5+
; CHECK-GI: warning: Instruction selection used fallback path for lrint_v1f16
6+
; CHECK-GI-NEXT: warning: Instruction selection used fallback path for lrint_v2f16
7+
; CHECK-GI-NEXT: warning: Instruction selection used fallback path for lrint_v4f16
8+
; CHECK-GI-NEXT: warning: Instruction selection used fallback path for lrint_v8f16
9+
; CHECK-GI-NEXT: warning: Instruction selection used fallback path for lrint_v16i64_v16f16
10+
; CHECK-GI-NEXT: warning: Instruction selection used fallback path for lrint_v32i64_v32f16
11+
; CHECK-GI-NEXT: warning: Instruction selection used fallback path for lrint_v2f32
12+
; CHECK-GI-NEXT: warning: Instruction selection used fallback path for lrint_v4f32
13+
; CHECK-GI-NEXT: warning: Instruction selection used fallback path for lrint_v8f32
14+
; CHECK-GI-NEXT: warning: Instruction selection used fallback path for lrint_v16i64_v16f32
15+
; CHECK-GI-NEXT: warning: Instruction selection used fallback path for lrint_v2f64
16+
; CHECK-GI-NEXT: warning: Instruction selection used fallback path for lrint_v4f64
17+
; CHECK-GI-NEXT: warning: Instruction selection used fallback path for lrint_v8f64
418

519
define <1 x i64> @lrint_v1f16(<1 x half> %x) {
620
; CHECK-LABEL: lrint_v1f16:
@@ -372,13 +386,20 @@ define <32 x i64> @lrint_v32i64_v32f16(<32 x half> %x) {
372386
declare <32 x i64> @llvm.lrint.v32i64.v32f16(<32 x half>)
373387

374388
define <1 x i64> @lrint_v1f32(<1 x float> %x) {
375-
; CHECK-LABEL: lrint_v1f32:
376-
; CHECK: // %bb.0:
377-
; CHECK-NEXT: // kill: def $d0 killed $d0 def $q0
378-
; CHECK-NEXT: frintx s0, s0
379-
; CHECK-NEXT: fcvtzs x8, s0
380-
; CHECK-NEXT: fmov d0, x8
381-
; CHECK-NEXT: ret
389+
; CHECK-SD-LABEL: lrint_v1f32:
390+
; CHECK-SD: // %bb.0:
391+
; CHECK-SD-NEXT: // kill: def $d0 killed $d0 def $q0
392+
; CHECK-SD-NEXT: frintx s0, s0
393+
; CHECK-SD-NEXT: fcvtzs x8, s0
394+
; CHECK-SD-NEXT: fmov d0, x8
395+
; CHECK-SD-NEXT: ret
396+
;
397+
; CHECK-GI-LABEL: lrint_v1f32:
398+
; CHECK-GI: // %bb.0:
399+
; CHECK-GI-NEXT: frintx s0, s0
400+
; CHECK-GI-NEXT: fcvtzs x8, s0
401+
; CHECK-GI-NEXT: fmov d0, x8
402+
; CHECK-GI-NEXT: ret
382403
%a = call <1 x i64> @llvm.lrint.v1i64.v1f32(<1 x float> %x)
383404
ret <1 x i64> %a
384405
}

0 commit comments

Comments
 (0)