<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Hey Reid,<br>
    <br>
    (Donning my Khronos hat here) - it would make sense to keep the code
    together within a SPIRV backend, in that there are many helper
    constructs shared by both the reader/writer - we realised though
    that this would be a non-standard thing to do in terms of LLVM as it
    stands (EG. we have a backend that also has code that can consume
    SPIR-V and spit out LLVM IR!), so I am happy that you have suggested
    it :)<br>
    <br>
    -Neil.<br>
    <br>
    <div class="moz-cite-prefix">On 13/05/15 18:32, Reid Kleckner wrote:<br>
    </div>
    <blockquote
cite="mid:CACs=tyJcvmNhZC9FdxFEPpX6v07V3ftjAK36K8gbFXz+Pq9kFQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">On Wed, May 13, 2015 at 6:11 AM,
            David Chisnall <span dir="ltr"><<a
                moz-do-not-send="true"
                href="mailto:David.Chisnall@cl.cam.ac.uk"
                target="_blank">David.Chisnall@cl.cam.ac.uk</a>></span>
            wrote:<br>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex"><span
                class="">On 13 May 2015, at 13:56, Liu, Yaxun (Sam) <<a
                  moz-do-not-send="true" href="mailto:Yaxun.Liu@amd.com">Yaxun.Liu@amd.com</a>>
                wrote:<br>
                ><br>
                > Khronos Group SPIR WG is working on a bi-way
                converter between LLVM bitcode and SPIR-V (<a
                  moz-do-not-send="true"
                  href="https://www.khronos.org/registry/spir-v/specs/1.0/SPIRV.pdf"
                  target="_blank">https://www.khronos.org/registry/spir-v/specs/1.0/SPIRV.pdf</a>
                ) binary and is willing to upstream it to the LLVM
                project.<br>
                ><br>
                > The bi-way converter uses a common in-memory
                representation of SPIR-V. It works by breaking down a
                module to instructions and construct the translated
                module in memory then output it. Currently it supports
                SPIR-V common instructions and OpenCL specific
                instructions. Supporting of other languages is under
                consideration.<br>
                ><br>
                > We plan to refactor the LLVM to SPIR-V converter as
                a backend at llvm/lib/Target/SPIRV to allow Clang
                targeting SPIR-V. Since this will result in an
                unconventional backend which does not use
                SelectionDAG/MC, we would like to know whether it is
                acceptable. We are open to the SelectionDAG/MC approach
                if the community recommends it.<br>
                <br>
              </span>I believe that the ‘how to write a backend’
              documentation recommends against using SelectionDAG for
              generating code for other virtual instruction sets.  I
              don’t think that there’s any benefit to forcing a back end
              to use the generic infrastructure, unless it makes sense
              for that back end to do so.<br>
              <span class=""><br>
                > For the SPIR-V to LLVM converter, we are seeking
                suggestions on its proper location in the LLVM project.<br>
                <br>
              </span>To me, this is no different from any other front
              end, so should probably live in a separate repository
              (though ideally an LLVM-hosted one that is integrated with
              buildbots and kept up to date).<br>
            </blockquote>
            <div><br>
            </div>
            <div>Honestly, SPIR-V seems a little bit more like a quirky
              program serialization format. It's not a source language
              or an ISA. It might be better to treat it like the bitcode
              reader/writer and have both in one place. Something like
              lib/Target/SPIRV/(Writer|Reader)?</div>
          </div>
        </div>
      </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>