Lines Matching refs:CFStack
53 struct CFStack { struct
68 CFStack(const R600Subtarget *st, CallingConv::ID cc) : ST(st), in CFStack() argument
73 bool branchStackContains(CFStack::StackItem);
75 unsigned getSubEntrySize(CFStack::StackItem Item);
83 unsigned CFStack::getLoopDepth() { in getLoopDepth()
87 bool CFStack::branchStackContains(CFStack::StackItem Item) { in branchStackContains()
88 for (std::vector<CFStack::StackItem>::const_iterator I = BranchStack.begin(), in branchStackContains()
96 bool CFStack::requiresWorkAroundForInst(unsigned Opcode) { in requiresWorkAroundForInst()
134 unsigned CFStack::getSubEntrySize(CFStack::StackItem Item) { in getSubEntrySize()
138 case CFStack::FIRST_NON_WQM_PUSH: in getSubEntrySize()
152 case CFStack::FIRST_NON_WQM_PUSH_W_FULL_ENTRY: in getSubEntrySize()
157 case CFStack::SUB_ENTRY: in getSubEntrySize()
162 void CFStack::updateMaxStackSize() { in updateMaxStackSize()
168 void CFStack::pushBranch(unsigned Opcode, bool isWQM) { in pushBranch()
169 CFStack::StackItem Item = CFStack::ENTRY; in pushBranch()
175 !branchStackContains(CFStack::FIRST_NON_WQM_PUSH)) in pushBranch()
176 Item = CFStack::FIRST_NON_WQM_PUSH; // May not be required on Evergreen/NI in pushBranch()
182 !branchStackContains(CFStack::FIRST_NON_WQM_PUSH_W_FULL_ENTRY)) in pushBranch()
183 Item = CFStack::FIRST_NON_WQM_PUSH_W_FULL_ENTRY; in pushBranch()
185 Item = CFStack::SUB_ENTRY; in pushBranch()
187 Item = CFStack::ENTRY; in pushBranch()
191 if (Item == CFStack::ENTRY) in pushBranch()
198 void CFStack::pushLoop() { in pushLoop()
199 LoopStack.push_back(CFStack::ENTRY); in pushLoop()
204 void CFStack::popBranch() { in popBranch()
205 CFStack::StackItem Top = BranchStack.back(); in popBranch()
206 if (Top == CFStack::ENTRY) in popBranch()
213 void CFStack::popLoop() { in popLoop()
516 CFStack CFStack(ST, MF.getFunction().getCallingConv()); in runOnMachineFunction() local
549 CFStack.requiresWorkAroundForInst(MI->getOpcode()); in runOnMachineFunction()
560 CFStack.pushBranch(R600::CF_PUSH_EG); in runOnMachineFunction()
562 CFStack.pushBranch(R600::CF_ALU_PUSH_BEFORE); in runOnMachineFunction()
571 CFStack.pushLoop(); in runOnMachineFunction()
584 CFStack.popLoop(); in runOnMachineFunction()
622 CFStack.popBranch(); in runOnMachineFunction()
699 MFI->CFStackSize = CFStack.MaxStackSize; in runOnMachineFunction()