llvm-project/llvm/test/Transforms/IROutliner
Andrew Litteken c172f1ad39 [IROutliner] Adding supports for multiple exits
When we start outlining across branches, there is the possibility that we will have two different blocks with different output locations, or a single branch that goes to two blocks outside of the region that is being outlined. While the CodeExtractor provides most of the mechanisms by using the return value of the extracted function as the input to a switch statement to correctly branch to the correct location, we need special handling for different output schemas to each location.

This is done by repeating the existing storing scheme for each different exit block. We have a map from the return values used, to the basic block that is used to store the outputs for that particular exit block within the outlined function. Then if needed, we create a switch statement for each return block to branch to the correct set of stored outputs.

Reviewers: paquette

Differential Revision: https://reviews.llvm.org/D106993
2021-09-08 08:58:07 -07:00
..
extraction.ll
illegal-allocas.ll
illegal-assumes.ll
illegal-branches.ll [IRSim] Adding support for recognizing branch similarity 2021-09-06 11:55:38 -07:00
illegal-callbr.ll
illegal-catchpad.ll [IRSim] Adding support for recognizing branch similarity 2021-09-06 11:55:38 -07:00
illegal-cleanup.ll [IRSim] Adding support for recognizing branch similarity 2021-09-06 11:55:38 -07:00
illegal-frozen.ll
illegal-indirect-calls.ll
illegal-invoke.ll
illegal-landingpad.ll [IRSim] Adding support for recognizing branch similarity 2021-09-06 11:55:38 -07:00
illegal-memcpy.ll
illegal-memmove.ll
illegal-memset.ll
illegal-phi-nodes.ll
illegal-vaarg.ll
legal-debug.ll [IROutliner] Adding DebugInfo handling for IR Outlined Functions 2021-06-15 10:57:08 -05:00
opt-remarks.ll [IROutliner] Adding outlining for single entry/single exit multiblock regions 2021-09-07 08:51:54 -07:00
outlining-across-branch.ll [IROutliner] Adding outlining for single entry/single exit multiblock regions 2021-09-07 08:51:54 -07:00
outlining-address-taken.ll
outlining-basic-branches.ll [IROutliner] Adding outlining for single entry/single exit multiblock regions 2021-09-07 08:51:54 -07:00
outlining-bitcasts.ll [IROutliner] Changing outliner to prioritize reductions on assembly rather than IR instruction 2021-08-30 13:43:08 -07:00
outlining-calls.ll
outlining-commutative-fp.ll
outlining-commutative-operands-opposite-order.ll [IRSim][IROutliner] Canonicalizing commutative value numbering between similarity sections. 2021-08-27 15:02:56 -07:00
outlining-commutative.ll
outlining-compatible-and-attribute-transfer.ll
outlining-compatible-or-attribute-transfer.ll
outlining-constants-vs-registers.ll
outlining-cost-model.ll
outlining-debug-statements.ll
outlining-different-constants.ll
outlining-different-globals.ll
outlining-different-output-blocks.ll [CodeExtractor] Preserve topological order for the return blocks. 2021-08-25 08:09:01 -07:00
outlining-different-structure.ll
outlining-exits-to-phi-node.ll [IROutliner] Adding supports for multiple exits 2021-09-08 08:58:07 -07:00
outlining-gep.ll
outlining-isomorphic-predicates.ll
outlining-multiple-exits-diff-outputs.ll [IROutliner] Adding supports for multiple exits 2021-09-08 08:58:07 -07:00
outlining-multiple-exits-one-output-set.ll [IROutliner] Adding supports for multiple exits 2021-09-08 08:58:07 -07:00
outlining-multiple-exits.ll [IROutliner] Adding supports for multiple exits 2021-09-08 08:58:07 -07:00
outlining-odr.ll
outlining-remapped-outputs.ll
outlining-same-constants.ll
outlining-same-globals.ll
outlining-same-output-blocks.ll [CodeExtractor] Preserve topological order for the return blocks. 2021-08-25 08:09:01 -07:00
outlining-swift-error.ll
region-end-of-module.ll [IROutliner] Adding outlining for single entry/single exit multiblock regions 2021-09-07 08:51:54 -07:00