Original DecomposeVector.cpp by Richard Sandiford.
Modifications to make it build and be callable from pocl-workgroup.in.
Maintain parallel loop access metadata.
Call decompose vectors when loopvec is used.
Try to run the loop vectorizer on the just created parallel regions as
they should have the cleanest parallel loops. Run -mem2reg to make the
iteration counts more visible. After the loop vectorization, try to
run the SLP vectorizer to reconstruct the possible intra-kernel
vectors that were split with the DecomposeVector.
Add a barrier to the beginning and end of the loop to force the whole body of the inner loop to contain the work-item loops.
The old wivectorizer needs to run -O3 first.
Can only have -O3 once in the cmd line.
Print stderr and stdout in case the benchmark failed.
Add --filter switch to run a subset of benchmarks.
Custom CFG dot dumper for visualizing the parallel regions and
other kernel compiler related blocks better.
Cleanups. Added a comment about the mri-q.
Use the new debug CFG dumping feature.
Updated the vectorization work to CHANGES.
Added the DecomposeVectors.cpp contribution.
Inject the barriers to both (all) branches of the conditional to
reduce the peeled region also for the other part.
Added comments about the phase ordering.
Added a new WG test case for implicit barrier injection cases.
It is not safe to do this due to the tricky for-loop case where
the WIs can break out from the loop before the barrier and then
one has two or more paths where not all WIs will diverge.
Helper to chop basic blocks just for avoiding the dot to crash
when calling viewCFG().
Header changes for the previous.