summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/AArch64/fpconv-vector-op-scalarize-strict.ll
diff options
context:
space:
mode:
authorJohn Brawn <john.brawn@arm.com>2020-01-27 15:51:06 +0000
committerHans Wennborg <hans@chromium.org>2020-02-18 16:46:40 +0100
commitfca6c5e5dbf283b9e96b4a6ba8d343ff5dd91328 (patch)
tree7072a8dd213fdff5da91a6eaef4b0ea42bcdedb3 /llvm/test/CodeGen/AArch64/fpconv-vector-op-scalarize-strict.ll
parenta97c77ad17502cc634473dc5ad433905f5d80b2f (diff)
downloadbcm5719-llvm-fca6c5e5dbf283b9e96b4a6ba8d343ff5dd91328.tar.gz
bcm5719-llvm-fca6c5e5dbf283b9e96b4a6ba8d343ff5dd91328.zip
[FPEnv][AArch64] Add lowering and instruction selection for strict conversions
Strict fp-to-int and int-to-fp conversions can be handled in the same way that the non-strict versions are (by using the appropriate instruction or converting to a function call when we have no instruction). Differential Revision: https://reviews.llvm.org/D73625 (cherry picked from commit 0bb9a27c9895c0fbc3f55f56ad7f1e1927398fce)
Diffstat (limited to 'llvm/test/CodeGen/AArch64/fpconv-vector-op-scalarize-strict.ll')
-rw-r--r--llvm/test/CodeGen/AArch64/fpconv-vector-op-scalarize-strict.ll22
1 files changed, 2 insertions, 20 deletions
diff --git a/llvm/test/CodeGen/AArch64/fpconv-vector-op-scalarize-strict.ll b/llvm/test/CodeGen/AArch64/fpconv-vector-op-scalarize-strict.ll
index 30ab3bd1077..eba7fa88dc5 100644
--- a/llvm/test/CodeGen/AArch64/fpconv-vector-op-scalarize-strict.ll
+++ b/llvm/test/CodeGen/AArch64/fpconv-vector-op-scalarize-strict.ll
@@ -8,18 +8,8 @@
define <1 x double> @test_sitofp(<1 x i1> %in) #0 {
; CHECK-LABEL: test_sitofp:
; CHECK: ; %bb.0: ; %entry
-; CHECK-NEXT: sub sp, sp, #16 ; =16
-; CHECK-NEXT: .cfi_def_cfa_offset 16
; CHECK-NEXT: sbfx w8, w0, #0, #1
-; CHECK-NEXT: mov w9, #1127219200
-; CHECK-NEXT: eor w8, w8, #0x80000000
-; CHECK-NEXT: stp w8, w9, [sp, #8]
-; CHECK-NEXT: ldr d0, [sp, #8]
-; CHECK-NEXT: mov x8, #2147483648
-; CHECK-NEXT: movk x8, #17200, lsl #48
-; CHECK-NEXT: fmov d1, x8
-; CHECK-NEXT: fsub d0, d0, d1
-; CHECK-NEXT: add sp, sp, #16 ; =16
+; CHECK-NEXT: scvtf d0, w8
; CHECK-NEXT: ret
entry:
%0 = call <1 x double> @llvm.experimental.constrained.sitofp.v1f64.v1i1(<1 x i1> %in, metadata !"round.dynamic", metadata !"fpexcept.strict") #0
@@ -29,16 +19,8 @@ entry:
define <1 x double> @test_uitofp(<1 x i1> %in) #0 {
; CHECK-LABEL: test_uitofp:
; CHECK: ; %bb.0: ; %entry
-; CHECK-NEXT: sub sp, sp, #16 ; =16
-; CHECK-NEXT: .cfi_def_cfa_offset 16
; CHECK-NEXT: and w8, w0, #0x1
-; CHECK-NEXT: mov w9, #1127219200
-; CHECK-NEXT: stp w8, w9, [sp, #8]
-; CHECK-NEXT: ldr d0, [sp, #8]
-; CHECK-NEXT: mov x8, #4841369599423283200
-; CHECK-NEXT: fmov d1, x8
-; CHECK-NEXT: fsub d0, d0, d1
-; CHECK-NEXT: add sp, sp, #16 ; =16
+; CHECK-NEXT: ucvtf d0, w8
; CHECK-NEXT: ret
entry:
%0 = call <1 x double> @llvm.experimental.constrained.uitofp.v1f64.v1i1(<1 x i1> %in, metadata !"round.dynamic", metadata !"fpexcept.strict") #0
OpenPOWER on IntegriCloud