add truncstore
authorChris Lattner <sabre@nondot.org>
Sat, 17 Dec 2005 20:42:29 +0000 (20:42 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 17 Dec 2005 20:42:29 +0000 (20:42 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24787 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/TargetSelectionDAG.td

index 0da445d5d14ea666c090aae6742ba49dd4131e58..953a0874e8fc14306e719908dd404800019f2db5 100644 (file)
@@ -135,8 +135,7 @@ def SDTBrCond : SDTypeProfile<0, 2, [ // brcond
   SDTCisInt<0>, SDTCisVT<1, OtherVT>
 ]>;
 
-def SDTRet : SDTypeProfile<0, 0, [ // ret
-]>;
+def SDTRet : SDTypeProfile<0, 0, []>; // ret
 
 def SDTWritePort : SDTypeProfile<0, 2, [ // writeport
   SDTCisInt<0>, SDTCisInt<1>
@@ -153,6 +152,9 @@ def SDTStore : SDTypeProfile<0, 2, [ // store
 def SDTIntExtLoad : SDTypeProfile<1, 3, [  // sextload, zextload, extload
   SDTCisInt<0>, SDTCisPtrTy<1>, SDTCisVT<2, OtherVT>, SDTCisVT<3, OtherVT>
 ]>;
+def SDTTruncStore : SDTypeProfile<0, 4, [  // truncstore
+  SDTCisInt<0>, SDTCisPtrTy<1>, SDTCisVT<2, OtherVT>, SDTCisVT<3, OtherVT>
+]>;
 
 
 //===----------------------------------------------------------------------===//
@@ -262,6 +264,7 @@ def store      : SDNode<"ISD::STORE"      , SDTStore, [SDNPHasChain]>;
 def sextld     : SDNode<"ISD::SEXTLOAD"   , SDTIntExtLoad, [SDNPHasChain]>;
 def zextld     : SDNode<"ISD::ZEXTLOAD"   , SDTIntExtLoad, [SDNPHasChain]>;
 def extld      : SDNode<"ISD::EXTLOAD"    , SDTIntExtLoad, [SDNPHasChain]>;
+def truncst    : SDNode<"ISD::TRUNCSTORE" , SDTTruncStore, [SDNPHasChain]>;
 
 //===----------------------------------------------------------------------===//
 // Selection DAG Condition Codes
@@ -329,13 +332,16 @@ def vtFP       : PatLeaf<(vt),  [{ return MVT::isFloatingPoint(N->getVT()); }]>;
 def not  : PatFrag<(ops node:$in), (xor node:$in, immAllOnes)>;
 def ineg : PatFrag<(ops node:$in), (sub 0, node:$in)>;
 
-// extending load fragments.
+// extending load & truncstore fragments.
 def sextload      : PatFrag<(ops node:$ptr, node:$vt),
                             (sextld node:$ptr, srcvalue:$dummy, node:$vt)>;
 def zextload      : PatFrag<(ops node:$ptr, node:$vt),
                             (zextld node:$ptr, srcvalue:$dummy, node:$vt)>;
 def extload       : PatFrag<(ops node:$ptr, node:$vt),
                             (extld node:$ptr, srcvalue:$dummy, node:$vt)>;
+def truncstore    : PatFrag<(ops node:$val, node:$ptr, node:$vt),
+                            (truncst node:$val, node:$ptr, srcvalue:$dummy, 
+                            node:$vt)>;
 
 // setcc convenience fragments.
 def setoeq : PatFrag<(ops node:$lhs, node:$rhs),