<html>
<head>
<meta content="text/html; charset=windows-1252"
http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
The problem is - as Sean and Pete (and others before) have pointed
out, from a users perspective they'll want to say 'clang make me
SPIR-V'. There are things in SPIR-V that are not representable by
the LLVM IR, so we'd have to add SPIR-V specific intrinsics for this
(again making the case for having it as a target more palatable),
and also there are things in the IR that won't be allowed when
producing SPIR-V (off the top of my head, in a graphics shader with
logical addressing mode a ton of pointer use is banned).<br>
<br>
I think what Sean suggested of having a very thin backend that
satisfies what a user will want when producing SPIR-V + setting up
the target specific intrinsics, and then the majority of the actual
SPIR-V production code being in lib/SPIRV sounds like a good
approach to me!<br>
<br>
Cheers,<br>
-Neil.<br>
<br>
<div class="moz-cite-prefix">On 19/05/15 00:24, Owen Anderson wrote:<br>
</div>
<blockquote cite="mid:D628AE43-2815-485F-8A07-8A9AC068463A@mac.com"
type="cite">
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1252">
<br class="">
<div>
<blockquote type="cite" class="">
<div class="">On May 18, 2015, at 2:09 PM, Sean Silva <<a
moz-do-not-send="true" href="mailto:chisophugis@gmail.com"
class="">chisophugis@gmail.com</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div style="font-family: Helvetica; font-size: 12px;
font-style: normal; font-variant: normal; font-weight:
normal; letter-spacing: normal; line-height: normal;
orphans: auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;"
class="">From an end-user's perspective it sounds like the
use case for SPIR-V though is a lot more similar to a
target though. E.g. the user is notionally telling clang
"target SPIR-V" (including doing any IR optimizations, any
special "codegenprepare" special passes, etc.), rather
than "act like you're targeting X, but
-emit-llvm/-emit-spirv instead" (which is what I imagine
from a component purely in lib/SPIRV).</div>
<br class="Apple-interchange-newline">
</div>
</blockquote>
</div>
<br class="">
<div class="">SPIR-V is a serialization format between the user’s
frontend and the vendor’s backend. From the user’s perspective,
it looks like a target. From the vendor’s perspective, it looks
like a frontend. In this sense, it is very comparable to LLVM
bitcode itself.</div>
<div class=""><br class="">
</div>
<div class="">—Owen</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
LLVM Developers mailing list
<a class="moz-txt-link-abbreviated" href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a> <a class="moz-txt-link-freetext" href="http://llvm.cs.uiuc.edu">http://llvm.cs.uiuc.edu</a>
<a class="moz-txt-link-freetext" href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a>
</pre>
</blockquote>
<br>
</body>
</html>