mirror of
https://github.com/KhronosGroup/SPIRV-Tools
synced 2024-11-24 20:40:13 +00:00
1254335d13
Loop unswitching is unswitching the conditional branch that creates the back-edge. In the version of the loop, where the bachedge is not taken, there is no back-edge. This is what causes the validator to complain. The solution I will go with will be to now unswitch a condition with a back-edge. At this time we do not now if loop unswitching is used. We do not include it in the optimization sets provided, nor is it used in glslang's set. When there are opportunities and no breaks from the loop, the loop with either be a single iteration loop, or an infinite loop. There is no performance advantage to performing loop unswitching in either of those cases. If there is a break, maintaining structured control flow will be tricky. Unless we see a clear advantage to handling these case, I would go with the safer simpler solution. Fixes #2201. |
||
---|---|---|
.. | ||
CMakeLists.txt | ||
dependence_analysis_helpers.cpp | ||
dependence_analysis.cpp | ||
fusion_compatibility.cpp | ||
fusion_illegal.cpp | ||
fusion_legal.cpp | ||
fusion_pass.cpp | ||
hoist_all_loop_types.cpp | ||
hoist_double_nested_loops.cpp | ||
hoist_from_independent_loops.cpp | ||
hoist_simple_case.cpp | ||
hoist_single_nested_loops.cpp | ||
hoist_without_preheader.cpp | ||
lcssa.cpp | ||
loop_descriptions.cpp | ||
loop_fission.cpp | ||
nested_loops.cpp | ||
pch_test_opt_loop.cpp | ||
pch_test_opt_loop.h | ||
peeling_pass.cpp | ||
peeling.cpp | ||
unroll_assumptions.cpp | ||
unroll_simple.cpp | ||
unswitch.cpp |