spv.meshShaderSharedMem.mesh
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 77

                              Capability StorageImageWriteWithoutFormat
                              Capability MeshShadingNV
                              Extension  "SPV_NV_mesh_shader"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint MeshNV 4  "main" 11 17
                              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 16  "gid"
                              Name 17  "gl_WorkGroupID"
                              Name 20  "i"
                              Name 34  "mem"
                              Name 37  "block0"
                              MemberName 37(block0) 0  "uni_value"
                              Name 39  ""
                              Name 55  "uni_image"
                              Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId
                              Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId
                              MemberDecorate 37(block0) 0 Offset 0
                              Decorate 37(block0) Block
                              Decorate 39 DescriptorSet 0
                              Decorate 39 Binding 1
                              Decorate 55(uni_image) DescriptorSet 0
                              Decorate 55(uni_image) Binding 0
                              Decorate 55(uni_image) NonReadable
                              Decorate 76 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)
17(gl_WorkGroupID):     10(ptr) Variable Input
              27:      6(int) Constant 10
              28:             TypeBool
              30:             TypeFloat 32
              31:             TypeVector 30(float) 4
              32:             TypeArray 31(fvec4) 27
              33:             TypePointer Workgroup 32
         34(mem):     33(ptr) Variable Workgroup
      37(block0):             TypeStruct 6(int)
              38:             TypePointer Uniform 37(block0)
              39:     38(ptr) Variable Uniform
              40:             TypeInt 32 1
              41:     40(int) Constant 0
              42:             TypePointer Uniform 6(int)
              48:             TypePointer Workgroup 31(fvec4)
              51:     40(int) Constant 1
              53:             TypeImage 30(float) 2D nonsampled format:Unknown
              54:             TypePointer UniformConstant 53
   55(uni_image):     54(ptr) Variable UniformConstant
              59:             TypeVector 40(int) 2
              69:      6(int) Constant 1
              73:      6(int) Constant 264
              74:      6(int) Constant 2
              75:      6(int) Constant 32
              76:    9(ivec3) ConstantComposite 75 69 69
         4(main):           2 Function None 3
               5:             Label
          8(iid):      7(ptr) Variable Function
         16(gid):      7(ptr) Variable Function
           20(i):      7(ptr) Variable Function
              14:     13(ptr) AccessChain 11(gl_LocalInvocationID) 12
              15:      6(int) Load 14
                              Store 8(iid) 15
              18:     13(ptr) AccessChain 17(gl_WorkGroupID) 12
              19:      6(int) Load 18
                              Store 16(gid) 19
                              Store 20(i) 12
                              Branch 21
              21:             Label
                              LoopMerge 23 24 None
                              Branch 25
              25:             Label
              26:      6(int) Load 20(i)
              29:    28(bool) ULessThan 26 27
                              BranchConditional 29 22 23
              22:               Label
              35:      6(int)   Load 20(i)
              36:      6(int)   Load 20(i)
              43:     42(ptr)   AccessChain 39 41
              44:      6(int)   Load 43
              45:      6(int)   IAdd 36 44
              46:   30(float)   ConvertUToF 45
              47:   31(fvec4)   CompositeConstruct 46 46 46 46
              49:     48(ptr)   AccessChain 34(mem) 35
                                Store 49 47
                                Branch 24
              24:               Label
              50:      6(int)   Load 20(i)
              52:      6(int)   IAdd 50 51
                                Store 20(i) 52
                                Branch 21
              23:             Label
              56:          53 Load 55(uni_image)
              57:      6(int) Load 8(iid)
              58:     40(int) Bitcast 57
              60:   59(ivec2) CompositeConstruct 58 58
              61:      6(int) Load 16(gid)
              62:     48(ptr) AccessChain 34(mem) 61
              63:   31(fvec4) Load 62
                              ImageWrite 56 60 63
              64:          53 Load 55(uni_image)
              65:      6(int) Load 8(iid)
              66:     40(int) Bitcast 65
              67:   59(ivec2) CompositeConstruct 66 66
              68:      6(int) Load 16(gid)
              70:      6(int) IAdd 68 69
              71:     48(ptr) AccessChain 34(mem) 70
              72:   31(fvec4) Load 71
                              ImageWrite 64 67 72
                              MemoryBarrier 69 73
                              ControlBarrier 74 74 73
                              Return
                              FunctionEnd
