|
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 |
3 | 7 |
|
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 |
9 | 8 | 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 |
10 | 15 | entry:
|
11 | 16 | %0 = tail call i64 @llvm.lrint.i64.f32(float %x)
|
12 | 17 | %conv = trunc i64 %0 to i32
|
13 | 18 | ret i32 %conv
|
14 | 19 | }
|
15 | 20 |
|
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 |
21 | 21 | 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 |
22 | 27 | entry:
|
23 | 28 | %0 = tail call i64 @llvm.lrint.i64.f32(float %x)
|
24 | 29 | ret i64 %0
|
25 | 30 | }
|
26 | 31 |
|
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 |
32 | 32 | 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 |
33 | 39 | entry:
|
34 | 40 | %0 = tail call i64 @llvm.lrint.i64.f64(double %x)
|
35 | 41 | %conv = trunc i64 %0 to i32
|
36 | 42 | ret i32 %conv
|
37 | 43 | }
|
38 | 44 |
|
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 |
44 | 45 | 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 |
45 | 51 | entry:
|
46 | 52 | %0 = tail call i64 @llvm.lrint.i64.f64(double %x)
|
47 | 53 | ret i64 %0
|
48 | 54 | }
|
49 | 55 |
|
50 |
| -; CHECK-LABEL: testmswl: |
51 |
| -; CHECK: bl lrintl |
52 | 56 | 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 |
53 | 66 | entry:
|
54 | 67 | %0 = tail call i64 @llvm.lrint.i64.f128(fp128 %x)
|
55 | 68 | %conv = trunc i64 %0 to i32
|
56 | 69 | ret i32 %conv
|
57 | 70 | }
|
58 | 71 |
|
59 |
| -; CHECK-LABEL: testmsll: |
60 |
| -; CHECK: b lrintl |
61 | 72 | define dso_local i64 @testmsll(fp128 %x) {
|
| 73 | +; CHECK-LABEL: testmsll: |
| 74 | +; CHECK: // %bb.0: // %entry |
| 75 | +; CHECK-NEXT: b lrintl |
62 | 76 | entry:
|
63 | 77 | %0 = tail call i64 @llvm.lrint.i64.f128(fp128 %x)
|
64 | 78 | ret i64 %0
|
|
0 commit comments