[llvm] [RISCV] Handle zeroinitializer of vector tuple Type (PR #113995)
Brandon Wu via llvm-commits
llvm-commits at lists.llvm.org
Mon Nov 25 22:36:26 PST 2024
================
@@ -18008,6 +18008,22 @@ SDValue RISCVTargetLowering::PerformDAGCombine(SDNode *N,
SDValue N0 = N->getOperand(0);
EVT VT = N->getValueType(0);
EVT SrcVT = N0.getValueType();
+ if (VT.isRISCVVectorTuple() && N0->getOpcode() == ISD::SPLAT_VECTOR) {
+ SDValue VL = DAG.getRegister(RISCV::X0, Subtarget.getXLenVT());
+ unsigned NF = VT.getRISCVVectorTupleNumFields();
+ unsigned NumScalElts = VT.getSizeInBits().getKnownMinValue() / (NF * 8);
+ SDValue EltVal = DAG.getConstant(0, DL, Subtarget.getXLenVT());
+ MVT ScalTy = MVT::getScalableVectorVT(MVT::getIntegerVT(8), NumScalElts);
+
+ SDValue Splat = DAG.getNode(RISCVISD::VMV_V_X_VL, DL, ScalTy,
----------------
4vtomat wrote:
Yes!
https://github.com/llvm/llvm-project/pull/113995
More information about the llvm-commits
mailing list