This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: SPIR-V and GCC
- From: David Malcolm <dmalcolm at redhat dot com>
- To: BogDan <bog_dan_ro at yahoo dot com>
- Cc: "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>
- Date: Wed, 04 Mar 2015 10:22:04 -0500
- Subject: Re: SPIR-V and GCC
- Authentication-results: sourceware.org; auth=none
- References: <1073861213 dot 2619871 dot 1425479768376 dot JavaMail dot yahoo at mail dot yahoo dot com>
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
> SPIR-V!
> It will be fantastic to use only one compiler collection for CPU and
> for GPU compute&graphics!
>
> Cheers,
>
> BogDan.
> [1] https://www.khronos.org/registry/spir-v/
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
form.
(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?)
Dave
[1] e.g. http://en.wikipedia.org/wiki/Aliens_versus_Predator_%
281999_video_game%29