diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2019-06-19 14:25:27 +0000 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2019-06-19 14:25:27 +0000 |
commit | 2b309027ed5be06e86b628e51ba9887add5fb245 (patch) | |
tree | 91ca2d3348944c838178dc1653674c5c18a1e731 /llvm/lib | |
parent | 8a2bd361eb629d6185089f57d80e41f06a1bcf21 (diff) | |
download | bcm5719-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.cpp | 20 |
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(); |