This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: SPIR-V and GCC

On Wed, 2015-03-04 at 14:36 +0000, BogDan wrote:
> Hello folks,
> Probably is a little bit too early, but I'd like to ask if there is
> any chance to use gcc to produce SPIR-V [1]. 
> It will be just great if we'll be able to write our shaders in e.g.
> C/C++/(any language supported by gcc) and use GCC to compile them as
> It will be fantastic to use only one compiler collection for CPU and
> for GPU compute&graphics!
> Cheers,
> BogDan.
> [1]

I work on gcc, but in a former life I was a game developer [1], so this
piqued my interest :)

A few questions:

  (A) Does SPIR-V have an assembler?  The URL you posted talks about it
being a binary format, but the example in there shows a "disassembled"
textual form.  The reason I ask is that the internals of gcc's backend
expect to be writing out "assembler", which then goes through an
assembler program to produce a binary.  In theory I guess one could have
the "assembler" format generated by the backend be binary, but it's
likely to be *much* easier to hack on if there's an intermediate textual

  (B) Are you thinking about this for primarly ahead-of-time
compilation, or are you interested in just-in-time compilation to
SPIR-V?  I ask since I maintain the new "libgccjit" feature in GCC 5.
One of the current assumptions in libgccjit is that host==target, but I
hope to relax that for gcc 6 so that libgccjit could e.g. generate code
for a GPU.  Another gcc 6 possibility could be multi-target support for
libgccjit, so that you can populate a gcc_jit_context with code, then
have it generate machine code for both the CPU and for the GPU (mostly
just thinking aloud here).

  (C) (probably most important) Is a SPIR-V backend something you'd be
up for working on?  Any other volunteers out there?
(Maybe a GSoC thing?)


[1] e.g.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]