[llvm] [RISCV][GISel] Support select G_INSERT_VECTOR_ELT (PR #176687)
Jianjian Guan via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 28 23:39:45 PDT 2026
================
@@ -1361,6 +1361,101 @@ bool RISCVLegalizerInfo::legalizeInsertSubvector(MachineInstr &MI,
return true;
}
+static std::optional<LLT>
+getSmallestVectorTypeForIndex(LLT VecTy, unsigned MaxIdx,
+ const RISCVSubtarget &Subtarget) {
+ MVT VecVT = getMVTForLLT(VecTy);
+ assert(VecVT.isScalableVector());
+ const unsigned EltSize = VecVT.getScalarSizeInBits();
+ const unsigned VectorBitsMin = Subtarget.getRealMinVLen();
+ const unsigned MinVLMAX = VectorBitsMin / EltSize;
+ MVT SmallerVT;
+ if (MaxIdx < MinVLMAX)
+ SmallerVT = RISCVTargetLowering::getM1VT(VecVT);
+ else if (MaxIdx < MinVLMAX * 2)
+ SmallerVT =
+ RISCVTargetLowering::getM1VT(VecVT).getDoubleNumVectorElementsVT();
+ else if (MaxIdx < MinVLMAX * 4)
+ SmallerVT = RISCVTargetLowering::getM1VT(VecVT)
+ .getDoubleNumVectorElementsVT()
+ .getDoubleNumVectorElementsVT();
+ if (!SmallerVT.isValid() || !VecVT.bitsGT(SmallerVT))
+ return std::nullopt;
+ return getLLTForMVT(SmallerVT);
+}
+
+bool RISCVLegalizerInfo::legalizeInsertVectotElt(MachineInstr &MI,
----------------
jacquesguan wrote:
Fixed.
https://github.com/llvm/llvm-project/pull/176687
More information about the llvm-commits
mailing list