summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/ARM
diff options
context:
space:
mode:
authorDiana Picus <diana.picus@linaro.org>2018-01-10 10:01:49 +0000
committerDiana Picus <diana.picus@linaro.org>2018-01-10 10:01:49 +0000
commit8f14886630c530c61510fb8497c6a59e4adbe181 (patch)
treea06cee718d6058843650721b0e72c31150a4382b /llvm/test/CodeGen/ARM
parent9222b91e24dfefd596b01f51c3e46c247e0115b3 (diff)
downloadbcm5719-llvm-8f14886630c530c61510fb8497c6a59e4adbe181.tar.gz
bcm5719-llvm-8f14886630c530c61510fb8497c6a59e4adbe181.zip
[ARM GlobalISel] Legalize s32/s64 G_FCONSTANT
Legal for hard float. Change to G_CONSTANT for soft float (but preserve the binary representation). llvm-svn: 322164
Diffstat (limited to 'llvm/test/CodeGen/ARM')
-rw-r--r--llvm/test/CodeGen/ARM/GlobalISel/arm-legalize-fp.mir56
1 files changed, 56 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/ARM/GlobalISel/arm-legalize-fp.mir b/llvm/test/CodeGen/ARM/GlobalISel/arm-legalize-fp.mir
index 65e7ccd4ab5..2beb2485997 100644
--- a/llvm/test/CodeGen/ARM/GlobalISel/arm-legalize-fp.mir
+++ b/llvm/test/CodeGen/ARM/GlobalISel/arm-legalize-fp.mir
@@ -20,6 +20,9 @@
define void @test_fdiv_float() { ret void }
define void @test_fdiv_double() { ret void }
+ define void @test_fconstant_float() { ret void }
+ define void @test_fconstant_double() { ret void }
+
define void @test_fcmp_true_s32() { ret void }
define void @test_fcmp_false_s32() { ret void }
@@ -597,6 +600,59 @@ body: |
BX_RET 14, %noreg, implicit %r0, implicit %r1
...
---
+name: test_fconstant_float
+# CHECK-LABEL: name: test_fconstant_float
+legalized: false
+# CHECK: legalized: true
+regBankSelected: false
+selected: false
+tracksRegLiveness: true
+registers:
+ - { id: 0, class: _ }
+body: |
+ bb.0:
+ liveins:
+
+ ; HARD: [[R:%[0-9]+]]:_(s32) = G_FCONSTANT float -1.25
+ ; SOFT-NOT: G_FCONSTANT
+ ; SOFT: [[R:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1080033280
+ ; SOFT-NOT: G_FCONSTANT
+ %0(s32) = G_FCONSTANT float -1.25
+ ; CHECK: %r0 = COPY [[R]]
+ %r0 = COPY %0(s32)
+ BX_RET 14, %noreg, implicit %r0
+...
+---
+name: test_fconstant_double
+# CHECK-LABEL: name: test_fconstant_double
+legalized: false
+# CHECK: legalized: true
+regBankSelected: false
+selected: false
+tracksRegLiveness: true
+registers:
+ - { id: 0, class: _ }
+ - { id: 1, class: _ }
+ - { id: 2, class: _ }
+body: |
+ bb.0:
+ liveins:
+
+ ; HARD: [[R:%[0-9]+]]:_(s64) = G_FCONSTANT double -2.4
+ ; SOFT-NOT: G_FCONSTANT
+ ; SOFT-DAG: [[HI:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1073532109
+ ; SOFT-DAG: [[LO:%[0-9]+]]:_(s32) = G_CONSTANT i32 858993459
+ ; SOFT-NOT: G_FCONSTANT
+ %0(s64) = G_FCONSTANT double -2.4
+ ; HARD-DAG: G_UNMERGE_VALUES [[R]](s64)
+ ; SOFT-DAG: %r0 = COPY [[HI]]
+ ; SOFT-DAG: %r1 = COPY [[LO]]
+ %1(s32),%2(s32) = G_UNMERGE_VALUES %0(s64)
+ %r0 = COPY %2(s32)
+ %r1 = COPY %1(s32)
+ BX_RET 14, %noreg, implicit %r0, implicit %r1
+...
+---
name: test_fcmp_true_s32
# CHECK-LABEL: name: test_fcmp_true_s32
legalized: false
OpenPOWER on IntegriCloud