<div>Comments below.</div><div><br></div>On Mon, Nov 5, 2012 at 10:40 PM, Benyei, Guy <span dir="ltr"><<a href="mailto:guy.benyei@intel.com" target="_blank">guy.benyei@intel.com</a>></span> wrote:<br><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="EN-US" link="blue" vlink="purple">
<div>
<p class="MsoNormal">Hi all,<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">The attached patch contains implementation for turning OpenCL size_t and ptrdiff_t types to builtin types (on top of my previous patch).<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">This patch needs some additional polishing, like addition of size_t specific tests and changing some names.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">In spite of the issues above, I find it very important to send this mail before the LLVM developers’ conference. During the conference we will hold a SPIR BOF session, and this patch will be used to explain some aspects of the SPIR approach.<u></u><u></u></p>

<p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><br></p></div></div></blockquote><div>Index: lib/Analysis/PrintfFormatString.cpp</div><div>===================================================================</div>
<div>--- lib/Analysis/PrintfFormatString.cpp<span class="Apple-tab-span" style="white-space:pre">       </span>(revision 167378)</div><div>+++ lib/Analysis/PrintfFormatString.cpp<span class="Apple-tab-span" style="white-space:pre">     </span>(working copy)</div>
<div>@@ -478,6 +478,14 @@</div><div>     LM.setKind(LengthModifier::AsShort);</div><div>     break;</div><div> </div><div>+  case BuiltinType::SizeT:</div><div>+  case BuiltinType::PtrDiffT:</div><div>+    if (Ctx.getTargetInfo().getPointerWidth(0) == 64)</div>
<div>+      LM.setKind(LengthModifier::AsLong);</div><div>+    else</div><div>+      LM.setKind(LengthModifier::None);</div><div>+    break;</div><div>+</div><div><br></div><div>getPointerWidth(0) isn't going to return a useful answer for SPIR.  More generally, every place you call getPointerWidth is wrong.</div>
<div><br></div><div><div>Index: include/clang/Basic/TokenKinds.def</div><div>===================================================================</div><div>--- include/clang/Basic/TokenKinds.def<span class="Apple-tab-span" style="white-space:pre">  </span>(revision 167378)</div>
<div>+++ include/clang/Basic/TokenKinds.def<span class="Apple-tab-span" style="white-space:pre">        </span>(working copy)</div><div>@@ -448,6 +448,16 @@</div><div> ALIAS("write_only", __write_only    , KEYOPENCL)</div>
<div> ALIAS("read_write", __read_write    , KEYOPENCL)</div><div> KEYWORD(__builtin_astype            , KEYOPENCL)</div><div>+KEYWORD(image1d_t                   , KEYOPENCL)</div><div>+KEYWORD(image1d_array_t             , KEYOPENCL)</div>
<div>+KEYWORD(image1d_buffer_t            , KEYOPENCL)</div><div>+KEYWORD(image2d_t                   , KEYOPENCL)</div><div>+KEYWORD(image2d_array_t             , KEYOPENCL)</div><div>+KEYWORD(image3d_t                   , KEYOPENCL)</div>
<div>+KEYWORD(sampler_t                   , KEYOPENCL)</div><div>+KEYWORD(event_t                     , KEYOPENCL)</div><div>+KEYWORD(size_t                      , KEYOPENCL)</div><div>+KEYWORD(ptrdiff_t                   , KEYOPENCL)</div>
<div> </div><div> // Borland Extensions.</div><div> KEYWORD(__pascal                    , KEYALL)</div></div><div><br></div><div>Using KEYOPENCL will break existing OpenCL implementations; maybe add KEYSPIR?<br></div><div>
<br></div><div><br></div><div>This patch doesn't contain any of the interesting changes related to struct layout, IR generation, and fixing the sizeof() operator to work correctly, so it's hard to say more.</div><div>
<br></div><div>-Eli</div></div>