summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2006-03-25 23:00:08 +0000
committerChris Lattner <sabre@nondot.org>2006-03-25 23:00:08 +0000
commit3de9286e094a0b93837be62a4bbd54de93427ebe (patch)
tree1c1b3a9f22483ab11043ace6bfa01ab786db0dc3 /llvm/lib
parentf6e3b957b8346cf98679162a1c063ed10422fa70 (diff)
downloadbcm5719-llvm-3de9286e094a0b93837be62a4bbd54de93427ebe.tar.gz
bcm5719-llvm-3de9286e094a0b93837be62a4bbd54de93427ebe.zip
add a vnot helper node for matching 'not' on vectors
llvm-svn: 27132
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/TargetSelectionDAG.td8
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/lib/Target/TargetSelectionDAG.td b/llvm/lib/Target/TargetSelectionDAG.td
index 3856009bd29..0cf0bfea413 100644
--- a/llvm/lib/Target/TargetSelectionDAG.td
+++ b/llvm/lib/Target/TargetSelectionDAG.td
@@ -379,13 +379,17 @@ class PatLeaf<dag frag, code pred = [{}], SDNodeXForm xform = NOOP_SDNodeXForm>
// Leaf fragments.
-def immAllOnes : PatLeaf<(imm), [{ return N->isAllOnesValue(); }]>;
def vtInt : PatLeaf<(vt), [{ return MVT::isInteger(N->getVT()); }]>;
def vtFP : PatLeaf<(vt), [{ return MVT::isFloatingPoint(N->getVT()); }]>;
-// Other helper fragments.
+def immAllOnes : PatLeaf<(imm), [{ return N->isAllOnesValue(); }]>;
+def immAllOnesV: PatLeaf<(build_vector), [{
+ return ISD::isBuildVectorAllOnesInteger(N);
+}]>;
+// Other helper fragments.
def not : PatFrag<(ops node:$in), (xor node:$in, immAllOnes)>;
+def vnot : PatFrag<(ops node:$in), (xor node:$in, immAllOnesV)>;
def ineg : PatFrag<(ops node:$in), (sub 0, node:$in)>;
// extending load & truncstore fragments.
OpenPOWER on IntegriCloud