spv.atomic.comp
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 73

                              Capability Shader
                              Capability AtomicStorage
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint GLCompute 4  "main"
                              ExecutionMode 4 LocalSize 1 1 1
                              Source GLSL 450
                              Name 4  "main"
                              Name 10  "func(au1;"
                              Name 9  "c"
                              Name 12  "atoms("
                              Name 20  "counter"
                              Name 23  "val"
                              Name 27  "countArr"
                              Name 35  "origi"
                              Name 37  "atomi"
                              Name 40  "origu"
                              Name 42  "atomu"
                              Name 43  "value"
                              Name 60  "dataSSB"
                              MemberName 60(dataSSB) 0  "f"
                              MemberName 60(dataSSB) 1  "n_frames_rendered"
                              Name 62  "result"
                              Name 70  "arrX"
                              Name 71  "arrY"
                              Name 72  "arrZ"
                              Decorate 20(counter) Offset 0
                              Decorate 20(counter) Binding 0
                              Decorate 27(countArr) Offset 4
                              Decorate 27(countArr) Binding 0
                              MemberDecorate 60(dataSSB) 0 Restrict
                              MemberDecorate 60(dataSSB) 0 Offset 0
                              MemberDecorate 60(dataSSB) 1 Restrict
                              MemberDecorate 60(dataSSB) 1 Offset 16
                              Decorate 60(dataSSB) BufferBlock
                              Decorate 62(result) DescriptorSet 0
                              Decorate 62(result) Binding 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 0
               7:             TypePointer AtomicCounter 6(int)
               8:             TypeFunction 6(int) 7(ptr)
              14:      6(int) Constant 1
              15:      6(int) Constant 0
              19:      6(int) Constant 1024
     20(counter):      7(ptr) Variable AtomicCounter
              22:             TypePointer Function 6(int)
              24:      6(int) Constant 4
              25:             TypeArray 6(int) 24
              26:             TypePointer AtomicCounter 25
    27(countArr):     26(ptr) Variable AtomicCounter
              28:             TypeInt 32 1
              29:     28(int) Constant 2
              34:             TypePointer Function 28(int)
              36:             TypePointer Workgroup 28(int)
       37(atomi):     36(ptr) Variable Workgroup
              38:     28(int) Constant 3
              41:             TypePointer Workgroup 6(int)
       42(atomu):     41(ptr) Variable Workgroup
       43(value):     41(ptr) Variable Workgroup
              46:      6(int) Constant 7
              51:     28(int) Constant 7
              55:      6(int) Constant 10
              58:             TypeFloat 32
              59:             TypeVector 28(int) 4
     60(dataSSB):             TypeStruct 58(float) 59(ivec4)
              61:             TypePointer Uniform 60(dataSSB)
      62(result):     61(ptr) Variable Uniform
              63:     28(int) Constant 1
              64:      6(int) Constant 2
              65:             TypePointer Uniform 28(int)
              68:             TypeArray 28(int) 14
              69:             TypePointer Private 68
        70(arrX):     69(ptr) Variable Private
        71(arrY):     69(ptr) Variable Private
        72(arrZ):     69(ptr) Variable Private
         4(main):           2 Function None 3
               5:             Label
         23(val):     22(ptr) Variable Function
                              MemoryBarrier 14 19
              21:      6(int) FunctionCall 10(func(au1;) 20(counter)
              30:      7(ptr) AccessChain 27(countArr) 29
              31:      6(int) AtomicLoad 30 14 15
                              Store 23(val) 31
              32:      6(int) AtomicIDecrement 20(counter) 14 15
              33:      6(int) AtomicIIncrement 20(counter) 14 15
                              Return
                              FunctionEnd
   10(func(au1;):      6(int) Function None 8
            9(c):      7(ptr) FunctionParameter
              11:             Label
              16:      6(int) AtomicIIncrement 9(c) 14 15
                              ReturnValue 16
                              FunctionEnd
      12(atoms():           2 Function None 3
              13:             Label
       35(origi):     34(ptr) Variable Function
       40(origu):     22(ptr) Variable Function
              39:     28(int) AtomicIAdd 37(atomi) 14 15 38
                              Store 35(origi) 39
              44:      6(int) Load 43(value)
              45:      6(int) AtomicAnd 42(atomu) 14 15 44
                              Store 40(origu) 45
              47:      6(int) AtomicOr 42(atomu) 14 15 46
                              Store 40(origu) 47
              48:      6(int) AtomicXor 42(atomu) 14 15 46
                              Store 40(origu) 48
              49:      6(int) Load 43(value)
              50:      6(int) AtomicUMin 42(atomu) 14 15 49
                              Store 40(origu) 50
              52:     28(int) AtomicSMax 37(atomi) 14 15 51
                              Store 35(origi) 52
              53:     28(int) Load 35(origi)
              54:     28(int) AtomicExchange 37(atomi) 14 15 53
                              Store 35(origi) 54
              56:      6(int) Load 43(value)
              57:      6(int) AtomicCompareExchange 42(atomu) 14 15 15 56 55
                              Store 40(origu) 57
              66:     65(ptr) AccessChain 62(result) 63 64
              67:     28(int) AtomicIAdd 66 14 15 63
                              Return
                              FunctionEnd
