[X86] getPMOVMSKB - add MVT::v64i8 handling and remove from combineBitcastvxi1. NFCI.
llvm-svn: 370670
This commit is contained in:
parent
78e8011a29
commit
fb5661a884
|
@ -26557,6 +26557,17 @@ static SDValue getPMOVMSKB(const SDLoc &DL, SDValue V, SelectionDAG &DAG,
|
|||
const X86Subtarget &Subtarget) {
|
||||
MVT InVT = V.getSimpleValueType();
|
||||
|
||||
if (InVT == MVT::v64i8) {
|
||||
SDValue Lo, Hi;
|
||||
std::tie(Lo, Hi) = DAG.SplitVector(V, DL);
|
||||
Lo = getPMOVMSKB(DL, Lo, DAG, Subtarget);
|
||||
Hi = getPMOVMSKB(DL, Hi, DAG, Subtarget);
|
||||
Lo = DAG.getNode(ISD::ZERO_EXTEND, DL, MVT::i64, Lo);
|
||||
Hi = DAG.getNode(ISD::ANY_EXTEND, DL, MVT::i64, Hi);
|
||||
Hi = DAG.getNode(ISD::SHL, DL, MVT::i64, Hi,
|
||||
DAG.getConstant(32, DL, MVT::i8));
|
||||
return DAG.getNode(ISD::OR, DL, MVT::i64, Lo, Hi);
|
||||
}
|
||||
if (InVT == MVT::v32i8 && !Subtarget.hasInt256()) {
|
||||
SDValue Lo, Hi;
|
||||
std::tie(Lo, Hi) = DAG.SplitVector(V, DL);
|
||||
|
@ -35251,17 +35262,7 @@ static SDValue combineBitcastvxi1(SelectionDAG &DAG, EVT VT, SDValue Src,
|
|||
|
||||
SDValue V = DAG.getNode(ISD::SIGN_EXTEND, DL, SExtVT, Src);
|
||||
|
||||
if (SExtVT == MVT::v64i8) {
|
||||
SDValue Lo, Hi;
|
||||
std::tie(Lo, Hi) = DAG.SplitVector(V, DL);
|
||||
Lo = DAG.getNode(X86ISD::MOVMSK, DL, MVT::i32, Lo);
|
||||
Lo = DAG.getNode(ISD::ZERO_EXTEND, DL, MVT::i64, Lo);
|
||||
Hi = DAG.getNode(X86ISD::MOVMSK, DL, MVT::i32, Hi);
|
||||
Hi = DAG.getNode(ISD::ANY_EXTEND, DL, MVT::i64, Hi);
|
||||
Hi = DAG.getNode(ISD::SHL, DL, MVT::i64, Hi,
|
||||
DAG.getConstant(32, DL, MVT::i8));
|
||||
V = DAG.getNode(ISD::OR, DL, MVT::i64, Lo, Hi);
|
||||
} else if (SExtVT == MVT::v16i8 || SExtVT == MVT::v32i8) {
|
||||
if (SExtVT == MVT::v16i8 || SExtVT == MVT::v32i8 || SExtVT == MVT::v64i8) {
|
||||
V = getPMOVMSKB(DL, V, DAG, Subtarget);
|
||||
} else {
|
||||
if (SExtVT == MVT::v8i16)
|
||||
|
|
Loading…
Reference in New Issue