spv.meshTaskShader.task
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 104

                              Capability StorageImageWriteWithoutFormat
                              Capability MeshShadingNV
                              Extension  "SPV_NV_mesh_shader"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint TaskNV 4  "main" 11 17 80 101
                              ExecutionMode 4 LocalSize 32 1 1
                              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"
                              Name 78  "Task"
                              MemberName 78(Task) 0  "dummy"
                              MemberName 78(Task) 1  "submesh"
                              Name 80  "mytask"
                              Name 101  "gl_TaskCountNV"
                              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 55(uni_image) DescriptorSet 0
                              Decorate 55(uni_image) Binding 0
                              Decorate 55(uni_image) NonReadable
                              Decorate 77 ArrayStride 8
                              MemberDecorate 78(Task) 0 PerTaskNV
                              MemberDecorate 78(Task) 0 Offset 0
                              MemberDecorate 78(Task) 1 PerTaskNV
                              MemberDecorate 78(Task) 1 Offset 8
                              Decorate 78(Task) Block
                              Decorate 101(gl_TaskCountNV) BuiltIn TaskCountNV
                              Decorate 103 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:             TypeVector 30(float) 2
              76:      6(int) Constant 3
              77:             TypeArray 75(fvec2) 76
        78(Task):             TypeStruct 75(fvec2) 77
              79:             TypePointer Output 78(Task)
      80(mytask):     79(ptr) Variable Output
              81:   30(float) Constant 1106247680
              82:   30(float) Constant 1106771968
              83:   75(fvec2) ConstantComposite 81 82
              84:             TypePointer Output 75(fvec2)
              86:   30(float) Constant 1107296256
              87:   30(float) Constant 1107558400
              88:   75(fvec2) ConstantComposite 86 87
              90:   30(float) Constant 1107820544
              91:   30(float) Constant 1108082688
              92:   75(fvec2) ConstantComposite 90 91
              94:     40(int) Constant 2
             100:             TypePointer Output 6(int)
101(gl_TaskCountNV):    100(ptr) Variable Output
             102:      6(int) Constant 32
             103:    9(ivec3) ConstantComposite 102 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
              85:     84(ptr) AccessChain 80(mytask) 41
                              Store 85 83
              89:     84(ptr) AccessChain 80(mytask) 51 41
                              Store 89 88
              93:     84(ptr) AccessChain 80(mytask) 51 51
                              Store 93 92
              95:      6(int) Load 16(gid)
              96:      6(int) UMod 95 74
              97:     84(ptr) AccessChain 80(mytask) 51 96
              98:   75(fvec2) Load 97
              99:     84(ptr) AccessChain 80(mytask) 51 94
                              Store 99 98
                              MemoryBarrier 69 73
                              ControlBarrier 74 74 73
                              Store 101(gl_TaskCountNV) 76
                              Return
                              FunctionEnd
