summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM/ARMISelLowering.cpp
diff options
context:
space:
mode:
authorBob Wilson <bob.wilson@apple.com>2009-08-12 22:54:19 +0000
committerBob Wilson <bob.wilson@apple.com>2009-08-12 22:54:19 +0000
commitff2db10211a12e663df0c9f25db9c42e365d2b8e (patch)
tree923f434d20d97aaf1ee43008ae8f677d3c18c520 /llvm/lib/Target/ARM/ARMISelLowering.cpp
parentdc94d3fd27842d775a11ce8d9d9cf2dd0825085c (diff)
downloadbcm5719-llvm-ff2db10211a12e663df0c9f25db9c42e365d2b8e.tar.gz
bcm5719-llvm-ff2db10211a12e663df0c9f25db9c42e365d2b8e.zip
Recognize Neon VDUP shuffles during legalization instead of selection.
llvm-svn: 78852
Diffstat (limited to 'llvm/lib/Target/ARM/ARMISelLowering.cpp')
-rw-r--r--llvm/lib/Target/ARM/ARMISelLowering.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp
index f348fe20210..f2b6686e362 100644
--- a/llvm/lib/Target/ARM/ARMISelLowering.cpp
+++ b/llvm/lib/Target/ARM/ARMISelLowering.cpp
@@ -487,6 +487,7 @@ const char *ARMTargetLowering::getTargetNodeName(unsigned Opcode) const {
case ARMISD::VREV64: return "ARMISD::VREV64";
case ARMISD::VREV32: return "ARMISD::VREV32";
case ARMISD::VREV16: return "ARMISD::VREV16";
+ case ARMISD::VSPLAT0: return "ARMISD::VSPLAT0";
}
}
@@ -2440,6 +2441,8 @@ static SDValue LowerVECTOR_SHUFFLE(SDValue Op, SelectionDAG &DAG) {
DebugLoc dl = Op.getDebugLoc();
EVT VT = Op.getValueType();
+ if (SVN->isSplat() && SVN->getSplatIndex() == 0)
+ return DAG.getNode(ARMISD::VSPLAT0, dl, VT, SVN->getOperand(0));
if (isVREVMask(SVN, 64))
return DAG.getNode(ARMISD::VREV64, dl, VT, SVN->getOperand(0));
if (isVREVMask(SVN, 32))
OpenPOWER on IntegriCloud