[llvm] [AArch64][SDAG] Fix invalid index into STEP_VECTOR operand (PR #193236)

Harry Ramsey via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 27 07:46:40 PDT 2026


================
@@ -457,6 +457,28 @@ define void @masked_scatter_nxv4i32_u32s8_offsets(ptr %base, <vscale x 4 x i8> %
   ret void
 }
 
+define <vscale x 4 x ptr> @masked_scatter_shift_left(ptr %f, <vscale x 4 x i1> %0, <vscale x 4 x i1> %1) #0 {
+; CHECK-LABEL: masked_scatter_shift_left:
+; CHECK:       // %bb.0: // %entry
+; CHECK-NEXT:    index z0.d, x0, #8
+; CHECK-NEXT:    mov w8, #64 // =0x40
+; CHECK-NEXT:    movi v3.2d, #0000000000000000
+; CHECK-NEXT:    index z2.s, #0, w8
+; CHECK-NEXT:    mov x8, xzr
+; CHECK-NEXT:    mov z1.d, z0.d
+; CHECK-NEXT:    st1b { z3.s }, p0, [x8, z2.s, sxtw]
+; CHECK-NEXT:    incd z1.d, all, mul #8
+; CHECK-NEXT:    ret
+entry:
+  %step = tail call <vscale x 4 x i64> @llvm.stepvector.nxv8i64()
+  %step_shifted = shl <vscale x 4 x i64> %step, splat (i64 2)
+  %step_aligned = and <vscale x 4 x i64> %step_shifted, splat (i64 4294967292)
+  %pointer = getelementptr [16 x i8], ptr null, <vscale x 4 x i64> %step_aligned
----------------
Harry-Ramsey wrote:

I have cleaned up the test and removed some unnecessary arguments. Let me know if this is better?

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


More information about the llvm-commits mailing list