#include "MCTargetDesc/R600MCTargetDesc.h"
#include "R600.h"
#include "R600MachineFunctionInfo.h"
#include "R600Subtarget.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include <set>
usingnamespacellvm;
#define DEBUG_TYPE …
namespace {
struct CFStack { … };
unsigned CFStack::getLoopDepth() { … }
bool CFStack::branchStackContains(CFStack::StackItem Item) { … }
bool CFStack::requiresWorkAroundForInst(unsigned Opcode) { … }
unsigned CFStack::getSubEntrySize(CFStack::StackItem Item) { … }
void CFStack::updateMaxStackSize() { … }
void CFStack::pushBranch(unsigned Opcode, bool isWQM) { … }
void CFStack::pushLoop() { … }
void CFStack::popBranch() { … }
void CFStack::popLoop() { … }
class R600ControlFlowFinalizer : public MachineFunctionPass { … };
}
INITIALIZE_PASS_BEGIN(R600ControlFlowFinalizer, DEBUG_TYPE,
"R600 Control Flow Finalizer", false, false)
INITIALIZE_PASS_END(R600ControlFlowFinalizer, DEBUG_TYPE,
"R600 Control Flow Finalizer", false, false)
char R600ControlFlowFinalizer::ID = …;
char &llvm::R600ControlFlowFinalizerID = …;
FunctionPass *llvm::createR600ControlFlowFinalizer() { … }