Hi Anton,<br><br>I'd split your point into "preserve" and "handle" parts. For "preserve" I fully agree:<br><br>Adding directive support would mostly be the work on Clang frontend side:<br>

= Choose directive representation for LLVM IR: metadata, intrinsic, etc.<br>= Add parsing of directive into parser and codegen it into selected representation<br>= Ensure standard chains of LLVM optimization passes preserve the directive information<br>
= Write a dummy LLVM pass showing how the loop naming directive could be used for diagnostics<br><br>- Good?<br><br>For handling - it depends. At this moment I'm not sure if we should directly "enforce" optimizations developers to use this diagnostics or break into their code introducing necessary changes ourselves. However, in our group we will definitely use this extension to ensure particular loops are taken onto GPU. I think we could start broader discussion after committing initial proposal.<br>
<br>Thanks,<br>- D.<br><br><div class="gmail_quote">2013/4/13 Anton Korobeynikov <span dir="ltr"><<a href="mailto:anton@korobeynikov.info" target="_blank">anton@korobeynikov.info</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">> Adding directive support would mostly be the work on Clang frontend side:<br>
> = Choose directive representation for LLVM IR: metadata, intrinsic, etc.<br>
> = Add parsing of directive into parser and codegen it into selected<br>
> representation<br>
> = Write a dummy LLVM pass showing how the loop naming directive could be<br>
> used for diagnostics<br>
</div>The main part is missing though:<br>
= Make sure all LLVM optimization passes handle / preserve this<br>
directive somehow. I'm not sure it's possible in even half of all the<br>
cases.<br>
<br>
--<br>
With best regards, Anton Korobeynikov<br>
Faculty of Mathematics and Mechanics, Saint Petersburg State University<br>
</blockquote></div><br>