[X86] LowerShiftByScalarVariable - remove 32-bit vXi64 bitcast shift amount handling
This was handled generically (and better) by D120553
This commit is contained in:
parent
6dc456a375
commit
ab2cbb8466
|
@ -29338,7 +29338,6 @@ static SDValue LowerShiftByScalarVariable(SDValue Op, SelectionDAG &DAG,
|
|||
SDValue Amt = Op.getOperand(1);
|
||||
unsigned Opcode = Op.getOpcode();
|
||||
unsigned X86OpcI = getTargetVShiftUniformOpcode(Opcode, false);
|
||||
unsigned X86OpcV = getTargetVShiftUniformOpcode(Opcode, true);
|
||||
|
||||
// TODO: Use getSplatSourceVector.
|
||||
if (SDValue BaseShAmt = DAG.getSplatValue(Amt)) {
|
||||
|
@ -29401,23 +29400,6 @@ static SDValue LowerShiftByScalarVariable(SDValue Op, SelectionDAG &DAG,
|
|||
}
|
||||
}
|
||||
|
||||
// Check cases (mainly 32-bit) where i64 is expanded into high and low parts.
|
||||
if (VT == MVT::v2i64 && Amt.getOpcode() == ISD::BITCAST &&
|
||||
Amt.getOperand(0).getOpcode() == ISD::BUILD_VECTOR) {
|
||||
Amt = Amt.getOperand(0);
|
||||
unsigned Ratio = 64 / Amt.getScalarValueSizeInBits();
|
||||
std::vector<SDValue> Vals(Ratio);
|
||||
for (unsigned i = 0; i != Ratio; ++i)
|
||||
Vals[i] = Amt.getOperand(i);
|
||||
for (unsigned i = Ratio, e = Amt.getNumOperands(); i != e; i += Ratio) {
|
||||
for (unsigned j = 0; j != Ratio; ++j)
|
||||
if (Vals[j] != Amt.getOperand(i + j))
|
||||
return SDValue();
|
||||
}
|
||||
|
||||
if (supportedVectorShiftWithBaseAmnt(VT, Subtarget, Op.getOpcode()))
|
||||
return DAG.getNode(X86OpcV, dl, VT, R, Op.getOperand(1));
|
||||
}
|
||||
return SDValue();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue