Skip to content

Commit 4b66c31

Browse files
nhaehnleperlfu
authored andcommitted
AMDGPU: Remove SI_DEMOTE_I1_TERMINATOR
It was misleadingly named and is redundant with SI_KILL_I1_TERMINATOR. When executing a "demote" in code that has no subsequent WQM execution, we can just replace that "demote" with a "kill". Change-Id: I502c1f0ca6f290ead00fb0e85f0e9d89e866e266
1 parent 2ad1b3f commit 4b66c31

File tree

4 files changed

+7
-11
lines changed

4 files changed

+7
-11
lines changed

llvm/lib/Target/AMDGPU/SIInsertSkips.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,6 @@ bool SIInsertSkips::kill(MachineInstr &MI) {
309309
}
310310
return true;
311311
}
312-
case AMDGPU::SI_DEMOTE_I1_TERMINATOR:
313312
case AMDGPU::SI_KILL_I1_TERMINATOR: {
314313
const MachineFunction *MF = MI.getParent()->getParent();
315314
const GCNSubtarget &ST = MF->getSubtarget<GCNSubtarget>();
@@ -487,8 +486,7 @@ bool SIInsertSkips::runOnMachineFunction(MachineFunction &MF) {
487486
break;
488487

489488
case AMDGPU::SI_KILL_F32_COND_IMM_TERMINATOR:
490-
case AMDGPU::SI_KILL_I1_TERMINATOR:
491-
case AMDGPU::SI_DEMOTE_I1_TERMINATOR: {
489+
case AMDGPU::SI_KILL_I1_TERMINATOR: {
492490
MadeChange = true;
493491
bool CanKill = kill(MI);
494492

llvm/lib/Target/AMDGPU/SIInstrInfo.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2074,7 +2074,6 @@ bool SIInstrInfo::analyzeBranch(MachineBasicBlock &MBB, MachineBasicBlock *&TBB,
20742074
case AMDGPU::SI_ELSE:
20752075
case AMDGPU::SI_KILL_I1_TERMINATOR:
20762076
case AMDGPU::SI_KILL_F32_COND_IMM_TERMINATOR:
2077-
case AMDGPU::SI_DEMOTE_I1_TERMINATOR:
20782077
// FIXME: It's messy that these need to be considered here at all.
20792078
return true;
20802079
default:
@@ -6355,7 +6354,6 @@ bool SIInstrInfo::isKillTerminator(unsigned Opcode) {
63556354
switch (Opcode) {
63566355
case AMDGPU::SI_KILL_F32_COND_IMM_TERMINATOR:
63576356
case AMDGPU::SI_KILL_I1_TERMINATOR:
6358-
case AMDGPU::SI_DEMOTE_I1_TERMINATOR:
63596357
return true;
63606358
default:
63616359
return false;

llvm/lib/Target/AMDGPU/SIInstructions.td

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -381,11 +381,12 @@ def SI_WQM_HELPER : PseudoInstSI <
381381
}
382382

383383
let Defs = [EXEC] in {
384+
// Demote: Turn a pixel shader thread into a helper lane.
385+
// Threads may exit entirely after demote if their quad has been reduced to
386+
// contain only helper lanes. (TODO: implement this)
384387
def SI_DEMOTE_I1 : SPseudoInstSI <(outs), (ins SCSrc_i1:$src, i1imm:$killvalue)> {
385388
}
386-
def SI_DEMOTE_I1_TERMINATOR : SPseudoInstSI <(outs), (ins SCSrc_i1:$src, i1imm:$killvalue)> {
387-
let isTerminator = 1;
388-
}
389+
389390
} // End Defs = [EXEC]
390391

391392
} // End Uses = [EXEC]

llvm/lib/Target/AMDGPU/SIWholeQuadMode.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1034,9 +1034,8 @@ MachineBasicBlock *SIWholeQuadMode::splitBlock(MachineBasicBlock *BB,
10341034
TermMI->setDesc(TII->get(AMDGPU::S_AND_B64_term));
10351035
break;
10361036
case AMDGPU::SI_DEMOTE_I1:
1037-
TermMI->setDesc(TII->get(AMDGPU::SI_DEMOTE_I1_TERMINATOR));
1038-
break;
1039-
case AMDGPU::SI_DEMOTE_I1_TERMINATOR:
1037+
// We come here for demotes in Exact mode, which we can just turn into kills.
1038+
TermMI->setDesc(TII->get(AMDGPU::SI_KILL_I1_TERMINATOR));
10401039
break;
10411040
default:
10421041
if (BB->getFirstTerminator() == BB->end()) {

0 commit comments

Comments
 (0)