[llvm-commits] CVS: llvm/lib/Target/TargetSelectionDAG.td

Evan Cheng evan.cheng at apple.com
Tue Oct 3 17:54:07 PDT 2006



Changes in directory llvm/lib/Target:

TargetSelectionDAG.td updated: 1.68 -> 1.69
---
Log message:

Combine ISD::EXTLOAD, ISD::SEXTLOAD, ISD::ZEXTLOAD into ISD::LOADX. Add an
extra operand to LOADX to specify the exact value extension type.


---
Diffs of the changes:  (+10 -12)

 TargetSelectionDAG.td |   22 ++++++++++------------
 1 files changed, 10 insertions(+), 12 deletions(-)


Index: llvm/lib/Target/TargetSelectionDAG.td
diff -u llvm/lib/Target/TargetSelectionDAG.td:1.68 llvm/lib/Target/TargetSelectionDAG.td:1.69
--- llvm/lib/Target/TargetSelectionDAG.td:1.68	Thu Jun 15 03:19:05 2006
+++ llvm/lib/Target/TargetSelectionDAG.td	Tue Oct  3 19:53:53 2006
@@ -164,10 +164,10 @@
   SDTCisPtrTy<1>  
 ]>;
 
-def SDTExtLoad : SDTypeProfile<1, 3, [  // extload
-  SDTCisPtrTy<1>, SDTCisVT<2, OtherVT>, SDTCisVT<3, OtherVT>
+def SDTLoadX : SDTypeProfile<1, 4, [  // loadX
+  SDTCisPtrTy<1>, SDTCisVT<2, OtherVT>, SDTCisVT<3, OtherVT>, SDTCisVT<4, i32>
 ]>;
-def SDTIntExtLoad : SDTypeProfile<1, 3, [  // sextload, zextload
+def SDTIntExtLoad : SDTypeProfile<1, 3, [  // extload, sextload, zextload
   SDTCisInt<0>, SDTCisPtrTy<1>, SDTCisVT<2, OtherVT>, SDTCisVT<3, OtherVT>
 ]>;
 def SDTTruncStore : SDTypeProfile<0, 4, [  // truncstore
@@ -308,11 +308,9 @@
 def load       : SDNode<"ISD::LOAD"       , SDTLoad,  [SDNPHasChain]>;
 def store      : SDNode<"ISD::STORE"      , SDTStore, [SDNPHasChain]>;
 
-// Do not use sextld and zextld directly. Use sextload and zextload (see
-// below) which pass in a dummy srcvalue node which tblgen will skip over.
-def sextld     : SDNode<"ISD::SEXTLOAD"   , SDTIntExtLoad, [SDNPHasChain]>;
-def zextld     : SDNode<"ISD::ZEXTLOAD"   , SDTIntExtLoad, [SDNPHasChain]>;
-def extld      : SDNode<"ISD::EXTLOAD"    , SDTExtLoad,    [SDNPHasChain]>;
+// Do not use loadx directly. Use extload, sextload and zextload (see below)
+// which pass in a dummy srcvalue node which tblgen will skip over.
+def loadx      : SDNode<"ISD::LOADX"      , SDTLoadX,      [SDNPHasChain]>;
 def truncst    : SDNode<"ISD::TRUNCSTORE" , SDTTruncStore, [SDNPHasChain]>;
 
 def vector_shuffle : SDNode<"ISD::VECTOR_SHUFFLE", SDTVecShuffle, []>;
@@ -415,12 +413,12 @@
 def ineg : PatFrag<(ops node:$in), (sub 0, node:$in)>;
 
 // extending load & truncstore fragments.
+def extload       : PatFrag<(ops node:$ptr, node:$vt),
+                            (loadx node:$ptr, srcvalue:$dummy, node:$vt, 0)>;
 def sextload      : PatFrag<(ops node:$ptr, node:$vt),
-                            (sextld node:$ptr, srcvalue:$dummy, node:$vt)>;
+                            (loadx node:$ptr, srcvalue:$dummy, node:$vt, 1)>;
 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)>;
+                            (loadx node:$ptr, srcvalue:$dummy, node:$vt, 2)>;
 def truncstore    : PatFrag<(ops node:$val, node:$ptr, node:$vt),
                             (truncst node:$val, node:$ptr, srcvalue:$dummy, 
                             node:$vt)>;






More information about the llvm-commits mailing list