[llvm] 11953c6 - [ARM] Remove kill flags in ReplaceConstByVPNOTs. (#140082)
via llvm-commits
llvm-commits at lists.llvm.org
Thu May 22 00:24:04 PDT 2025
Author: David Green
Date: 2025-05-22T08:24:01+01:00
New Revision: 11953c647b9332d60f9a98cd72388786329e486b
URL: https://github.com/llvm/llvm-project/commit/11953c647b9332d60f9a98cd72388786329e486b
DIFF: https://github.com/llvm/llvm-project/commit/11953c647b9332d60f9a98cd72388786329e486b.diff
LOG: [ARM] Remove kill flags in ReplaceConstByVPNOTs. (#140082)
This is similar to #86300. The vpr register on this branch might be
killed before we reuse it.
Added:
Modified:
llvm/lib/Target/ARM/MVETPAndVPTOptimisationsPass.cpp
llvm/test/CodeGen/Thumb2/mve-vpt-optimisations.mir
Removed:
################################################################################
diff --git a/llvm/lib/Target/ARM/MVETPAndVPTOptimisationsPass.cpp b/llvm/lib/Target/ARM/MVETPAndVPTOptimisationsPass.cpp
index 18d5c232378a7..0b4e7dfebe369 100644
--- a/llvm/lib/Target/ARM/MVETPAndVPTOptimisationsPass.cpp
+++ b/llvm/lib/Target/ARM/MVETPAndVPTOptimisationsPass.cpp
@@ -984,6 +984,7 @@ bool MVETPAndVPTOptimisations::ReplaceConstByVPNOTs(MachineBasicBlock &MBB,
if (MRI->hasOneUse(GPR))
DeadInstructions.insert(MRI->getVRegDef(GPR));
}
+ MRI->clearKillFlags(LastVPTReg);
LLVM_DEBUG(dbgs() << "Adding VPNot: " << *VPNot << " to replace use at "
<< Instr);
VPR = NewVPR;
diff --git a/llvm/test/CodeGen/Thumb2/mve-vpt-optimisations.mir b/llvm/test/CodeGen/Thumb2/mve-vpt-optimisations.mir
index f9b175ed80fbf..e174934abdbfc 100644
--- a/llvm/test/CodeGen/Thumb2/mve-vpt-optimisations.mir
+++ b/llvm/test/CodeGen/Thumb2/mve-vpt-optimisations.mir
@@ -1042,5 +1042,28 @@ body: |
%5:mqpr = IMPLICIT_DEF
%6:mqpr = MVE_VORR %5:mqpr, %5:mqpr, 1, killed %4, $noreg, undef %6
tBX_RET 14 /* CC::al */, $noreg, implicit %5:mqpr
-
+...
+---
+name: kill_flags_2
+alignment: 4
+body: |
+ bb.0:
+ ; CHECK-LABEL: name: kill_flags_2
+ ; CHECK: [[COPY:%[0-9]+]]:mqpr = COPY $q0
+ ; CHECK-NEXT: [[t2MOVi:%[0-9]+]]:rgpr = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vccr = COPY [[t2MOVi]]
+ ; CHECK-NEXT: [[MVE_VHADDs8_:%[0-9]+]]:mqpr = MVE_VHADDs8 [[COPY]], [[COPY]], 1, [[COPY1]], $noreg, [[COPY]]
+ ; CHECK-NEXT: [[MVE_VPNOT:%[0-9]+]]:vccr = MVE_VPNOT [[COPY1]], 0, $noreg, $noreg
+ ; CHECK-NEXT: [[MVE_VSLIimm8_:%[0-9]+]]:mqpr = MVE_VSLIimm8 [[MVE_VHADDs8_]], [[COPY]], 0, 1, [[MVE_VPNOT]], $noreg
+ ; CHECK-NEXT: $q0 = COPY [[MVE_VSLIimm8_]]
+ ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $q0
+ %0:mqpr = COPY $q0
+ %1:rgpr = t2MOVi 0, 14, $noreg, $noreg
+ %2:vccr = COPY %1:rgpr
+ %3:mqpr = MVE_VHADDs8 %0:mqpr, %0:mqpr, 1, killed %2:vccr, $noreg, %0:mqpr
+ %4:rgpr = t2MOVi16 65535, 14, $noreg
+ %5:vccr = COPY %4:rgpr
+ %6:mqpr = MVE_VSLIimm8 %3:mqpr, %0:mqpr, 0, 1, killed %5:vccr, $noreg
+ $q0 = COPY %6:mqpr
+ tBX_RET 14, $noreg, implicit $q0
...
More information about the llvm-commits
mailing list