PTX: support for zext loads and trunc stores
authorJustin Holewinski <justin.holewinski@gmail.com>
Thu, 28 Apr 2011 00:19:52 +0000 (00:19 +0000)
committerJustin Holewinski <justin.holewinski@gmail.com>
Thu, 28 Apr 2011 00:19:52 +0000 (00:19 +0000)
- expansion of EXTLOAD and TRUNCSTORE instructions

Patch by Dan Bailey

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130354 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PTX/PTXISelLowering.cpp

index 7187518c52efa24bafc2ccb31d402e5b56b3baef..c3ba249d6317ea7953aeb32b0f85ad58b7412c0c 100644 (file)
@@ -34,11 +34,23 @@ PTXTargetLowering::PTXTargetLowering(TargetMachine &TM)
   addRegisterClass(MVT::f32, PTX::RRegf32RegisterClass);
   addRegisterClass(MVT::f64, PTX::RRegf64RegisterClass);
 
+  setBooleanContents(ZeroOrOneBooleanContent);
+  
   setOperationAction(ISD::EXCEPTIONADDR, MVT::i32, Expand);
 
   setOperationAction(ISD::ConstantFP, MVT::f32, Legal);
   setOperationAction(ISD::ConstantFP, MVT::f64, Legal);
-
+  
+  // Turn i16 (z)extload into load + (z)extend
+  setLoadExtAction(ISD::EXTLOAD, MVT::i16, Expand);
+  setLoadExtAction(ISD::ZEXTLOAD, MVT::i16, Expand);
+
+  // Turn f32 extload into load + fextend
+  setLoadExtAction(ISD::EXTLOAD, MVT::f32, Expand);
+  
+  // Turn f64 truncstore into trunc + store.
+  setTruncStoreAction(MVT::f64, MVT::f32, Expand);
+  
   // Customize translation of memory addresses
   setOperationAction(ISD::GlobalAddress, MVT::i32, Custom);
   setOperationAction(ISD::GlobalAddress, MVT::i64, Custom);