SPIRV-Tools/test/opt/loop_optimizations
Victor Lomuller 50e85c865c Add LoopUtils class to gather some loop transformation support.
This patch adds LoopUtils class to handle some loop related transformations. For now it has 2 transformations that simplifies other transformations such as loop unroll or unswitch:
 - Dedicate exit blocks: this ensure that all exit basic block
   (out-of-loop basic blocks that have a predecessor in the loop)
   have all their predecessors in the loop;
 - Loop Closed SSA (LCSSA): this ensure that all definitions in a loop are used inside the loop
   or in a phi instruction in an exit basic block.

It also adds the following capabilities:
 - Loop::IsLCSSA to test if the loop is in a LCSSA form
 - Loop::GetOrCreatePreHeaderBlock that can build a loop preheader if required;
 - New methods to allow on the fly updates of the loop descriptors.
 - New methods to allow on the fly updates of the CFG analysis.
 - Instruction::SetOperand to allow expression of the index relative to Instruction::NumOperands (to be compatible with the index returned by DefUseManager::ForEachUse)
2018-02-01 15:35:09 -05:00
..
CMakeLists.txt Add LoopUtils class to gather some loop transformation support. 2018-02-01 15:35:09 -05:00
lcssa.cpp Add LoopUtils class to gather some loop transformation support. 2018-02-01 15:35:09 -05:00
loop_descriptions.cpp Add LoopUtils class to gather some loop transformation support. 2018-02-01 15:35:09 -05:00
nested_loops.cpp Add LoopUtils class to gather some loop transformation support. 2018-02-01 15:35:09 -05:00