Lines Matching defs:CFStack

28 struct CFStack {
43 CFStack(const R600Subtarget *st, CallingConv::ID cc) : ST(st),
48 bool branchStackContains(CFStack::StackItem);
50 unsigned getSubEntrySize(CFStack::StackItem Item);
58 unsigned CFStack::getLoopDepth() {
62 bool CFStack::branchStackContains(CFStack::StackItem Item) {
66 bool CFStack::requiresWorkAroundForInst(unsigned Opcode) {
103 unsigned CFStack::getSubEntrySize(CFStack::StackItem Item) {
107 case CFStack::FIRST_NON_WQM_PUSH:
120 case CFStack::FIRST_NON_WQM_PUSH_W_FULL_ENTRY:
125 case CFStack::SUB_ENTRY:
130 void CFStack::updateMaxStackSize() {
135 void CFStack::pushBranch(unsigned Opcode, bool isWQM) {
136 CFStack::StackItem Item = CFStack::ENTRY;
142 !branchStackContains(CFStack::FIRST_NON_WQM_PUSH))
143 Item = CFStack::FIRST_NON_WQM_PUSH; // May not be required on Evergreen/NI
145 // CFStack::getSubEntrySize()
149 !branchStackContains(CFStack::FIRST_NON_WQM_PUSH_W_FULL_ENTRY))
150 Item = CFStack::FIRST_NON_WQM_PUSH_W_FULL_ENTRY;
152 Item = CFStack::SUB_ENTRY;
154 Item = CFStack::ENTRY;
158 if (Item == CFStack::ENTRY)
165 void CFStack::pushLoop() {
166 LoopStack.push_back(CFStack::ENTRY);
171 void CFStack::popBranch() {
172 CFStack::StackItem Top = BranchStack.back();
173 if (Top == CFStack::ENTRY)
180 void CFStack::popLoop() {
481 CFStack CFStack(ST, MF.getFunction().getCallingConv());
514 CFStack.requiresWorkAroundForInst(MI->getOpcode());
525 CFStack.pushBranch(R600::CF_PUSH_EG);
527 CFStack.pushBranch(R600::CF_ALU_PUSH_BEFORE);
536 CFStack.pushLoop();
549 CFStack.popLoop();
587 CFStack.popBranch();
663 MFI->CFStackSize = CFStack.MaxStackSize;