Skip to content

Commit 11953c6

Browse files
authored
[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.
1 parent de09523 commit 11953c6

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

llvm/lib/Target/ARM/MVETPAndVPTOptimisationsPass.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -984,6 +984,7 @@ bool MVETPAndVPTOptimisations::ReplaceConstByVPNOTs(MachineBasicBlock &MBB,
984984
if (MRI->hasOneUse(GPR))
985985
DeadInstructions.insert(MRI->getVRegDef(GPR));
986986
}
987+
MRI->clearKillFlags(LastVPTReg);
987988
LLVM_DEBUG(dbgs() << "Adding VPNot: " << *VPNot << " to replace use at "
988989
<< Instr);
989990
VPR = NewVPR;

llvm/test/CodeGen/Thumb2/mve-vpt-optimisations.mir

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1042,5 +1042,28 @@ body: |
10421042
%5:mqpr = IMPLICIT_DEF
10431043
%6:mqpr = MVE_VORR %5:mqpr, %5:mqpr, 1, killed %4, $noreg, undef %6
10441044
tBX_RET 14 /* CC::al */, $noreg, implicit %5:mqpr
1045-
1045+
...
1046+
---
1047+
name: kill_flags_2
1048+
alignment: 4
1049+
body: |
1050+
bb.0:
1051+
; CHECK-LABEL: name: kill_flags_2
1052+
; CHECK: [[COPY:%[0-9]+]]:mqpr = COPY $q0
1053+
; CHECK-NEXT: [[t2MOVi:%[0-9]+]]:rgpr = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
1054+
; CHECK-NEXT: [[COPY1:%[0-9]+]]:vccr = COPY [[t2MOVi]]
1055+
; CHECK-NEXT: [[MVE_VHADDs8_:%[0-9]+]]:mqpr = MVE_VHADDs8 [[COPY]], [[COPY]], 1, [[COPY1]], $noreg, [[COPY]]
1056+
; CHECK-NEXT: [[MVE_VPNOT:%[0-9]+]]:vccr = MVE_VPNOT [[COPY1]], 0, $noreg, $noreg
1057+
; CHECK-NEXT: [[MVE_VSLIimm8_:%[0-9]+]]:mqpr = MVE_VSLIimm8 [[MVE_VHADDs8_]], [[COPY]], 0, 1, [[MVE_VPNOT]], $noreg
1058+
; CHECK-NEXT: $q0 = COPY [[MVE_VSLIimm8_]]
1059+
; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $q0
1060+
%0:mqpr = COPY $q0
1061+
%1:rgpr = t2MOVi 0, 14, $noreg, $noreg
1062+
%2:vccr = COPY %1:rgpr
1063+
%3:mqpr = MVE_VHADDs8 %0:mqpr, %0:mqpr, 1, killed %2:vccr, $noreg, %0:mqpr
1064+
%4:rgpr = t2MOVi16 65535, 14, $noreg
1065+
%5:vccr = COPY %4:rgpr
1066+
%6:mqpr = MVE_VSLIimm8 %3:mqpr, %0:mqpr, 0, 1, killed %5:vccr, $noreg
1067+
$q0 = COPY %6:mqpr
1068+
tBX_RET 14, $noreg, implicit $q0
10461069
...

0 commit comments

Comments
 (0)