[llvm] [AArch64] Fold BUILD_VECTORs splats into users by using SVE immediates (PR #165559)
Benjamin Maxwell via llvm-commits
llvm-commits at lists.llvm.org
Thu Nov 6 02:55:06 PST 2025
================
@@ -385,11 +385,11 @@ define <4 x i32> @amull_v4i16_v4i32(ptr %A, ptr %B) nounwind {
;
; CHECK-SVE-LABEL: amull_v4i16_v4i32:
; CHECK-SVE: // %bb.0:
-; CHECK-SVE-NEXT: ldr d1, [x0]
-; CHECK-SVE-NEXT: ldr d2, [x1]
-; CHECK-SVE-NEXT: movi v0.2d, #0x00ffff0000ffff
-; CHECK-SVE-NEXT: smull v1.4s, v1.4h, v2.4h
-; CHECK-SVE-NEXT: and v0.16b, v1.16b, v0.16b
+; CHECK-SVE-NEXT: ldr d0, [x0]
+; CHECK-SVE-NEXT: ldr d1, [x1]
+; CHECK-SVE-NEXT: smull v0.4s, v0.4h, v1.4h
+; CHECK-SVE-NEXT: and z0.s, z0.s, #0xffff
+; CHECK-SVE-NEXT: // kill: def $q0 killed $q0 killed $z0
----------------
MacDue wrote:
It seems like it'd be easier to match before the `ConstantBuildVector` lowering, which can lower the build vector into many different forms.
https://github.com/llvm/llvm-project/pull/165559
More information about the llvm-commits
mailing list