[llvm] 1fbe87b - [AArch64] Ensure bundle expansion of MOVPRFX gets correct implicit ops (#148824)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 15 06:53:50 PDT 2025
Author: Sander de Smalen
Date: 2025-07-15T14:53:47+01:00
New Revision: 1fbe87b1d0edac9d9af29eb51b27747cb8c630c6
URL: https://github.com/llvm/llvm-project/commit/1fbe87b1d0edac9d9af29eb51b27747cb8c630c6
DIFF: https://github.com/llvm/llvm-project/commit/1fbe87b1d0edac9d9af29eb51b27747cb8c630c6.diff
LOG: [AArch64] Ensure bundle expansion of MOVPRFX gets correct implicit ops (#148824)
By finalizing the bundle _after_ copying over the implicit-ops, it also
adds any implicit-defs to the BUNDLE.
Fixes https://github.com/llvm/llvm-project/issues/148645
Added:
Modified:
llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp
llvm/test/CodeGen/AArch64/sve-pseudos-expand-undef.mir
Removed:
################################################################################
diff --git a/llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp b/llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp
index 07b36d20b0c6d..7de66ccbf6f29 100644
--- a/llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp
+++ b/llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp
@@ -671,8 +671,8 @@ bool AArch64ExpandPseudo::expand_DestructiveOp(
}
if (PRFX) {
- finalizeBundle(MBB, PRFX->getIterator(), MBBI->getIterator());
transferImpOps(MI, PRFX, DOP);
+ finalizeBundle(MBB, PRFX->getIterator(), MBBI->getIterator());
} else
transferImpOps(MI, DOP, DOP);
diff --git a/llvm/test/CodeGen/AArch64/sve-pseudos-expand-undef.mir b/llvm/test/CodeGen/AArch64/sve-pseudos-expand-undef.mir
index ae70f91a4ec64..a1d615c910792 100644
--- a/llvm/test/CodeGen/AArch64/sve-pseudos-expand-undef.mir
+++ b/llvm/test/CodeGen/AArch64/sve-pseudos-expand-undef.mir
@@ -12,7 +12,7 @@ body: |
bb.0:
liveins: $p0, $z0
- ; CHECK: add_x
+ ; CHECK: name: add_x
; CHECK-NOT: MOVPRFX
; CHECK: $z0 = FADD_ZPmZ_S renamable $p0, killed $z0, renamable $z0
; CHECK-NEXT: RET
@@ -21,22 +21,36 @@ body: |
...
-# CHECK: {{.*}} MSB_ZPmZZ_B {{.*}}
---
name: expand_mls_to_msb
body: |
bb.0:
+ ; CHECK: name: expand_mls_to_msb
+ ; CHECK: {{.*}} MSB_ZPmZZ_B {{.*}}
renamable $p0 = PTRUE_B 31, implicit $vg
renamable $z0 = MLS_ZPZZZ_B_UNDEF killed renamable $p0, killed renamable $z2, killed renamable $z0, killed renamable $z1
RET_ReallyLR implicit $z0
...
-# CHECK: {{.*}} MAD_ZPmZZ_B {{.*}}
---
name: expand_mla_to_mad
body: |
bb.0:
+ ; CHECK: name: expand_mla_to_mad
+ ; CHECK: {{.*}} MAD_ZPmZZ_B {{.*}}
renamable $p0 = PTRUE_B 31, implicit $vg
renamable $z0 = MLA_ZPZZZ_B_UNDEF killed renamable $p0, killed renamable $z2, killed renamable $z0, killed renamable $z1
RET_ReallyLR implicit $z0
...
+
+---
+name: expand_transfer_implicit_defs
+body: |
+ bb.0:
+ ; CHECK: name: expand_transfer_implicit_defs
+ ; CHECK: BUNDLE
+ ; CHECK-SAME: implicit-def $z0_z1_z2_z3
+ liveins: $z1, $z2, $p0
+ renamable $z0 = FADD_ZPZZ_D_UNDEF killed $p0, killed $z1, killed $z2, implicit-def $z0_z1_z2_z3
+ RET_ReallyLR implicit $z0_z1_z2_z3
+...
More information about the llvm-commits
mailing list