spv.310.comp
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.


Linked compute stage:


// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 66

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint GLCompute 4  "main" 52
                              ExecutionMode 4 LocalSize 16 32 4
                              Source ESSL 310
                              Name 4  "main"
                              Name 12  "outb"
                              MemberName 12(outb) 0  "f"
                              MemberName 12(outb) 1  "g"
                              MemberName 12(outb) 2  "h"
                              MemberName 12(outb) 3  "uns"
                              Name 14  "outbname"
                              Name 18  "s"
                              Name 23  "outbna"
                              MemberName 23(outbna) 0  "k"
                              MemberName 23(outbna) 1  "na"
                              Name 25  "outbnamena"
                              Name 41  "i"
                              Name 47  "outs"
                              MemberName 47(outs) 0  "s"
                              MemberName 47(outs) 1  "va"
                              Name 49  "outnames"
                              Name 52  "gl_LocalInvocationID"
                              Decorate 11 ArrayStride 16
                              MemberDecorate 12(outb) 0 Offset 0
                              MemberDecorate 12(outb) 1 Offset 4
                              MemberDecorate 12(outb) 2 Offset 8
                              MemberDecorate 12(outb) 3 Offset 16
                              Decorate 12(outb) BufferBlock
                              Decorate 14(outbname) DescriptorSet 0
                              MemberDecorate 23(outbna) 0 Offset 0
                              MemberDecorate 23(outbna) 1 Offset 16
                              Decorate 23(outbna) BufferBlock
                              Decorate 25(outbnamena) DescriptorSet 0
                              Decorate 46 ArrayStride 16
                              MemberDecorate 47(outs) 0 Offset 0
                              MemberDecorate 47(outs) 1 Offset 16
                              Decorate 47(outs) BufferBlock
                              Decorate 49(outnames) DescriptorSet 0
                              Decorate 52(gl_LocalInvocationID) BuiltIn LocalInvocationId
                              Decorate 65 BuiltIn WorkgroupSize
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 0
               7:      6(int) Constant 1
               8:      6(int) Constant 0
               9:             TypeFloat 32
              10:             TypeVector 9(float) 3
              11:             TypeRuntimeArray 10(fvec3)
        12(outb):             TypeStruct 9(float) 9(float) 9(float) 11
              13:             TypePointer Uniform 12(outb)
    14(outbname):     13(ptr) Variable Uniform
              15:             TypeInt 32 1
              16:     15(int) Constant 0
              17:             TypePointer Workgroup 9(float)
           18(s):     17(ptr) Variable Workgroup
              20:             TypePointer Uniform 9(float)
              22:             TypeVector 9(float) 4
      23(outbna):             TypeStruct 15(int) 22(fvec4)
              24:             TypePointer Uniform 23(outbna)
  25(outbnamena):     24(ptr) Variable Uniform
              26:     15(int) Constant 1
              29:             TypePointer Uniform 22(fvec4)
              31:     15(int) Constant 3
              32:     15(int) Constant 18
              35:     15(int) Constant 17
              36:    9(float) Constant 1077936128
              37:   10(fvec3) ConstantComposite 36 36 36
              38:             TypePointer Uniform 10(fvec3)
              40:             TypePointer Workgroup 15(int)
           41(i):     40(ptr) Variable Workgroup
              46:             TypeRuntimeArray 22(fvec4)
        47(outs):             TypeStruct 15(int) 46
              48:             TypePointer Uniform 47(outs)
    49(outnames):     48(ptr) Variable Uniform
              50:             TypeVector 6(int) 3
              51:             TypePointer Input 50(ivec3)
52(gl_LocalInvocationID):     51(ptr) Variable Input
              53:             TypePointer Input 6(int)
              60:             TypePointer Uniform 15(int)
              62:      6(int) Constant 16
              63:      6(int) Constant 32
              64:      6(int) Constant 4
              65:   50(ivec3) ConstantComposite 62 63 64
         4(main):           2 Function None 3
               5:             Label
                              ControlBarrier 7 7 8
              19:    9(float) Load 18(s)
              21:     20(ptr) AccessChain 14(outbname) 16
                              Store 21 19
              27:    9(float) Load 18(s)
              28:   22(fvec4) CompositeConstruct 27 27 27 27
              30:     29(ptr) AccessChain 25(outbnamena) 26
                              Store 30 28
              33:     20(ptr) AccessChain 14(outbname) 31 32 8
              34:    9(float) Load 33
                              Store 18(s) 34
              39:     38(ptr) AccessChain 14(outbname) 31 35
                              Store 39 37
              42:     15(int) Load 41(i)
              43:    9(float) Load 18(s)
              44:   10(fvec3) CompositeConstruct 43 43 43
              45:     38(ptr) AccessChain 14(outbname) 31 42
                              Store 45 44
              54:     53(ptr) AccessChain 52(gl_LocalInvocationID) 8
              55:      6(int) Load 54
              56:    9(float) Load 18(s)
              57:   22(fvec4) CompositeConstruct 56 56 56 56
              58:     29(ptr) AccessChain 49(outnames) 26 55
                              Store 58 57
              59:     15(int) ArrayLength 14(outbname) 3
              61:     60(ptr) AccessChain 49(outnames) 16
                              Store 61 59
                              Return
                              FunctionEnd
