forked from OSchip/llvm-project
[RISCV][NFC] Add getVLOperand for RVV intrinsics.
Use the VLOperand information to get the VL. Differential Revision: https://reviews.llvm.org/D118156
This commit is contained in:
parent
9273378b85
commit
510710d037
|
@ -1547,6 +1547,19 @@ bool RISCVTargetLowering::isLegalElementTypeForRVV(Type *ScalarTy) const {
|
|||
return false;
|
||||
}
|
||||
|
||||
static SDValue getVLOperand(SDValue Op) {
|
||||
assert((Op.getOpcode() == ISD::INTRINSIC_WO_CHAIN ||
|
||||
Op.getOpcode() == ISD::INTRINSIC_W_CHAIN) &&
|
||||
"Unexpected opcode");
|
||||
bool HasChain = Op.getOpcode() == ISD::INTRINSIC_W_CHAIN;
|
||||
unsigned IntNo = Op.getConstantOperandVal(HasChain ? 1 : 0);
|
||||
const RISCVVIntrinsicsTable::RISCVVIntrinsicInfo *II =
|
||||
RISCVVIntrinsicsTable::getRISCVVIntrinsicInfo(IntNo);
|
||||
if (!II)
|
||||
return SDValue();
|
||||
return Op.getOperand(II->VLOperand + 1 + HasChain);
|
||||
}
|
||||
|
||||
static bool useRVVForFixedLengthVectorVT(MVT VT,
|
||||
const RISCVSubtarget &Subtarget) {
|
||||
assert(VT.isFixedLengthVector() && "Expected a fixed length vector type!");
|
||||
|
@ -4372,7 +4385,7 @@ static SDValue lowerVectorIntrinsicSplats(SDValue Op, SelectionDAG &DAG,
|
|||
// We need to convert the scalar to a splat vector.
|
||||
// FIXME: Can we implicitly truncate the scalar if it is known to
|
||||
// be sign extended?
|
||||
SDValue VL = Op.getOperand(II->VLOperand + 1 + HasChain);
|
||||
SDValue VL = getVLOperand(Op);
|
||||
assert(VL.getValueType() == XLenVT);
|
||||
ScalarOp = splatSplitI64WithVL(DL, VT, ScalarOp, VL, DAG);
|
||||
return DAG.getNode(Op->getOpcode(), DL, Op->getVTList(), Operands);
|
||||
|
@ -4460,7 +4473,7 @@ SDValue RISCVTargetLowering::LowerINTRINSIC_WO_CHAIN(SDValue Op,
|
|||
// vmerge.vvm vDest, vSrc, vVal, mMask
|
||||
MVT VT = Op.getSimpleValueType();
|
||||
SDValue Vec = Op.getOperand(1);
|
||||
SDValue VL = Op.getOperand(3);
|
||||
SDValue VL = getVLOperand(Op);
|
||||
|
||||
SDValue SplattedVal = splatSplitI64WithVL(DL, VT, Scalar, VL, DAG);
|
||||
SDValue SplattedIdx = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, VT,
|
||||
|
@ -4506,7 +4519,7 @@ SDValue RISCVTargetLowering::LowerINTRINSIC_WO_CHAIN(SDValue Op,
|
|||
DAG.getConstant(1, DL, XLenVT));
|
||||
|
||||
// Double the VL since we halved SEW.
|
||||
SDValue VL = Op.getOperand(NumOps - (1 + OpOffset));
|
||||
SDValue VL = getVLOperand(Op);
|
||||
SDValue I32VL =
|
||||
DAG.getNode(ISD::SHL, DL, XLenVT, VL, DAG.getConstant(1, DL, XLenVT));
|
||||
|
||||
|
|
Loading…
Reference in New Issue