spv.310.comp
// Module Version 10000
// Generated by (magic number): 80008
// Id's are bound by 72

                              Capability Shader
                              Capability DeviceGroup
                              Extension  "SPV_KHR_device_group"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint GLCompute 4  "main" 53 65
                              ExecutionMode 4 LocalSize 16 32 4
                              Source ESSL 310
                              SourceExtension  "GL_EXT_device_group"
                              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 42  "i"
                              Name 48  "outs"
                              MemberName 48(outs) 0  "s"
                              MemberName 48(outs) 1  "va"
                              Name 50  "outnames"
                              Name 53  "gl_LocalInvocationID"
                              Name 65  "gl_DeviceIndex"
                              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
                              Decorate 14(outbname) Binding 0
                              MemberDecorate 23(outbna) 0 Offset 0
                              MemberDecorate 23(outbna) 1 Offset 16
                              Decorate 23(outbna) BufferBlock
                              Decorate 25(outbnamena) DescriptorSet 0
                              Decorate 25(outbnamena) Binding 0
                              Decorate 47 ArrayStride 16
                              MemberDecorate 48(outs) 0 Offset 0
                              MemberDecorate 48(outs) 1 Offset 16
                              Decorate 48(outs) BufferBlock
                              Decorate 50(outnames) DescriptorSet 0
                              Decorate 50(outnames) Binding 0
                              Decorate 53(gl_LocalInvocationID) BuiltIn LocalInvocationId
                              Decorate 65(gl_DeviceIndex) BuiltIn DeviceIndex
                              Decorate 71 BuiltIn WorkgroupSize
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 0
               7:      6(int) Constant 2
               8:      6(int) Constant 264
               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
              33:      6(int) Constant 0
              36:     15(int) Constant 17
              37:    9(float) Constant 1077936128
              38:   10(fvec3) ConstantComposite 37 37 37
              39:             TypePointer Uniform 10(fvec3)
              41:             TypePointer Workgroup 15(int)
           42(i):     41(ptr) Variable Workgroup
              47:             TypeRuntimeArray 22(fvec4)
        48(outs):             TypeStruct 15(int) 47
              49:             TypePointer Uniform 48(outs)
    50(outnames):     49(ptr) Variable Uniform
              51:             TypeVector 6(int) 3
              52:             TypePointer Input 51(ivec3)
53(gl_LocalInvocationID):     52(ptr) Variable Input
              54:             TypePointer Input 6(int)
              62:             TypePointer Uniform 15(int)
              64:             TypePointer Input 15(int)
65(gl_DeviceIndex):     64(ptr) Variable Input
              66:      6(int) Constant 1
              67:      6(int) Constant 3400
              68:      6(int) Constant 16
              69:      6(int) Constant 32
              70:      6(int) Constant 4
              71:   51(ivec3) ConstantComposite 68 69 70
         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
              34:     20(ptr) AccessChain 14(outbname) 31 32 33
              35:    9(float) Load 34
                              Store 18(s) 35
              40:     39(ptr) AccessChain 14(outbname) 31 36
                              Store 40 38
              43:     15(int) Load 42(i)
              44:    9(float) Load 18(s)
              45:   10(fvec3) CompositeConstruct 44 44 44
              46:     39(ptr) AccessChain 14(outbname) 31 43
                              Store 46 45
              55:     54(ptr) AccessChain 53(gl_LocalInvocationID) 33
              56:      6(int) Load 55
              57:    9(float) Load 18(s)
              58:   22(fvec4) CompositeConstruct 57 57 57 57
              59:     29(ptr) AccessChain 50(outnames) 26 56
                              Store 59 58
              60:      6(int) ArrayLength 14(outbname) 3
              61:     15(int) Bitcast 60
              63:     62(ptr) AccessChain 50(outnames) 16
                              Store 63 61
                              MemoryBarrier 66 8
                              MemoryBarrier 7 67
                              Return
                              FunctionEnd
