[libre-riscv-dev] whole stack of vulkan llvm spirv stuff

Jacob Lifshay programmerjake at gmail.com
Fri Sep 13 11:56:46 BST 2019


On Fri, Sep 13, 2019, 03:38 Luke Kenneth Casson Leighton <lkcl at lkcl.net>
wrote:

> ok so i decided to compile up the amdgpu spirv compiler and spvgen
> etc. etc. to see what it can do (and it can convert glsl fragment
> shaders).  i copied the example from the spir-v specification PDF
> version 1.00 revision 12, and ran these two commands:
>
> ./builds/amd64/llpc/amdllpc --emit-llvm ./example/khronos.spec.vert >
> example/khronos.spec.log.llvm
> ./builds/amd64/llpc/amdllpc -v ./example/khronos.spec.vert >
> example/khronos.spec.log
>
> what i was looking for was:
>
> * what datatypes appear to be supported (v4float, int, definitely)
> * whether operands are polymorphic (they are)
> * whether the output was capable of recognising vectors, creating
> arrays and so on (it is).
>
> so i'm wondering what the issue is.
>

the issue is that the shaders are still scalar in the sense that SV is
scalar if VL (but not SUBVL) were hardwired as 1. so, it supports short
vectors (which are used for 2d, 3d, and 4d coordinates rather than for
parallelism), but doesn't do whole-function vectorization with all the
extra code to handle converting branching into predication. the
whole-function vectorization is what I've been building into Kazan's spir-v
translator.

Jacob


More information about the libre-riscv-dev mailing list