llvm-reduce: Fix register mask test

This was sometimes failing with "input module no longer interesting
after counting chunks" assert.
This commit is contained in:
Matt Arsenault 2022-07-20 16:52:07 -04:00
parent 31b8939ded
commit fe1678d1b2
2 changed files with 9 additions and 1 deletions

View File

@ -9,7 +9,12 @@
# CHECK-INTERESTINGNESS-SAME: $vgpr23,
# CHECK-INTERESTINGNESS-SAME: $vgpr48_vgpr49_vgpr50,
# CHECK-INTERESTINGNESS: CustomRegMask
# CHECK-INTERESTINGNESS-SAME: $sgpr35,$sgpr39,$sgpr40,$sgpr60_sgpr61,$sgpr62_sgpr63,$sgpr64_sgpr65,$sgpr80_sgpr81
# RESULT: $sgpr30_sgpr31 = SI_CALL %0, 0, CustomRegMask($vcc_lo,$agpr8,$sgpr99,$vgpr23,$vgpr48_vgpr49_vgpr50,$vgpr49_vgpr50_vgpr51)
# RESULT: $sgpr30_sgpr31 = SI_CALL %0, 0, CustomRegMask($sgpr35,$sgpr39,$sgpr40,$sgpr60_sgpr61,$sgpr62_sgpr63,$sgpr64_sgpr65,$sgpr80_sgpr81)
---
name: func
@ -18,6 +23,9 @@ body: |
bb.0:
liveins: $vgpr0, $vgpr1, $sgpr8_sgpr9
%0:sreg_64_xexec = COPY $sgpr8_sgpr9
$sgpr30_sgpr31 = SI_CALL %0:sreg_64_xexec, 0, CustomRegMask($vgpr8_vgpr9, $vgpr9_vgpr10_vgpr11,$vcc_lo,$agpr8,$sgpr99,$vgpr23,$vgpr48_vgpr49_vgpr50,$vgpr49_vgpr50_vgpr51, $vgpr52_vgpr53_vgpr54,$vcc_hi,$sgpr0_sgpr1_sgpr2_sgpr3,$sgpr4_sgpr5_sgpr6_sgpr7)
$sgpr30_sgpr31 = SI_CALL %0:sreg_64_xexec, 0, CustomRegMask($sgpr35,$sgpr39,$sgpr40,$sgpr60_sgpr61,$sgpr62_sgpr63,$sgpr64_sgpr65,$sgpr80_sgpr81)
S_ENDPGM 0
...

View File

@ -42,7 +42,7 @@ static void reduceMasksInFunction(Oracle &O, MachineFunction &MF) {
bool MadeChange = false;
for (unsigned I = 0; I != NumRegs; ++I) {
if (OldRegMask[I / 32] >> I % 32) {
if (OldRegMask[I / 32] & (1u << (I % 32))) {
if (O.shouldKeep())
NewMask[I / 32] |= 1u << (I % 32);
} else