spv.ext.meshTaskShader.task
// Module Version 10400
// Generated by (magic number): 8000b
// Id's are bound by 103

                              Capability StorageImageWriteWithoutFormat
                              Capability MeshShadingEXT
                              Extension  "SPV_EXT_mesh_shader"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint TaskEXT 4  "main" 11 17 34 39 55 80
                              ExecutionMode 4 LocalSize 32 1 1
                              Source GLSL 450
                              SourceExtension  "GL_EXT_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"
                              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 102 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 TaskPayloadWorkgroupEXT 78(Task)
      80(mytask):     79(ptr) Variable TaskPayloadWorkgroupEXT
              81:   30(float) Constant 1106247680
              82:   30(float) Constant 1106771968
              83:   75(fvec2) ConstantComposite 81 82
              84:             TypePointer TaskPayloadWorkgroupEXT 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
             101:      6(int) Constant 32
             102:    9(ivec3) ConstantComposite 101 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
                              EmitMeshTasksEXT 76 69 69 80(mytask)
                              FunctionEnd
