summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2019-06-19 14:25:27 +0000
committerSimon Pilgrim <llvm-dev@redking.me.uk>2019-06-19 14:25:27 +0000
commit2b309027ed5be06e86b628e51ba9887add5fb245 (patch)
tree91ca2d3348944c838178dc1653674c5c18a1e731 /llvm/lib
parent8a2bd361eb629d6185089f57d80e41f06a1bcf21 (diff)
downloadbcm5719-llvm-2b309027ed5be06e86b628e51ba9887add5fb245.tar.gz
bcm5719-llvm-2b309027ed5be06e86b628e51ba9887add5fb245.zip
[X86] Merge extract_subvector(*_EXTEND) and extract_subvector(*_EXTEND_VECTOR_INREG) handling. NFCI.
llvm-svn: 363808
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp20
1 files changed, 8 insertions, 12 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 473cdbb575c..f474701cef5 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -43538,26 +43538,22 @@ static SDValue combineExtractSubvector(SDNode *N, SelectionDAG &DAG,
return DAG.getNode(X86ISD::VFPEXT, SDLoc(N), VT, InVec.getOperand(0));
}
}
- if ((InOpcode == ISD::ANY_EXTEND || InOpcode == ISD::ZERO_EXTEND ||
- InOpcode == ISD::SIGN_EXTEND) &&
+ if ((InOpcode == ISD::ANY_EXTEND ||
+ InOpcode == ISD::ANY_EXTEND_VECTOR_INREG ||
+ InOpcode == ISD::ZERO_EXTEND ||
+ InOpcode == ISD::ZERO_EXTEND_VECTOR_INREG ||
+ InOpcode == ISD::SIGN_EXTEND ||
+ InOpcode == ISD::SIGN_EXTEND_VECTOR_INREG) &&
VT.is128BitVector() &&
InVec.getOperand(0).getSimpleValueType().is128BitVector()) {
- unsigned ExtOp;
- switch(InOpcode) {
- default: llvm_unreachable("Unknown extension opcode");
+ unsigned ExtOp = InOpcode;
+ switch (InOpcode) {
case ISD::ANY_EXTEND: ExtOp = ISD::ANY_EXTEND_VECTOR_INREG; break;
case ISD::SIGN_EXTEND: ExtOp = ISD::SIGN_EXTEND_VECTOR_INREG; break;
case ISD::ZERO_EXTEND: ExtOp = ISD::ZERO_EXTEND_VECTOR_INREG; break;
}
return DAG.getNode(ExtOp, SDLoc(N), VT, InVec.getOperand(0));
}
- if ((InOpcode == ISD::ANY_EXTEND_VECTOR_INREG ||
- InOpcode == ISD::ZERO_EXTEND_VECTOR_INREG ||
- InOpcode == ISD::SIGN_EXTEND_VECTOR_INREG) &&
- VT.is128BitVector() &&
- InVec.getOperand(0).getSimpleValueType().is128BitVector()) {
- return DAG.getNode(InOpcode, SDLoc(N), VT, InVec.getOperand(0));
- }
}
return SDValue();
OpenPOWER on IntegriCloud