|
1 |
| -; RUN: llc < %s -mtriple=arm-eabi -float-abi=soft | FileCheck %s --check-prefix=SOFTFP |
2 |
| -; RUN: llc < %s -mtriple=arm-eabi -float-abi=hard | FileCheck %s --check-prefix=HARDFP |
| 1 | +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 |
| 2 | +; RUN: llc < %s -mtriple=armv7-none-eabi -float-abi=soft | FileCheck %s --check-prefixes=CHECK,CHECK-SOFT |
| 3 | +; RUN: llc < %s -mtriple=armv7-none-eabihf -mattr=+vfp2 -float-abi=hard | FileCheck %s --check-prefixes=CHECK,CHECK-NOFP16 |
| 4 | +; RUN: llc < %s -mtriple=armv8-none-eabihf -mattr=+fp-armv8,+fullfp16 -float-abi=hard | FileCheck %s --check-prefixes=CHECK,CHECK-FP16 |
| 5 | + |
| 6 | +define i64 @testmsxh_builtin(half %x) { |
| 7 | +; CHECK-SOFT-LABEL: testmsxh_builtin: |
| 8 | +; CHECK-SOFT: @ %bb.0: @ %entry |
| 9 | +; CHECK-SOFT-NEXT: .save {r11, lr} |
| 10 | +; CHECK-SOFT-NEXT: push {r11, lr} |
| 11 | +; CHECK-SOFT-NEXT: bl __aeabi_h2f |
| 12 | +; CHECK-SOFT-NEXT: bl llroundf |
| 13 | +; CHECK-SOFT-NEXT: pop {r11, pc} |
| 14 | +; |
| 15 | +; CHECK-NOFP16-LABEL: testmsxh_builtin: |
| 16 | +; CHECK-NOFP16: @ %bb.0: @ %entry |
| 17 | +; CHECK-NOFP16-NEXT: .save {r11, lr} |
| 18 | +; CHECK-NOFP16-NEXT: push {r11, lr} |
| 19 | +; CHECK-NOFP16-NEXT: vmov r0, s0 |
| 20 | +; CHECK-NOFP16-NEXT: bl __aeabi_h2f |
| 21 | +; CHECK-NOFP16-NEXT: vmov s0, r0 |
| 22 | +; CHECK-NOFP16-NEXT: bl llroundf |
| 23 | +; CHECK-NOFP16-NEXT: pop {r11, pc} |
| 24 | +; |
| 25 | +; CHECK-FP16-LABEL: testmsxh_builtin: |
| 26 | +; CHECK-FP16: @ %bb.0: @ %entry |
| 27 | +; CHECK-FP16-NEXT: .save {r11, lr} |
| 28 | +; CHECK-FP16-NEXT: push {r11, lr} |
| 29 | +; CHECK-FP16-NEXT: vcvtb.f32.f16 s0, s0 |
| 30 | +; CHECK-FP16-NEXT: bl llroundf |
| 31 | +; CHECK-FP16-NEXT: pop {r11, pc} |
| 32 | +entry: |
| 33 | + %0 = tail call i64 @llvm.llround.i64.f16(half %x) |
| 34 | + ret i64 %0 |
| 35 | +} |
3 | 36 |
|
4 |
| -; SOFTFP-LABEL: testmsxs_builtin: |
5 |
| -; SOFTFP: bl llroundf |
6 |
| -; HARDFP-LABEL: testmsxs_builtin: |
7 |
| -; HARDFP: bl llroundf |
8 | 37 | define i64 @testmsxs_builtin(float %x) {
|
| 38 | +; CHECK-LABEL: testmsxs_builtin: |
| 39 | +; CHECK: @ %bb.0: @ %entry |
| 40 | +; CHECK-NEXT: .save {r11, lr} |
| 41 | +; CHECK-NEXT: push {r11, lr} |
| 42 | +; CHECK-NEXT: bl llroundf |
| 43 | +; CHECK-NEXT: pop {r11, pc} |
9 | 44 | entry:
|
10 |
| - %0 = tail call i64 @llvm.llround.f32(float %x) |
| 45 | + %0 = tail call i64 @llvm.llround.i64.f32(float %x) |
11 | 46 | ret i64 %0
|
12 | 47 | }
|
13 | 48 |
|
14 |
| -; SOFTFP-LABEL: testmsxd_builtin: |
15 |
| -; SOFTFP: bl llround |
16 |
| -; HARDFP-LABEL: testmsxd_builtin: |
17 |
| -; HARDFP: bl llround |
18 | 49 | define i64 @testmsxd_builtin(double %x) {
|
| 50 | +; CHECK-LABEL: testmsxd_builtin: |
| 51 | +; CHECK: @ %bb.0: @ %entry |
| 52 | +; CHECK-NEXT: .save {r11, lr} |
| 53 | +; CHECK-NEXT: push {r11, lr} |
| 54 | +; CHECK-NEXT: bl llround |
| 55 | +; CHECK-NEXT: pop {r11, pc} |
19 | 56 | entry:
|
20 |
| - %0 = tail call i64 @llvm.llround.f64(double %x) |
| 57 | + %0 = tail call i64 @llvm.llround.i64.f64(double %x) |
21 | 58 | ret i64 %0
|
22 | 59 | }
|
23 | 60 |
|
24 |
| -declare i64 @llvm.llround.f32(float) nounwind readnone |
25 |
| -declare i64 @llvm.llround.f64(double) nounwind readnone |
| 61 | +define i64 @testmsxq_builtin(fp128 %x) { |
| 62 | +; CHECK-LABEL: testmsxq_builtin: |
| 63 | +; CHECK: @ %bb.0: @ %entry |
| 64 | +; CHECK-NEXT: .save {r11, lr} |
| 65 | +; CHECK-NEXT: push {r11, lr} |
| 66 | +; CHECK-NEXT: bl llroundl |
| 67 | +; CHECK-NEXT: pop {r11, pc} |
| 68 | +entry: |
| 69 | + %0 = tail call i64 @llvm.llround.i64.f128(fp128 %x) |
| 70 | + ret i64 %0 |
| 71 | +} |
0 commit comments