[llvm] [AArch64] Consider StreamingSVE in shouldExpandGetActiveLaneMask (PR #144722)

Kerry McLaughlin via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 20 07:43:17 PDT 2025


================
@@ -292,61 +293,117 @@ define <2 x i1> @lane_mask_v2i1_i64(i64 %index, i64 %TC) {
 }
 
 define <16 x i1> @lane_mask_v16i1_i8(i8 %index, i8 %TC) {
-; CHECK-LABEL: lane_mask_v16i1_i8:
-; CHECK:       // %bb.0:
-; CHECK-NEXT:    index z0.b, #0, #1
-; CHECK-NEXT:    dup v1.16b, w0
-; CHECK-NEXT:    uqadd v0.16b, v1.16b, v0.16b
-; CHECK-NEXT:    dup v1.16b, w1
-; CHECK-NEXT:    cmhi v0.16b, v1.16b, v0.16b
-; CHECK-NEXT:    ret
+; CHECK-SVE-LABEL: lane_mask_v16i1_i8:
+; CHECK-SVE:       // %bb.0:
+; CHECK-SVE-NEXT:    index z0.b, #0, #1
+; CHECK-SVE-NEXT:    dup v1.16b, w0
+; CHECK-SVE-NEXT:    uqadd v0.16b, v1.16b, v0.16b
+; CHECK-SVE-NEXT:    dup v1.16b, w1
+; CHECK-SVE-NEXT:    cmhi v0.16b, v1.16b, v0.16b
+; CHECK-SVE-NEXT:    ret
+;
+; CHECK-STREAMING-LABEL: lane_mask_v16i1_i8:
----------------
kmclaughlin-arm wrote:

I think this is happening because the `v16i8 uaddsat` is expanded before lowering with SVE instructions. I can try to address this in another patch.

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


More information about the llvm-commits mailing list