[llvm-branch-commits] [llvm] [RISCV] Support non-power-of-2 types when expanding memcmp (PR #114971)
Pengcheng Wang via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Thu Jun 12 04:46:39 PDT 2025
================
@@ -16190,13 +16186,20 @@ combineVectorSizedSetCCEquality(EVT VT, SDValue X, SDValue Y, ISD::CondCode CC,
return SDValue();
unsigned VecSize = OpSize / 8;
- EVT VecVT = MVT::getVectorVT(MVT::i8, VecSize);
- EVT CmpVT = MVT::getVectorVT(MVT::i1, VecSize);
+ EVT VecVT = EVT::getVectorVT(*DAG.getContext(), MVT::i8, VecSize);
+ EVT CmpVT = EVT::getVectorVT(*DAG.getContext(), MVT::i1, VecSize);
SDValue VecX = DAG.getBitcast(VecVT, X);
SDValue VecY = DAG.getBitcast(VecVT, Y);
- SDValue Cmp = DAG.getSetCC(DL, CmpVT, VecX, VecY, ISD::SETNE);
- return DAG.getSetCC(DL, VT, DAG.getNode(ISD::VECREDUCE_OR, DL, XLenVT, Cmp),
+ SDValue Mask = DAG.getAllOnesConstant(DL, CmpVT);
+ SDValue VL = DAG.getConstant(VecSize, DL, XLenVT);
+
+ SDValue Cmp = DAG.getNode(ISD::VP_SETCC, DL, CmpVT, VecX, VecY,
+ DAG.getCondCode(ISD::SETNE), Mask, VL);
+ return DAG.getSetCC(DL, VT,
+ DAG.getNode(ISD::VP_REDUCE_OR, DL, XLenVT,
+ DAG.getConstant(0, DL, XLenVT), Cmp, Mask,
+ VL),
----------------
wangpc-pp wrote:
I think so, because this PR was done several months later after that commit.
https://github.com/llvm/llvm-project/pull/114971
More information about the llvm-branch-commits
mailing list