Skip to content

[ARM] Remove kill flags in ReplaceConstByVPNOTs. #140082

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 22, 2025

Conversation

davemgreen
Copy link
Collaborator

This is similar to #86300. The vpr register on this branch might be killed before we reuse it.

This is similar to llvm#86300. The vpr register on this branch might be killed
before we reuse it.
@llvmbot
Copy link
Member

llvmbot commented May 15, 2025

@llvm/pr-subscribers-backend-arm

Author: David Green (davemgreen)

Changes

This is similar to #86300. The vpr register on this branch might be killed before we reuse it.


Full diff: https://github.com/llvm/llvm-project/pull/140082.diff

2 Files Affected:

  • (modified) llvm/lib/Target/ARM/MVETPAndVPTOptimisationsPass.cpp (+1)
  • (modified) llvm/test/CodeGen/Thumb2/mve-vpt-optimisations.mir (+24-1)
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
 ...

@davemgreen davemgreen merged commit 11953c6 into llvm:main May 22, 2025
13 checks passed
@davemgreen davemgreen deleted the gh-mve-killflags2 branch May 22, 2025 07:24
sivan-shani pushed a commit to sivan-shani/llvm-project that referenced this pull request Jun 3, 2025
This is similar to llvm#86300. The vpr register on this branch might be
killed before we reuse it.
ajaden-codes pushed a commit to Jaddyen/llvm-project that referenced this pull request Jun 6, 2025
This is similar to llvm#86300. The vpr register on this branch might be
killed before we reuse it.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants