mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-02 04:24:22 +00:00
Revert "R600: Add work-around for the CF stack entry HW bug"
This reverts commit 35b8331cad6eb512a2506adbc394201181da94ba. The -debug-only flag for llc doesn't appear to be available in all build configurations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199845 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -73,44 +73,6 @@ bool CFStack::branchStackContains(CFStack::StackItem Item) {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CFStack::requiresWorkAroundForInst(unsigned Opcode) {
|
||||
if (Opcode == AMDGPU::CF_ALU_PUSH_BEFORE && ST.hasCaymanISA() &&
|
||||
getLoopDepth() > 1)
|
||||
return true;
|
||||
|
||||
if (!ST.hasCFAluBug())
|
||||
return false;
|
||||
|
||||
switch(Opcode) {
|
||||
default: return false;
|
||||
case AMDGPU::CF_ALU_PUSH_BEFORE:
|
||||
case AMDGPU::CF_ALU_ELSE_AFTER:
|
||||
case AMDGPU::CF_ALU_BREAK:
|
||||
case AMDGPU::CF_ALU_CONTINUE:
|
||||
if (CurrentSubEntries == 0)
|
||||
return false;
|
||||
if (ST.getWavefrontSize() == 64) {
|
||||
// We are being conservative here. We only require this work-around if
|
||||
// CurrentSubEntries > 3 &&
|
||||
// (CurrentSubEntries % 4 == 3 || CurrentSubEntries % 4 == 0)
|
||||
//
|
||||
// We have to be conservative, because we don't know for certain that
|
||||
// our stack allocation algorithm for Evergreen/NI is correct. Applying this
|
||||
// work-around when CurrentSubEntries > 3 allows us to over-allocate stack
|
||||
// resources without any problems.
|
||||
return CurrentSubEntries > 3;
|
||||
} else {
|
||||
assert(ST.getWavefrontSize() == 32);
|
||||
// We are being conservative here. We only require the work-around if
|
||||
// CurrentSubEntries > 7 &&
|
||||
// (CurrentSubEntries % 8 == 7 || CurrentSubEntries % 8 == 0)
|
||||
// See the comment on the wavefront size == 64 case for why we are
|
||||
// being conservative.
|
||||
return CurrentSubEntries > 7;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
unsigned CFStack::getSubEntrySize(CFStack::StackItem Item) {
|
||||
switch(Item) {
|
||||
default:
|
||||
@ -510,12 +472,9 @@ public:
|
||||
if (MI->getOpcode() == AMDGPU::CF_ALU)
|
||||
LastAlu.back() = MI;
|
||||
I++;
|
||||
bool RequiresWorkAround =
|
||||
CFStack.requiresWorkAroundForInst(MI->getOpcode());
|
||||
switch (MI->getOpcode()) {
|
||||
case AMDGPU::CF_ALU_PUSH_BEFORE:
|
||||
if (RequiresWorkAround) {
|
||||
DEBUG(dbgs() << "Applying bug work-around for ALU_PUSH_BEFORE\n");
|
||||
if (ST.hasCaymanISA() && CFStack.getLoopDepth() > 1) {
|
||||
BuildMI(MBB, MI, MBB.findDebugLoc(MI), TII->get(AMDGPU::CF_PUSH_EG))
|
||||
.addImm(CfCount + 1)
|
||||
.addImm(1);
|
||||
|
Reference in New Issue
Block a user