[llvm] [LoongArch] Enable more vector tests for 32-bit target (PR #160656)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 25 05:21:42 PDT 2025
================
@@ -3102,12 +3111,33 @@ LoongArchTargetLowering::lowerINSERT_VECTOR_ELT(SDValue Op,
return SDValue();
SDValue SplatElt = DAG.getSplatBuildVector(VT, DL, Op1);
- SDValue SplatIdx = DAG.getSplatBuildVector(IdxVTy, DL, Op2);
-
SmallVector<SDValue, 32> RawIndices;
- for (unsigned i = 0; i < NumElts; ++i)
- RawIndices.push_back(DAG.getConstant(i, DL, Subtarget.getGRLenVT()));
- SDValue Indices = DAG.getBuildVector(IdxVTy, DL, RawIndices);
+ SDValue SplatIdx;
+ SDValue Indices;
+
+ if (!Subtarget.is64Bit() && IdxTy == MVT::i64) {
+ MVT PairVTy = MVT::getVectorVT(MVT::i32, NumElts * 2);
+ for (unsigned i = 0; i < NumElts; ++i) {
+ RawIndices.push_back(Op2);
+ RawIndices.push_back(DAG.getConstant(0, DL, Subtarget.getGRLenVT()));
+ }
+ SplatIdx = DAG.getBuildVector(PairVTy, DL, RawIndices);
+ SplatIdx = DAG.getBitcast(IdxVTy, SplatIdx);
+
+ RawIndices.clear();
+ for (unsigned i = 0; i < NumElts; ++i) {
+ RawIndices.push_back(DAG.getConstant(i, DL, Subtarget.getGRLenVT()));
+ RawIndices.push_back(DAG.getConstant(0, DL, Subtarget.getGRLenVT()));
----------------
heiher wrote:
Thanks! All done.
https://github.com/llvm/llvm-project/pull/160656
More information about the llvm-commits
mailing list