i have been working with an accelerator backend. the accelerator has large vector/simd units.
i want streaming loops (non-temporal) vectorized present in code to be offloaded to accelerator simd units.
i find polly really suitable for this.
i am thinking if the generated IR is passed to polly and then it analyzes loop to know it posses no reuse, if such loop is identified accelerator instructions are emitted…
where should i begin from to achieve the goals?
you could use Polly to generate an AstInfo. With the option
-polly-ast-detect-parallel it will mark loops in the generated Ast as
"coincident", i.e. parallel and without reuse.
If you know the vector width of your accelerator, you can use
LoopVectorizationLegality::canVectorize to determine whether you can
vectorize it. If your accelerators computational model assumes no
loop-carried dependencies, maybe LoopVectorizationLegality can be
modified to accept 'infinite' vector width.
firstname.lastname@example.org would be the mailing list for help
specically for Polly.