| ; RUN: llc < %s -mtriple=arm-eabi -float-abi=soft | FileCheck %s --check-prefix=SOFTFP |
| ; RUN: llc < %s -mtriple=arm-eabi -float-abi=hard | FileCheck %s --check-prefix=HARDFP |
| |
| ; FIXME: crash |
| ; define i32 @testmswh_builtin(half %x) { |
| ; entry: |
| ; %0 = tail call i32 @llvm.lrint.i32.f16(half %x) |
| ; ret i32 %0 |
| ; } |
| |
| ; SOFTFP-LABEL: testmsws_builtin: |
| ; SOFTFP: bl lrintf |
| ; HARDFP-LABEL: testmsws_builtin: |
| ; HARDFP: bl lrintf |
| define i32 @testmsws_builtin(float %x) { |
| entry: |
| %0 = tail call i32 @llvm.lrint.i32.f32(float %x) |
| ret i32 %0 |
| } |
| |
| ; SOFTFP-LABEL: testmswd_builtin: |
| ; SOFTFP: bl lrint |
| ; HARDFP-LABEL: testmswd_builtin: |
| ; HARDFP: bl lrint |
| define i32 @testmswd_builtin(double %x) { |
| entry: |
| %0 = tail call i32 @llvm.lrint.i32.f64(double %x) |
| ret i32 %0 |
| } |
| |
| ; FIXME(#44744): incorrect libcall |
| ; SOFTFP-LABEL: testmswq_builtin: |
| ; SOFTFP: bl lrintl |
| ; HARDFP-LABEL: testmswq_builtin: |
| ; HARDFP: bl lrintl |
| define i32 @testmswq_builtin(fp128 %x) { |
| entry: |
| %0 = tail call i32 @llvm.lrint.i32.f128(fp128 %x) |
| ret i32 %0 |
| } |
| |
| declare i32 @llvm.lrint.i32.f32(float) nounwind readnone |
| declare i32 @llvm.lrint.i32.f64(double) nounwind readnone |