spv.meshShaderTaskMem.mesh
// Module Version 10000
// Generated by (magic number): 80008
// Id's are bound by 58

                              Capability MeshShadingNV
                              Extension  "SPV_NV_mesh_shader"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint MeshNV 4  "main" 11 22 30
                              ExecutionMode 4 LocalSize 32 1 1
                              ExecutionMode 4 OutputVertices 81
                              ExecutionMode 4 OutputPrimitivesNV 32
                              ExecutionMode 4 OutputTrianglesNV
                              Source GLSL 450
                              SourceExtension  "GL_NV_mesh_shader"
                              Name 4  "main"
                              Name 8  "iid"
                              Name 11  "gl_LocalInvocationID"
                              Name 18  "outBlock"
                              MemberName 18(outBlock) 0  "gid5"
                              MemberName 18(outBlock) 1  "gid6"
                              Name 22  "myblk"
                              Name 28  "taskBlock"
                              MemberName 28(taskBlock) 0  "gid1"
                              MemberName 28(taskBlock) 1  "gid2"
                              Name 30  "mytask"
                              Name 36  "bufferBlock"
                              MemberName 36(bufferBlock) 0  "gid3"
                              MemberName 36(bufferBlock) 1  "gid4"
                              Name 38  "mybuf"
                              Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId
                              Decorate 18(outBlock) Block
                              Decorate 22(myblk) Location 0
                              Decorate 27 ArrayStride 4
                              MemberDecorate 28(taskBlock) 0 PerTaskNV
                              MemberDecorate 28(taskBlock) 0 Offset 0
                              MemberDecorate 28(taskBlock) 1 PerTaskNV
                              MemberDecorate 28(taskBlock) 1 Offset 16
                              Decorate 28(taskBlock) Block
                              Decorate 35 ArrayStride 4
                              MemberDecorate 36(bufferBlock) 0 Offset 0
                              MemberDecorate 36(bufferBlock) 1 Offset 16
                              Decorate 36(bufferBlock) BufferBlock
                              Decorate 38(mybuf) DescriptorSet 0
                              Decorate 38(mybuf) Binding 0
                              Decorate 57 BuiltIn WorkgroupSize
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 0
               7:             TypePointer Function 6(int)
               9:             TypeVector 6(int) 3
              10:             TypePointer Input 9(ivec3)
11(gl_LocalInvocationID):     10(ptr) Variable Input
              12:      6(int) Constant 0
              13:             TypePointer Input 6(int)
              16:             TypeFloat 32
              17:             TypeVector 16(float) 4
    18(outBlock):             TypeStruct 16(float) 17(fvec4)
              19:      6(int) Constant 81
              20:             TypeArray 18(outBlock) 19
              21:             TypePointer Output 20
       22(myblk):     21(ptr) Variable Output
              24:             TypeInt 32 1
              25:     24(int) Constant 0
              26:      6(int) Constant 2
              27:             TypeArray 16(float) 26
   28(taskBlock):             TypeStruct 27 17(fvec4)
              29:             TypePointer Input 28(taskBlock)
      30(mytask):     29(ptr) Variable Input
              31:     24(int) Constant 1
              32:             TypePointer Input 16(float)
              35:             TypeArray 16(float) 26
 36(bufferBlock):             TypeStruct 35 17(fvec4)
              37:             TypePointer Uniform 36(bufferBlock)
       38(mybuf):     37(ptr) Variable Uniform
              39:             TypePointer Uniform 16(float)
              43:             TypePointer Output 16(float)
              46:             TypePointer Input 17(fvec4)
              49:             TypePointer Uniform 17(fvec4)
              53:             TypePointer Output 17(fvec4)
              55:      6(int) Constant 32
              56:      6(int) Constant 1
              57:    9(ivec3) ConstantComposite 55 56 56
         4(main):           2 Function None 3
               5:             Label
          8(iid):      7(ptr) Variable Function
              14:     13(ptr) AccessChain 11(gl_LocalInvocationID) 12
              15:      6(int) Load 14
                              Store 8(iid) 15
              23:      6(int) Load 8(iid)
              33:     32(ptr) AccessChain 30(mytask) 25 31
              34:   16(float) Load 33
              40:     39(ptr) AccessChain 38(mybuf) 25 31
              41:   16(float) Load 40
              42:   16(float) FAdd 34 41
              44:     43(ptr) AccessChain 22(myblk) 23 25
                              Store 44 42
              45:      6(int) Load 8(iid)
              47:     46(ptr) AccessChain 30(mytask) 31
              48:   17(fvec4) Load 47
              50:     49(ptr) AccessChain 38(mybuf) 31
              51:   17(fvec4) Load 50
              52:   17(fvec4) FAdd 48 51
              54:     53(ptr) AccessChain 22(myblk) 45 31
                              Store 54 52
                              Return
                              FunctionEnd
