[llvm] [AArch64] Ensure bundle expansion of MOVPRFX gets correct implicit ops (PR #148824)
Sander de Smalen via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 15 03:51:24 PDT 2025
https://github.com/sdesmalen-arm created https://github.com/llvm/llvm-project/pull/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
>From 04a194028843dfc104727b31e5c9a30adb7fe0a8 Mon Sep 17 00:00:00 2001
From: Sander de Smalen <sander.desmalen at arm.com>
Date: Tue, 15 Jul 2025 10:44:10 +0000
Subject: [PATCH] [AArch64] Ensure bundle expansion of MOVPRFX gets correct
implicit ops
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
---
.../AArch64/AArch64ExpandPseudoInsts.cpp | 2 +-
.../AArch64/sve-pseudos-expand-undef.mir | 20 ++++++++++++++++---
2 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp b/llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp
index 36f3a670808d4..af9234bceb148 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