[llvm] [AArch64] Extend performActiveLaneMaskCombine for more than two extracts (PR #146725)
David Sherwood via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 3 06:54:55 PDT 2025
================
@@ -167,6 +225,35 @@ define void @test_fixed_extract(i64 %i, i64 %n) #0 {
ret void
}
+; Negative test where the number of extracts is right, but they cannot be combined because
+; there is not an extract for each part
+define void @test_2x2bit_2x4bit_mask(i64 %i, i64 %n) #0 {
----------------
david-arm wrote:
Perhaps add a negative test where there are the correct number of uses, but one of the uses is a duplicate, i.e.
%r = call <vscale x 8 x i1> @llvm.get.active.lane.mask.nxv8i1.i64(i64 %i, i64 %n)
%v0 = call <vscale x 2 x i1> @llvm.vector.extract.nxv2i1.nxv8i1.i64(<vscale x 8 x i1> %r, i64 6)
%v1 = call <vscale x 2 x i1> @llvm.vector.extract.nxv2i1.nxv8i1.i64(<vscale x 8 x i1> %r, i64 4)
%v2 = call <vscale x 2 x i1> @llvm.vector.extract.nxv2i1.nxv8i1.i64(<vscale x 8 x i1> %r, i64 2)
%v3 = call <vscale x 2 x i1> @llvm.vector.extract.nxv2i1.nxv8i1.i64(<vscale x 8 x i1> %r, i64 2)
tail call void @use(<vscale x 2 x i1> %v3, <vscale x 2 x i1> %v2, <vscale x 2 x i1> %v1, <vscale x 2 x i1> %v0)
https://github.com/llvm/llvm-project/pull/146725
More information about the llvm-commits
mailing list