return (Opcode == ISD::SRA) ? AShift : LShift;
}
-static SDValue LowerScalarImmediateShift(SDValue Op, SelectionDAG &DAG,
- const X86Subtarget &Subtarget) {
+static SDValue LowerShiftByScalarImmediate(SDValue Op, SelectionDAG &DAG,
+ const X86Subtarget &Subtarget) {
MVT VT = Op.getSimpleValueType();
SDLoc dl(Op);
SDValue R = Op.getOperand(0);
return SDValue();
}
-static SDValue LowerScalarVariableShift(SDValue Op, SelectionDAG &DAG,
- const X86Subtarget &Subtarget) {
+static SDValue LowerShiftByScalarVariable(SDValue Op, SelectionDAG &DAG,
+ const X86Subtarget &Subtarget) {
MVT VT = Op.getSimpleValueType();
SDLoc dl(Op);
SDValue R = Op.getOperand(0);
assert(VT.isVector() && "Custom lowering only for vector shifts!");
assert(Subtarget.hasSSE2() && "Only custom lower when we have SSE2!");
- if (SDValue V = LowerScalarImmediateShift(Op, DAG, Subtarget))
+ if (SDValue V = LowerShiftByScalarImmediate(Op, DAG, Subtarget))
return V;
- if (SDValue V = LowerScalarVariableShift(Op, DAG, Subtarget))
+ if (SDValue V = LowerShiftByScalarVariable(Op, DAG, Subtarget))
return V;
if (supportedVectorVarShift(VT, Subtarget, Opc))
// ISD::ROT* uses modulo rotate amounts.
if (SDValue BaseRotAmt = DAG.getSplatValue(Amt)) {
// If the amount is a splat, perform the modulo BEFORE the splat,
- // this helps LowerScalarVariableShift to remove the splat later.
+ // this helps LowerShiftByScalarVariable to remove the splat later.
Amt = DAG.getNode(ISD::SCALAR_TO_VECTOR, DL, VT, BaseRotAmt);
Amt = DAG.getNode(ISD::AND, DL, VT, Amt, AmtMask);
Amt = DAG.getVectorShuffle(VT, DL, Amt, DAG.getUNDEF(VT),
case X86ISD::VSHLI:
case X86ISD::VSRLI:
// Special case: SHL/SRL AVX1 V4i64 by 32-bits can lower as a shuffle.
- // TODO: Move this to LowerScalarImmediateShift?
+ // TODO: Move this to LowerShiftByScalarImmediate?
if (VT == MVT::v4i64 && !Subtarget.hasInt256() &&
llvm::all_of(Ops, [](SDValue Op) {
return Op.getConstantOperandAPInt(1) == 32;