diff options
| author | Chris Lattner <sabre@nondot.org> | 2005-09-03 01:28:40 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2005-09-03 01:28:40 +0000 |
| commit | aa833d4571fcfc7729c1e032a3b4c98c5c9582c8 (patch) | |
| tree | e593a442b73baafe2871549e324ba7432db78fc2 /llvm/lib | |
| parent | 8ae9525bd02074f4b12bec7596fe91d62dbc541f (diff) | |
| download | bcm5719-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.td | 21 |
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; } |

