Expand 32-bit bitconverts via memory
authorAnton Korobeynikov <asl@math.spbu.ru>
Thu, 16 Jul 2009 14:30:29 +0000 (14:30 +0000)
committerAnton Korobeynikov <asl@math.spbu.ru>
Thu, 16 Jul 2009 14:30:29 +0000 (14:30 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76050 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/SystemZ/SystemZISelLowering.cpp
test/CodeGen/SystemZ/2009-07-11-FloatBitConvert.ll [new file with mode: 0644]

index 162f960f8526efc111bcbc1523b8ec7b620fef8d..239a179e02edf78daa1564f1a9e297a07856f3bc 100644 (file)
@@ -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 (file)
index 0000000..e1edfe2
--- /dev/null
@@ -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