[llvm] [AArch64] Tighten conditions for expanding GET_ACTIVE_LANE_MASK (PR #208962)
Usman Nadeem via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 13 14:54:35 PDT 2026
================
@@ -284,118 +322,96 @@ define <2 x i1> @lane_mask_v2i1_i64(i64 %index, i64 %TC) {
ret <2 x i1> %active.lane.mask
}
+define <1 x i1> @lane_mask_v1i1_i64(i64 %index, i64 %TC) {
+; CHECK-LABEL: lane_mask_v1i1_i64:
+; CHECK: // %bb.0:
+; CHECK-NEXT: cmp x0, x1
+; CHECK-NEXT: cset w0, lo
+; CHECK-NEXT: ret
+ %active.lane.mask = call <1 x i1> @llvm.get.active.lane.mask.v1i1.i64(i64 %index, i64 %TC)
+ ret <1 x i1> %active.lane.mask
+}
+
+define void @lane_mask_v32i1_i8(i8 %index, i8 %TC) {
+; CHECK-LABEL: lane_mask_v32i1_i8:
+; CHECK: // %bb.0:
+; CHECK-NEXT: and w9, w0, #0xff
+; CHECK-NEXT: mov w8, #255 // =0xff
+; CHECK-NEXT: and w11, w1, #0xff
+; CHECK-NEXT: add w10, w9, #16
+; CHECK-NEXT: cmp w10, #255
+; CHECK-NEXT: csel w8, w10, w8, lo
+; CHECK-NEXT: whilelo p0.b, w9, w11
+; CHECK-NEXT: whilelo p1.b, w8, w11
+; CHECK-NEXT: mov z0.b, p0/z, #-1 // =0xffffffffffffffff
+; CHECK-NEXT: mov z1.b, p1/z, #-1 // =0xffffffffffffffff
+; CHECK-NEXT: // fake_use: $q0
+; CHECK-NEXT: // fake_use: $q1
+; CHECK-NEXT: ret
----------------
UsmanNadeem wrote:
This is still better than expansion: https://godbolt.org/z/dK6cK1df4
https://github.com/llvm/llvm-project/pull/208962
More information about the llvm-commits
mailing list