<div dir="ltr"><div><div>Renato, All,<br><br></div>OK -- let's start with "omp simd" and "simd" and then discuss (in separate thread(s)) / implement other pragmas later.<br><br></div>Andrey<br><br></div>
<div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Feb 17, 2014 at 2:01 PM, Renato Golin <span dir="ltr"><<a href="mailto:renato.golin@linaro.org" target="_blank">renato.golin@linaro.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">On 15 February 2014 18:39, Renato Golin <<a href="mailto:renato.golin@linaro.org">renato.golin@linaro.org</a>> wrote:<br>

> I think pragmas simd, omp and omp simd are worth implementing as<br>
> they're well defined in other contexts. Regarding our own new ones,<br>
> pragma Clang or pragma optimize could be easily implemented locally<br>
> until we find a better way of doing that.<br>
<br>
</div>Folks,<br>
<br>
Just a follow-up. I've been discussing this issue on the GCC list, and<br>
it seems that the general feeling is the same: we should avoid old<br>
Intel or custom made pragmas and stick to Cilk/OMP 4 ones. For the<br>
internal ones (unroll, enable) we can use the old Intel ones<br>
(unroll/nounroll, vector/novector), so at least GCC anc ICC would be<br>
able to compile the same code.<br>
<br>
Andrey,<br>
<br>
The ones we could already plugin to existing metadata are:<br>
<br>
Internal ones:<br>
#pragma vector always == llvm.vectorizer.enable 1<br>
#pragma novector == llvm.vectorizer.enable 0<br>
ex: test/Transforms/LoopVectorize/X86/metadata-enable.ll<br>
<br>
#pragma unroll N == llvm.vectorizer.unroll N<br>
#pragma nounroll == llvm.vectorizer.unroll 1<br>
ex: test/Transforms/LoopVectorize/metadata-unroll.ll<br>
<br>
Cilk:<br>
#pragma simd vectorlength N == llvm.vectorizer.width N<br>
ex: test/Transforms/LoopVectorize/metadata-width.ll<br>
<br>
<br>
cheers,<br>
--renato<br>
</blockquote></div><br></div>