|
1 |
| -; RUN: llc < %s -mtriple=aarch64 -mattr=+fullfp16 | FileCheck %s |
| 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 --check-prefixes=CHECK-NOFP16 |
| 3 | +; RUN: llc < %s -mtriple=aarch64 -mattr=+fullfp16 | FileCheck %s --check-prefixes=CHECK-FP16 |
2 | 4 |
|
3 |
| -; CHECK-LABEL: testmhhs: |
4 |
| -; CHECK: frintx h0, h0 |
5 |
| -; CHECK-NEXT: fcvtzs x0, h0 |
6 |
| -; CHECK: ret |
7 | 5 | define i16 @testmhhs(half %x) {
|
| 6 | +; CHECK-NOFP16-LABEL: testmhhs: |
| 7 | +; CHECK-NOFP16: // %bb.0: // %entry |
| 8 | +; CHECK-NOFP16-NEXT: fcvt s0, h0 |
| 9 | +; CHECK-NOFP16-NEXT: frintx s0, s0 |
| 10 | +; CHECK-NOFP16-NEXT: fcvtzs x0, s0 |
| 11 | +; CHECK-NOFP16-NEXT: // kill: def $w0 killed $w0 killed $x0 |
| 12 | +; CHECK-NOFP16-NEXT: ret |
| 13 | +; |
| 14 | +; CHECK-FP16-LABEL: testmhhs: |
| 15 | +; CHECK-FP16: // %bb.0: // %entry |
| 16 | +; CHECK-FP16-NEXT: frintx h0, h0 |
| 17 | +; CHECK-FP16-NEXT: fcvtzs x0, h0 |
| 18 | +; CHECK-FP16-NEXT: // kill: def $w0 killed $w0 killed $x0 |
| 19 | +; CHECK-FP16-NEXT: ret |
8 | 20 | entry:
|
9 | 21 | %0 = tail call i64 @llvm.llrint.i64.f16(half %x)
|
10 | 22 | %conv = trunc i64 %0 to i16
|
11 | 23 | ret i16 %conv
|
12 | 24 | }
|
13 | 25 |
|
14 |
| -; CHECK-LABEL: testmhws: |
15 |
| -; CHECK: frintx h0, h0 |
16 |
| -; CHECK-NEXT: fcvtzs x0, h0 |
17 |
| -; CHECK: ret |
18 | 26 | define i32 @testmhws(half %x) {
|
| 27 | +; CHECK-NOFP16-LABEL: testmhws: |
| 28 | +; CHECK-NOFP16: // %bb.0: // %entry |
| 29 | +; CHECK-NOFP16-NEXT: fcvt s0, h0 |
| 30 | +; CHECK-NOFP16-NEXT: frintx s0, s0 |
| 31 | +; CHECK-NOFP16-NEXT: fcvtzs x0, s0 |
| 32 | +; CHECK-NOFP16-NEXT: // kill: def $w0 killed $w0 killed $x0 |
| 33 | +; CHECK-NOFP16-NEXT: ret |
| 34 | +; |
| 35 | +; CHECK-FP16-LABEL: testmhws: |
| 36 | +; CHECK-FP16: // %bb.0: // %entry |
| 37 | +; CHECK-FP16-NEXT: frintx h0, h0 |
| 38 | +; CHECK-FP16-NEXT: fcvtzs x0, h0 |
| 39 | +; CHECK-FP16-NEXT: // kill: def $w0 killed $w0 killed $x0 |
| 40 | +; CHECK-FP16-NEXT: ret |
19 | 41 | entry:
|
20 | 42 | %0 = tail call i64 @llvm.llrint.i64.f16(half %x)
|
21 | 43 | %conv = trunc i64 %0 to i32
|
22 | 44 | ret i32 %conv
|
23 | 45 | }
|
24 | 46 |
|
25 |
| -; CHECK-LABEL: testmhxs: |
26 |
| -; CHECK: frintx h0, h0 |
27 |
| -; CHECK-NEXT: fcvtzs x0, h0 |
28 |
| -; CHECK: ret |
29 | 47 | define i64 @testmhxs(half %x) {
|
| 48 | +; CHECK-NOFP16-LABEL: testmhxs: |
| 49 | +; CHECK-NOFP16: // %bb.0: // %entry |
| 50 | +; CHECK-NOFP16-NEXT: fcvt s0, h0 |
| 51 | +; CHECK-NOFP16-NEXT: frintx s0, s0 |
| 52 | +; CHECK-NOFP16-NEXT: fcvtzs x0, s0 |
| 53 | +; CHECK-NOFP16-NEXT: ret |
| 54 | +; |
| 55 | +; CHECK-FP16-LABEL: testmhxs: |
| 56 | +; CHECK-FP16: // %bb.0: // %entry |
| 57 | +; CHECK-FP16-NEXT: frintx h0, h0 |
| 58 | +; CHECK-FP16-NEXT: fcvtzs x0, h0 |
| 59 | +; CHECK-FP16-NEXT: ret |
30 | 60 | entry:
|
31 | 61 | %0 = tail call i64 @llvm.llrint.i64.f16(half %x)
|
32 | 62 | ret i64 %0
|
|
0 commit comments