summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-09-03 01:28:40 +0000
committerChris Lattner <sabre@nondot.org>2005-09-03 01:28:40 +0000
commitaa833d4571fcfc7729c1e032a3b4c98c5c9582c8 (patch)
treee593a442b73baafe2871549e324ba7432db78fc2 /llvm/lib
parent8ae9525bd02074f4b12bec7596fe91d62dbc541f (diff)
downloadbcm5719-llvm-aa833d4571fcfc7729c1e032a3b4c98c5c9582c8.tar.gz
bcm5719-llvm-aa833d4571fcfc7729c1e032a3b4c98c5c9582c8.zip
explicitly specify an operands list for patterns with inputs (e.g. neg)
llvm-svn: 23240
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/PowerPC/PowerPCInstrInfo.td21
1 files changed, 13 insertions, 8 deletions
diff --git a/llvm/lib/Target/PowerPC/PowerPCInstrInfo.td b/llvm/lib/Target/PowerPC/PowerPCInstrInfo.td
index 3c82fd4b63a..30167698fb6 100644
--- a/llvm/lib/Target/PowerPC/PowerPCInstrInfo.td
+++ b/llvm/lib/Target/PowerPC/PowerPCInstrInfo.td
@@ -20,7 +20,7 @@ class SDNode<string opcode, string sdclass = "SDNode"> {
}
def set;
-def input;
+def node;
def imm : SDNode<"ISD::Constant", "ConstantSDNode">;
def vt : SDNode<"ISD::VALUETYPE", "VTSDNode">;
@@ -40,23 +40,28 @@ def ctlz : SDNode<"ISD::CTLZ">;
/// PatFrag - Represents a pattern fragment. This can match something on the
/// DAG, frame a single node to multiply nested other fragments.
///
-class PatFrag<dag frag, code pred = [{}]> {
+class PatFrag<dag ops, dag frag, code pred = [{}]> {
+ dag Operands = ops;
dag Fragment = frag;
code Predicate = pred;
}
+class PatLeaf<dag frag, code pred = [{}]> : PatFrag<(ops), frag, pred>;
// Leaf fragments.
-def immAllOnes : PatFrag<(imm), [{ return N->isAllOnesValue(); }]>;
-def immZero : PatFrag<(imm), [{ return N->isNullValue(); }]>;
+def immAllOnes : PatLeaf<(imm), [{ return N->isAllOnesValue(); }]>;
+def immZero : PatLeaf<(imm), [{ return N->isNullValue(); }]>;
-def vtInt : PatFrag<(vt), [{ return MVT::isInteger(N->getVT()); }]>;
-def vtFP : PatFrag<(vt), [{ return MVT::isFloatingPoint(N->getVT()); }]>;
+def vtInt : PatLeaf<(vt), [{ return MVT::isInteger(N->getVT()); }]>;
+def vtFP : PatLeaf<(vt), [{ return MVT::isFloatingPoint(N->getVT()); }]>;
// Other helper fragments.
-def not : PatFrag<(xor input:$in, immAllOnes)>;
-def ineg : PatFrag<(sub immZero, input:$in)>;
+def not : PatFrag<(ops node:$in), (xor node:$in, immAllOnes)>;
+def ineg : PatFrag<(ops node:$in), (sub immZero, node:$in)>;
+
+
+
class isPPC64 { bit PPC64 = 1; }
OpenPOWER on IntegriCloud