[llvm-commits] CVS: llvm/lib/Target/TargetSelectionDAG.td
Chris Lattner
lattner at cs.uiuc.edu
Thu Oct 13 21:55:21 PDT 2005
Changes in directory llvm/lib/Target:
TargetSelectionDAG.td updated: 1.1 -> 1.2
---
Log message:
add a new SDTCisOpSmallerThanOp type constraint, and implement fround/fextend in terms of it
---
Diffs of the changes: (+13 -0)
TargetSelectionDAG.td | 13 +++++++++++++
1 files changed, 13 insertions(+)
Index: llvm/lib/Target/TargetSelectionDAG.td
diff -u llvm/lib/Target/TargetSelectionDAG.td:1.1 llvm/lib/Target/TargetSelectionDAG.td:1.2
--- llvm/lib/Target/TargetSelectionDAG.td:1.1 Mon Oct 10 01:00:30 2005
+++ llvm/lib/Target/TargetSelectionDAG.td Thu Oct 13 23:55:10 2005
@@ -45,6 +45,10 @@
int OtherOperandNum = OtherOp;
}
+class SDTCisOpSmallerThanOp<int SmallOp, int BigOp> : SDTypeConstraint<SmallOp>{
+ int BigOperandNum = BigOp;
+}
+
//===----------------------------------------------------------------------===//
// Selection DAG Type Profile definitions.
//
@@ -77,6 +81,12 @@
def SDTFPUnaryOp : SDTypeProfile<1, 1, [ // fneg, fsqrt, etc
SDTCisSameAs<0, 1>, SDTCisFP<0>
]>;
+def SDTFPRoundOp : SDTypeProfile<1, 1, [ // fround
+ SDTCisFP<0>, SDTCisFP<1>, SDTCisOpSmallerThanOp<0, 1>
+]>;
+def SDTFPExtendOp : SDTypeProfile<1, 1, [ // fextend
+ SDTCisFP<0>, SDTCisFP<1>, SDTCisOpSmallerThanOp<1, 0>
+]>;
def SDTExtInreg : SDTypeProfile<1, 2, [ // sext_inreg
SDTCisSameAs<0, 1>, SDTCisInt<0>, SDTCisVT<2, OtherVT>,
SDTCisVTSmallerThanOp<2, 1>
@@ -136,6 +146,9 @@
def fneg : SDNode<"ISD::FNEG" , SDTFPUnaryOp>;
def fsqrt : SDNode<"ISD::FSQRT" , SDTFPUnaryOp>;
+def fround : SDNode<"ISD::FP_ROUND" , SDTFPRoundOp>;
+def fextend : SDNode<"ISD::FP_EXTEND" , SDTFPExtendOp>;
+
def sext_inreg : SDNode<"ISD::SIGN_EXTEND_INREG", SDTExtInreg>;
def ctlz : SDNode<"ISD::CTLZ" , SDTIntUnaryOp>;
More information about the llvm-commits
mailing list