diff options
author | Bob Wilson <bob.wilson@apple.com> | 2009-08-12 22:54:19 +0000 |
---|---|---|
committer | Bob Wilson <bob.wilson@apple.com> | 2009-08-12 22:54:19 +0000 |
commit | ff2db10211a12e663df0c9f25db9c42e365d2b8e (patch) | |
tree | 923f434d20d97aaf1ee43008ae8f677d3c18c520 /llvm/lib/Target/ARM/ARMISelLowering.cpp | |
parent | dc94d3fd27842d775a11ce8d9d9cf2dd0825085c (diff) | |
download | bcm5719-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.cpp | 3 |
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)) |