[llvm] [AArch64][SelectionDAG] Improve codegen for insert_into_scalable(zext_fixed_length_vector) (PR #192405)

Ricardo Jesus via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 16 01:06:23 PDT 2026


================
@@ -20942,12 +20942,30 @@ static SDValue performReinterpretCastCombine(SDNode *N) {
   return SDValue();
 }
 
+// and(splat(1), sext(setcc_merge_zero)) -> zext(setcc_merge_zero)
+SDValue performSVEAndSplatSetCCMergeZeroCombine(SDNode *N, SelectionDAG &DAG) {
+  SDLoc DL(N);
+  SDValue SplatOp = N->getOperand(0);
+  SDValue NonSplatOp = N->getOperand(1);
+  if (NonSplatOp.getOpcode() == ISD::SPLAT_VECTOR)
+    std::swap(SplatOp, NonSplatOp);
+  SDValue Compare = NonSplatOp.getOperand(0);
----------------
rj-jesus wrote:

Ensure that NonSplatOp is a sign-extend before accessing the operand.

https://github.com/llvm/llvm-project/pull/192405


More information about the llvm-commits mailing list