Home | History | Annotate | Download | only in radeon

Lines Matching refs:BlockT

222 template <class BlockT, class InstrT, class RegiT>
225 BlockT *landBlk;
276 typedef typename FuncGTraits::NodeType BlockT;
277 typedef GraphTraits<BlockT *> BlockGTraits;
278 typedef GraphTraits<Inverse<BlockT *> > InvBlockGTraits;
280 typedef typename BlockT::iterator InstrIterator;
284 typedef std::map<BlockT *, BlockInfo *> BlockInfoMap;
288 typedef LandInformation<BlockT, InstrT, RegiT> LoopLandInfo;
291 typedef SmallVector<BlockT *, 32> BlockTSmallerVector;
304 void reversePredicateSetter(typename BlockT::iterator);
307 int patternMatch(BlockT *CurBlock);
308 int patternMatchGroup(BlockT *CurBlock);
310 int serialPatternMatch(BlockT *CurBlock);
311 int ifPatternMatch(BlockT *CurBlock);
312 int switchPatternMatch(BlockT *CurBlock);
313 int loopendPatternMatch(BlockT *CurBlock);
314 int loopPatternMatch(BlockT *CurBlock);
316 int loopbreakPatternMatch(LoopT *LoopRep, BlockT *LoopHeader);
317 int loopcontPatternMatch(LoopT *LoopRep, BlockT *LoopHeader);
318 //int loopWithoutBreak(BlockT *);
320 void handleLoopbreak (BlockT *ExitingBlock, LoopT *ExitingLoop,
321 BlockT *ExitBlock, LoopT *exitLoop, BlockT *landBlock);
322 void handleLoopcontBlock(BlockT *ContingBlock, LoopT *contingLoop,
323 BlockT *ContBlock, LoopT *contLoop);
324 bool isSameloopDetachedContbreak(BlockT *Src1Block, BlockT *Src2Block);
325 int handleJumpintoIf(BlockT *HeadBlock, BlockT *TrueBlock,
326 BlockT *FalseBlock);
327 int handleJumpintoIfImp(BlockT *HeadBlock, BlockT *TrueBlock,
328 BlockT *FalseBlock);
329 int improveSimpleJumpintoIf(BlockT *HeadBlock, BlockT *TrueBlock,
330 BlockT *FalseBlock, BlockT **LandBlockPtr);
331 void showImproveSimpleJumpintoIf(BlockT *HeadBlock, BlockT *TrueBlock,
332 BlockT *FalseBlock, BlockT *LandBlock,
334 PathToKind singlePathTo(BlockT *SrcBlock, BlockT *DstBlock,
336 BlockT *singlePathEnd(BlockT *srcBlock, BlockT *DstBlock,
338 int cloneOnSideEntryTo(BlockT *PreBlock, BlockT *SrcBlock, BlockT *DstBlock);
339 void mergeSerialBlock(BlockT *DstBlock, BlockT *srcBlock);
341 void mergeIfthenelseBlock(InstrT *BranchInstr, BlockT *CurBlock,
342 BlockT *TrueBlock, BlockT *FalseBlock,
343 BlockT *LandBlock);
344 void mergeLooplandBlock(BlockT *DstBlock, LoopLandInfo *LoopLand);
345 void mergeLoopbreakBlock(BlockT *ExitingBlock, BlockT *ExitBlock,
346 BlockT *ExitLandBlock, RegiT SetReg);
347 void settleLoopcontBlock(BlockT *ContingBlock, BlockT *ContBlock,
349 BlockT *relocateLoopcontBlock(LoopT *ParentLoopRep, LoopT *LoopRep,
350 std::set<BlockT*> &ExitBlockSet,
351 BlockT *ExitLandBlk);
352 BlockT *addLoopEndbranchBlock(LoopT *LoopRep,
355 BlockT *normalizeInfiniteLoopExit(LoopT *LoopRep);
356 void removeUnconditionalBranch(BlockT *SrcBlock);
357 void removeRedundantConditionalBranch(BlockT *SrcBlock);
358 void addDummyExitBlock(SmallVector<BlockT *, DEFAULT_VEC_SLOTS> &RetBlocks);
360 void removeSuccessor(BlockT *SrcBlock);
361 BlockT *cloneBlockForPredecessor(BlockT *CurBlock, BlockT *PredBlock);
362 BlockT *exitingBlock2ExitBlock (LoopT *LoopRep, BlockT *exitingBlock);
364 void migrateInstruction(BlockT *SrcBlock, BlockT *DstBlock,
367 void recordSccnum(BlockT *SrcBlock, int SCCNum);
368 int getSCCNum(BlockT *srcBlk);
370 void retireBlock(BlockT *DstBlock, BlockT *SrcBlock);
371 bool isRetiredBlock(BlockT *SrcBlock);
372 bool isActiveLoophead(BlockT *CurBlock);
373 bool needMigrateBlock(BlockT *Block);
375 BlockT *recordLoopLandBlock(LoopT *LoopRep, BlockT *LandBlock,
377 std::set<BlockT*> &ExitBlockSet);
378 void setLoopLandBlock(LoopT *LoopRep, BlockT *Block = NULL);
379 BlockT *getLoopLandBlock(LoopT *LoopRep);
388 bool hasBackEdge(BlockT *curBlock);
391 typename SmallVector<BlockT *, DEFAULT_VEC_SLOTS>::const_iterator IterStart,
392 typename SmallVector<BlockT *, DEFAULT_VEC_SLOTS>::const_iterator IterEnd);
393 BlockT *findNearestCommonPostDom(std::set<BlockT *>&);
394 BlockT *findNearestCommonPostDom(BlockT *Block1, BlockT *Block2);
405 SmallVector<BlockT *, DEFAULT_VEC_SLOTS> orderedBlks;
468 SmallVector<BlockT *, DEFAULT_VEC_SLOTS> retBlks;
478 BlockT* dummyExitBlk = normalizeInfiniteLoopExit(loopRep);
487 for (typename SmallVector<BlockT *, DEFAULT_VEC_SLOTS>::const_iterator
491 BlockT *curBlk = *iterBlk;
565 BlockT *curBlk;
577 typename SmallVector<BlockT *, DEFAULT_VEC_SLOTS>::const_iterator
579 typename SmallVector<BlockT *, DEFAULT_VEC_SLOTS>::const_iterator
582 typename SmallVector<BlockT *, DEFAULT_VEC_SLOTS>::const_iterator
584 BlockT *sccBeginBlk = NULL;
646 BlockT *entryBlk = FuncGTraits::nodes_begin(&func);
709 for (typename SmallVector<BlockT *, DEFAULT_VEC_SLOTS>::const_iterator
727 BlockT *bb;
730 std::vector<BlockT *> &sccNext = *sccIter;
731 for (typename std::vector<BlockT *>::const_iterator
744 BlockT *bb = &(*blockIter1);
752 template<class PassT> int CFGStructurizer<PassT>::patternMatch(BlockT *curBlk) {
773 int CFGStructurizer<PassT>::patternMatchGroup(BlockT *curBlk) {
784 int CFGStructurizer<PassT>::serialPatternMatch(BlockT *curBlk) {
789 BlockT *childBlk = *curBlk->succ_begin();
800 int CFGStructurizer<PassT>::ifPatternMatch(BlockT *curBlk) {
817 BlockT *trueBlk = CFGTraits::getTrueBranch(branchInstr);
818 BlockT *falseBlk = CFGTraits::getFalseBranch(curBlk, branchInstr);
819 BlockT *landBlk;
874 int CFGStructurizer<PassT>::switchPatternMatch(BlockT *curBlk) {
879 int CFGStructurizer<PassT>::loopendPatternMatch(BlockT *curBlk) {
903 BlockT *loopHeader = loopRep->getHeader();
919 int CFGStructurizer<PassT>::loopPatternMatch(BlockT *curBlk) {
929 BlockT *landBlk = loopLand->landBlk;
946 BlockT *loopHeader) {
961 std::set<BlockT *> exitBlkSet;
964 BlockT *exitingBlk = *iter;
965 BlockT *exitBlk = exitingBlock2ExitBlock(loopRep, exitingBlk);
978 BlockT *exitLandBlk = NULL;
994 for (typename std::set<BlockT*>::const_iterator
998 BlockT *exitBlk = *iter;
1024 BlockT *parentLoopHeader = NULL;
1060 BlockT *exitingBlk = *iterExiting;
1061 BlockT *exitBlk = exitingBlock2ExitBlock(loopRep, exitingBlk);
1062 BlockT *newExitBlk = exitBlk;
1078 BlockT *exitBlk = *iterExit;
1085 BlockT *exitBlk = *iterExit;
1108 BlockT *exitBlk = *iterExit;
1109 BlockT *exitingBlk = *iterExiting;
1123 BlockT *loopHeader) {
1125 SmallVector<BlockT *, DEFAULT_VEC_SLOTS> contBlk;
1130 BlockT *curBlk = *iter;
1139 for (typename SmallVector<BlockT *, DEFAULT_VEC_SLOTS>::iterator
1152 bool CFGStructurizer<PassT>::isSameloopDetachedContbreak(BlockT *src1Blk,
1153 BlockT *src2Blk) {
1176 int CFGStructurizer<PassT>::handleJumpintoIf(BlockT *headBlk,
1177 BlockT *trueBlk,
1178 BlockT *falseBlk) {
1190 int CFGStructurizer<PassT>::handleJumpintoIfImp(BlockT *headBlk,
1191 BlockT *trueBlk,
1192 BlockT *falseBlk) {
1194 BlockT *downBlk;
1238 void CFGStructurizer<PassT>::showImproveSimpleJumpintoIf(BlockT *headBlk,
1239 BlockT *trueBlk,
1240 BlockT *falseBlk,
1241 BlockT *landBlk,
1283 int CFGStructurizer<PassT>::improveSimpleJumpintoIf(BlockT *headBlk,
1284 BlockT *trueBlk,
1285 BlockT *falseBlk,
1286 BlockT **plandBlk) {
1290 BlockT *landBlk = *plandBlk;
1375 typename BlockT::iterator insertPos =
1419 for (typename BlockT::pred_iterator predIter = landBlk->pred_begin(),
1422 BlockT *curBlk = *predIter;
1441 void CFGStructurizer<PassT>::handleLoopbreak(BlockT *exitingBlk,
1443 BlockT *exitBlk,
1445 BlockT *landBlk) {
1470 void CFGStructurizer<PassT>::handleLoopcontBlock(BlockT *contingBlk,
1472 BlockT *contBlk,
1503 void CFGStructurizer<PassT>::mergeSerialBlock(BlockT *dstBlk, BlockT *srcBlk) {
1520 BlockT *curBlk,
1521 BlockT *trueBlk,
1522 BlockT *falseBlk,
1523 BlockT *landBlk) {
1556 typename BlockT::iterator branchInstrPos =
1594 void CFGStructurizer<PassT>::mergeLooplandBlock(BlockT *dstBlk,
1596 BlockT *landBlk = loopLand->landBlk;
1658 for (typename BlockT::succ_iterator iter = landBlk->succ_begin(),
1668 void CFGStructurizer<PassT>::reversePredicateSetter(typename BlockT::iterator I)
1693 void CFGStructurizer<PassT>::mergeLoopbreakBlock(BlockT *exitingBlk,
1694 BlockT *exitBlk,
1695 BlockT *exitLandBlk,
1708 BlockT *trueBranch = CFGTraits::getTrueBranch(branchInstr);
1719 typename BlockT::iterator branchInstrPos =
1763 void CFGStructurizer<PassT>::settleLoopcontBlock(BlockT *contingBlk,
1764 BlockT *contBlk,
1775 typename BlockT::iterator branchInstrPos =
1777 BlockT *trueBranch = CFGTraits::getTrueBranch(branchInstr);
1848 typename CFGStructurizer<PassT>::BlockT *
1851 std::set<BlockT *> &exitBlkSet,
1852 BlockT *exitLandBlk) {
1853 std::set<BlockT *> endBlkSet;
1855 // BlockT *parentLoopHead = parentLoopRep->getHeader();
1858 for (typename std::set<BlockT *>::const_iterator iter = exitBlkSet.begin(),
1861 BlockT *exitBlk = *iter;
1862 BlockT *endBlk = singlePathEnd(exitBlk, exitLandBlk);
1870 BlockT *newBlk = funcRep->CreateMachineBasicBlock();
1875 for (typename std::set<BlockT*>::const_iterator iter = endBlkSet.begin(),
1878 BlockT *endBlk = *iter;
1899 typename CFGStructurizer<PassT>::BlockT *
1917 BlockT *preExitingBlk = exitingBlks[0];
1918 BlockT *preExitBlk = exitBlks[0];
1919 BlockT *preBranchBlk = funcRep->CreateMachineBasicBlock();
1923 BlockT *newLandBlk = preBranchBlk;
1935 BlockT *curExitingBlk = exitingBlks[i];
1936 BlockT *curExitBlk = exitBlks[i];
1937 BlockT *curBranchBlk;
1998 CFGStructurizer<PassT>::singlePathTo(BlockT *srcBlk, BlockT *dstBlk,
2028 typename CFGStructurizer<PassT>::BlockT *
2029 CFGStructurizer<PassT>::singlePathEnd(BlockT *srcBlk, BlockT *dstBlk,
2042 BlockT *preBlk = srcBlk;
2063 int CFGStructurizer<PassT>::cloneOnSideEntryTo(BlockT *preBlk, BlockT *srcBlk,
2064 BlockT *dstBlk) {
2082 typename CFGStructurizer<PassT>::BlockT *
2083 CFGStructurizer<PassT>::cloneBlockForPredecessor(BlockT *curBlk,
2084 BlockT *predBlk) {
2088 BlockT *cloneBlk = CFGTraits::clone(curBlk); //clone instructions
2111 typename CFGStructurizer<PassT>::BlockT *
2113 BlockT *exitingBlk) {
2114 BlockT *exitBlk = NULL;
2116 for (typename BlockT::succ_iterator iterSucc = exitingBlk->succ_begin(),
2119 BlockT *curBlk = *iterSucc;
2132 void CFGStructurizer<PassT>::migrateInstruction(BlockT *srcBlk,
2133 BlockT *dstBlk,
2174 typename CFGStructurizer<PassT>::BlockT *
2176 BlockT *loopHeader;
2177 BlockT *loopLatch;
2180 BlockT *dummyExitBlk = NULL;
2191 typename BlockT::iterator insertPos =
2211 void CFGStructurizer<PassT>::removeUnconditionalBranch(BlockT *srcBlk) {
2227 void CFGStructurizer<PassT>::removeRedundantConditionalBranch(BlockT *srcBlk) {
2229 BlockT *blk1 = *srcBlk->succ_begin();
2230 BlockT *blk2 = *(++srcBlk->succ_begin());
2247 void CFGStructurizer<PassT>::addDummyExitBlock(SmallVector<BlockT*,
2249 BlockT *dummyExitBlk = funcRep->CreateMachineBasicBlock();
2253 for (typename SmallVector<BlockT *, DEFAULT_VEC_SLOTS>::iterator iter =
2256 BlockT *curBlk = *iter;
2267 BlockT *predb = *curBlk->pred_begin();
2283 void CFGStructurizer<PassT>::removeSuccessor(BlockT *srcBlk) {
2290 void CFGStructurizer<PassT>::recordSccnum(BlockT *srcBlk, int sccNum) {
2301 int CFGStructurizer<PassT>::getSCCNum(BlockT *srcBlk) {
2307 void CFGStructurizer<PassT>::retireBlock(BlockT *dstBlk, BlockT *srcBlk) {
2326 bool CFGStructurizer<PassT>::isRetiredBlock(BlockT *srcBlk) {
2332 bool CFGStructurizer<PassT>::isActiveLoophead(BlockT *curBlk) {
2340 BlockT *landBlk = loopLand->landBlk;
2353 bool CFGStructurizer<PassT>::needMigrateBlock(BlockT *blk) {
2368 typename CFGStructurizer<PassT>::BlockT *
2369 CFGStructurizer<PassT>::recordLoopLandBlock(LoopT *loopRep, BlockT *landBlk,
2371 std::set<BlockT *> &exitBlkSet) {
2372 SmallVector<BlockT *, DEFAULT_VEC_SLOTS> inpathBlks; //in exit path blocks
2374 for (typename BlockT::pred_iterator predIter = landBlk->pred_begin(),
2377 BlockT *curBlk = *predIter;
2385 BlockT *newLandBlk = landBlk;
2390 for (typename SmallVector<BlockT*, DEFAULT_VEC_SLOTS>::iterator iter =
2393 BlockT *curBlk = *iter;
2413 void CFGStructurizer<PassT>::setLoopLandBlock(LoopT *loopRep, BlockT *blk) {
2528 typename CFGStructurizer<PassT>::BlockT *
2537 bool CFGStructurizer<PassT>::hasBackEdge(BlockT *curBlk) {
2542 BlockT *loopHeader = loopRep->getHeader();
2555 (typename SmallVector<BlockT*, DEFAULT_VEC_SLOTS>::const_iterator iterStart,
2556 typename SmallVector<BlockT*, DEFAULT_VEC_SLOTS>::const_iterator iterEnd) {
2572 typename CFGStructurizer<PassT>::BlockT*
2573 CFGStructurizer<PassT>::findNearestCommonPostDom(BlockT *blk1, BlockT *blk2) {
2609 typename CFGStructurizer<PassT>::BlockT *
2611 (typename std::set<BlockT *> &blks) {
2612 BlockT *commonDom;
2613 typename std::set<BlockT *>::const_iterator iter = blks.begin();
2614 typename std::set<BlockT *>::const_iterator iterEnd = blks.end();
2616 BlockT *curBlk = *iter;