[llvm-commits] CVS: llvm/lib/Target/TargetSelectionDAG.td
Chris Lattner
lattner at cs.uiuc.edu
Sun Dec 4 18:37:38 PST 2005
Changes in directory llvm/lib/Target:
TargetSelectionDAG.td updated: 1.11 -> 1.12
---
Log message:
On some targets (e.g. X86), shift amounts are not the same as the value
being shifted. Don't assume they are.
---
Diffs of the changes: (+6 -3)
TargetSelectionDAG.td | 9 ++++++---
1 files changed, 6 insertions(+), 3 deletions(-)
Index: llvm/lib/Target/TargetSelectionDAG.td
diff -u llvm/lib/Target/TargetSelectionDAG.td:1.11 llvm/lib/Target/TargetSelectionDAG.td:1.12
--- llvm/lib/Target/TargetSelectionDAG.td:1.11 Sun Dec 4 02:13:17 2005
+++ llvm/lib/Target/TargetSelectionDAG.td Sun Dec 4 20:37:26 2005
@@ -73,6 +73,9 @@
def SDTIntBinOp : SDTypeProfile<1, 2, [ // add, and, or, xor, udiv, etc.
SDTCisSameAs<0, 1>, SDTCisSameAs<0, 2>, SDTCisInt<0>
]>;
+def SDTIntShiftOp : SDTypeProfile<1, 2, [ // shl, sra, srl
+ SDTCisSameAs<0, 1>, SDTCisInt<0>, SDTCisInt<2>
+]>;
def SDTFPBinOp : SDTypeProfile<1, 2, [ // fadd, fmul, etc.
SDTCisSameAs<0, 1>, SDTCisSameAs<0, 2>, SDTCisFP<0>
]>;
@@ -172,9 +175,9 @@
def udiv : SDNode<"ISD::UDIV" , SDTIntBinOp>;
def srem : SDNode<"ISD::SREM" , SDTIntBinOp>;
def urem : SDNode<"ISD::UREM" , SDTIntBinOp>;
-def srl : SDNode<"ISD::SRL" , SDTIntBinOp>;
-def sra : SDNode<"ISD::SRA" , SDTIntBinOp>;
-def shl : SDNode<"ISD::SHL" , SDTIntBinOp>;
+def srl : SDNode<"ISD::SRL" , SDTIntShiftOp>;
+def sra : SDNode<"ISD::SRA" , SDTIntShiftOp>;
+def shl : SDNode<"ISD::SHL" , SDTIntShiftOp>;
def and : SDNode<"ISD::AND" , SDTIntBinOp,
[SDNPCommutative, SDNPAssociative]>;
def or : SDNode<"ISD::OR" , SDTIntBinOp,
More information about the llvm-commits
mailing list