aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton Korobeynikov <asl@math.spbu.ru>2009-07-16 14:30:29 +0000
committerAnton Korobeynikov <asl@math.spbu.ru>2009-07-16 14:30:29 +0000
commitbb8a04806d6409fdeae04d1f662e0f0682596d41 (patch)
treefbdff2e608676bf2525cc5746d4e765db421e1d6
parentf2fd8ea1c91cac731cbd31c11201290b40a75c17 (diff)
downloadexternal_llvm-bb8a04806d6409fdeae04d1f662e0f0682596d41.zip
external_llvm-bb8a04806d6409fdeae04d1f662e0f0682596d41.tar.gz
external_llvm-bb8a04806d6409fdeae04d1f662e0f0682596d41.tar.bz2
Expand 32-bit bitconverts via memory
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76050 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/SystemZ/SystemZISelLowering.cpp4
-rw-r--r--test/CodeGen/SystemZ/2009-07-11-FloatBitConvert.ll15
2 files changed, 17 insertions, 2 deletions
diff --git a/lib/Target/SystemZ/SystemZISelLowering.cpp b/lib/Target/SystemZ/SystemZISelLowering.cpp
index 162f960..239a179 100644
--- a/lib/Target/SystemZ/SystemZISelLowering.cpp
+++ b/lib/Target/SystemZ/SystemZISelLowering.cpp
@@ -130,8 +130,8 @@ SystemZTargetLowering::SystemZTargetLowering(SystemZTargetMachine &tm) :
setOperationAction(ISD::FCOS, MVT::f64, Expand);
// We have only 64-bit bitconverts
- setOperationAction(ISD::BIT_CONVERT, MVT::f32, Promote);
- setOperationAction(ISD::BIT_CONVERT, MVT::i32, Promote);
+ setOperationAction(ISD::BIT_CONVERT, MVT::f32, Expand);
+ setOperationAction(ISD::BIT_CONVERT, MVT::i32, Expand);
setOperationAction(ISD::UINT_TO_FP, MVT::i32, Expand);
setOperationAction(ISD::UINT_TO_FP, MVT::i64, Expand);
diff --git a/test/CodeGen/SystemZ/2009-07-11-FloatBitConvert.ll b/test/CodeGen/SystemZ/2009-07-11-FloatBitConvert.ll
new file mode 100644
index 0000000..e1edfe2
--- /dev/null
+++ b/test/CodeGen/SystemZ/2009-07-11-FloatBitConvert.ll
@@ -0,0 +1,15 @@
+; ModuleID = 'bugpoint.test.bc'
+target datalayout = "E-p:64:64:64-i8:8:16-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-a0:16:16"
+target triple = "s390x-linux"
+
+define float @foo(i32 signext %a) {
+entry:
+ %b = bitcast i32 %a to float
+ ret float %b
+}
+
+define i32 @bar(float %a) {
+entry:
+ %b = bitcast float %a to i32
+ ret i32 %b
+} \ No newline at end of file