[llvm] 9d491bc - [AArch64][GlobalISel] Enable extract_vec_elt_combines postlegalization.
David Green via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 11 23:03:14 PDT 2025
Author: David Green
Date: 2025-06-12T07:03:09+01:00
New Revision: 9d491bc602c2d9730cb42fe25f0753471a3af389
URL: https://github.com/llvm/llvm-project/commit/9d491bc602c2d9730cb42fe25f0753471a3af389
DIFF: https://github.com/llvm/llvm-project/commit/9d491bc602c2d9730cb42fe25f0753471a3af389.diff
LOG: [AArch64][GlobalISel] Enable extract_vec_elt_combines postlegalization.
Added:
Modified:
llvm/lib/Target/AArch64/AArch64Combine.td
llvm/test/CodeGen/AArch64/vec-combine-compare-to-bitmask.ll
Removed:
################################################################################
diff --git a/llvm/lib/Target/AArch64/AArch64Combine.td b/llvm/lib/Target/AArch64/AArch64Combine.td
index 571e2692cbfff..ca09598464d13 100644
--- a/llvm/lib/Target/AArch64/AArch64Combine.td
+++ b/llvm/lib/Target/AArch64/AArch64Combine.td
@@ -361,7 +361,7 @@ def AArch64PostLegalizerCombiner
ptr_add_immed_chain, overlapping_and,
split_store_zero_128, undef_combines,
select_to_minmax, or_to_bsp, combine_concat_vector,
- commute_constant_to_rhs,
+ commute_constant_to_rhs, extract_vec_elt_combines,
push_freeze_to_prevent_poison_from_propagating,
combine_mul_cmlt, combine_use_vector_truncate, extmultomull]> {
}
diff --git a/llvm/test/CodeGen/AArch64/vec-combine-compare-to-bitmask.ll b/llvm/test/CodeGen/AArch64/vec-combine-compare-to-bitmask.ll
index 77483ebb2235c..d6d323530946e 100644
--- a/llvm/test/CodeGen/AArch64/vec-combine-compare-to-bitmask.ll
+++ b/llvm/test/CodeGen/AArch64/vec-combine-compare-to-bitmask.ll
@@ -596,23 +596,15 @@ define i4 @convert_to_bitmask_4xi8(<4 x i8> %vec) {
; CHECK-GI-NEXT: mov.b v1[3], w8
; CHECK-GI-NEXT: cmeq.8b v0, v0, v1
; CHECK-GI-NEXT: mvn.8b v0, v0
-; CHECK-GI-NEXT: umov.b w8, v0[0]
-; CHECK-GI-NEXT: umov.b w9, v0[1]
-; CHECK-GI-NEXT: fmov s1, w8
-; CHECK-GI-NEXT: umov.b w8, v0[2]
-; CHECK-GI-NEXT: mov.s v1[1], w9
-; CHECK-GI-NEXT: umov.b w9, v0[3]
-; CHECK-GI-NEXT: mov.s v1[2], w8
-; CHECK-GI-NEXT: mov.s v1[3], w9
-; CHECK-GI-NEXT: mov.s w8, v1[1]
-; CHECK-GI-NEXT: mov.s w9, v1[2]
-; CHECK-GI-NEXT: fmov w11, s1
-; CHECK-GI-NEXT: mov.s w10, v1[3]
+; CHECK-GI-NEXT: umov.b w8, v0[1]
+; CHECK-GI-NEXT: umov.b w9, v0[0]
+; CHECK-GI-NEXT: umov.b w10, v0[2]
+; CHECK-GI-NEXT: umov.b w11, v0[3]
; CHECK-GI-NEXT: and w8, w8, #0x1
-; CHECK-GI-NEXT: bfi w11, w8, #1, #31
-; CHECK-GI-NEXT: and w8, w9, #0x1
-; CHECK-GI-NEXT: and w9, w10, #0x1
-; CHECK-GI-NEXT: orr w8, w11, w8, lsl #2
+; CHECK-GI-NEXT: bfi w9, w8, #1, #31
+; CHECK-GI-NEXT: and w8, w10, #0x1
+; CHECK-GI-NEXT: orr w8, w9, w8, lsl #2
+; CHECK-GI-NEXT: and w9, w11, #0x1
; CHECK-GI-NEXT: orr w8, w8, w9, lsl #3
; CHECK-GI-NEXT: strb w8, [sp, #15]
; CHECK-GI-NEXT: and w0, w8, #0xff
@@ -871,28 +863,19 @@ define i6 @no_combine_illegal_num_elements(<6 x i32> %vec) {
; CHECK-GI-NEXT: cmtst.4s v1, v1, v1
; CHECK-GI-NEXT: mov.s w8, v1[1]
; CHECK-GI-NEXT: mov.s w9, v1[2]
+; CHECK-GI-NEXT: fmov w11, s1
; CHECK-GI-NEXT: mov.s w10, v1[3]
-; CHECK-GI-NEXT: mov.h v1[1], w8
-; CHECK-GI-NEXT: mov.s w8, v0[1]
-; CHECK-GI-NEXT: mov.h v1[2], w9
-; CHECK-GI-NEXT: mov.h v1[3], w10
-; CHECK-GI-NEXT: mov.h v1[4], v0[0]
-; CHECK-GI-NEXT: mov.h v1[5], w8
-; CHECK-GI-NEXT: umov.h w8, v1[1]
-; CHECK-GI-NEXT: umov.h w9, v1[0]
-; CHECK-GI-NEXT: umov.h w10, v1[2]
-; CHECK-GI-NEXT: umov.h w11, v1[3]
; CHECK-GI-NEXT: and w8, w8, #0x1
-; CHECK-GI-NEXT: bfi w9, w8, #1, #31
-; CHECK-GI-NEXT: and w8, w10, #0x1
-; CHECK-GI-NEXT: umov.h w10, v1[4]
-; CHECK-GI-NEXT: orr w8, w9, w8, lsl #2
-; CHECK-GI-NEXT: and w9, w11, #0x1
-; CHECK-GI-NEXT: umov.h w11, v1[5]
-; CHECK-GI-NEXT: orr w8, w8, w9, lsl #3
+; CHECK-GI-NEXT: bfi w11, w8, #1, #31
+; CHECK-GI-NEXT: and w8, w9, #0x1
; CHECK-GI-NEXT: and w9, w10, #0x1
+; CHECK-GI-NEXT: mov.s w10, v0[1]
+; CHECK-GI-NEXT: orr w8, w11, w8, lsl #2
+; CHECK-GI-NEXT: orr w8, w8, w9, lsl #3
+; CHECK-GI-NEXT: fmov w9, s0
+; CHECK-GI-NEXT: and w9, w9, #0x1
; CHECK-GI-NEXT: orr w8, w8, w9, lsl #4
-; CHECK-GI-NEXT: and w9, w11, #0x1
+; CHECK-GI-NEXT: and w9, w10, #0x1
; CHECK-GI-NEXT: orr w8, w8, w9, lsl #5
; CHECK-GI-NEXT: and w8, w8, #0x3f
; CHECK-GI-NEXT: strb w8, [sp, #15]
More information about the llvm-commits
mailing list