spv.memoryScopeSemantics.comp
// Module Version 10300
// Generated by (magic number): 80007
// Id's are bound by 148

                              Capability Shader
                              Capability Int64
                              Capability Int64Atomics
                              Capability CapabilityVulkanMemoryModelKHR
                              Capability CapabilityVulkanMemoryModelDeviceScopeKHR
                              Extension  "SPV_KHR_vulkan_memory_model"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical VulkanKHR
                              EntryPoint GLCompute 4  "main"
                              ExecutionMode 4 LocalSize 1 1 1
                              Source GLSL 450
                              SourceExtension  "GL_ARB_gpu_shader_int64"
                              SourceExtension  "GL_KHR_memory_scope_semantics"
                              Name 4  "main"
                              Name 8  "origi"
                              Name 10  "atomi"
                              Name 21  "origu"
                              Name 23  "atomu"
                              Name 24  "value"
                              Name 36  "imagei"
                              Name 45  "imageu"
                              Name 65  "BufferU"
                              MemberName 65(BufferU) 0  "x"
                              Name 67  "bufferu"
                              Name 72  "y"
                              Name 77  "BufferI"
                              MemberName 77(BufferI) 0  "x"
                              Name 79  "bufferi"
                              Name 83  "A"
                              MemberName 83(A) 0  "x"
                              Name 84  "BufferJ"
                              MemberName 84(BufferJ) 0  "a"
                              Name 87  "bufferj"
                              Name 98  "BufferK"
                              MemberName 98(BufferK) 0  "x"
                              Name 100  "bufferk"
                              Name 110  "imagej"
                              Name 122  "samp"
                              Name 133  "atomu64"
                              Name 138  "atomi64"
                              Name 143  "BufferL"
                              MemberName 143(BufferL) 0  "x"
                              Name 145  "bufferl"
                              Decorate 36(imagei) DescriptorSet 0
                              Decorate 36(imagei) Binding 1
                              Decorate 45(imageu) DescriptorSet 0
                              Decorate 45(imageu) Binding 0
                              MemberDecorate 65(BufferU) 0 Offset 0
                              Decorate 65(BufferU) Block
                              Decorate 67(bufferu) DescriptorSet 0
                              Decorate 67(bufferu) Binding 2
                              MemberDecorate 77(BufferI) 0 Offset 0
                              Decorate 77(BufferI) Block
                              Decorate 79(bufferi) DescriptorSet 0
                              Decorate 79(bufferi) Binding 3
                              Decorate 82 ArrayStride 4
                              MemberDecorate 83(A) 0 Offset 0
                              MemberDecorate 84(BufferJ) 0 Offset 0
                              Decorate 84(BufferJ) Block
                              Decorate 87(bufferj) DescriptorSet 0
                              Decorate 87(bufferj) Binding 4
                              MemberDecorate 98(BufferK) 0 Offset 0
                              Decorate 98(BufferK) Block
                              Decorate 100(bufferk) DescriptorSet 0
                              Decorate 100(bufferk) Binding 7
                              Decorate 110(imagej) DescriptorSet 0
                              Decorate 110(imagej) Binding 5
                              Decorate 122(samp) DescriptorSet 0
                              Decorate 122(samp) Binding 6
                              MemberDecorate 143(BufferL) 0 Offset 0
                              Decorate 143(BufferL) Block
                              Decorate 145(bufferl) DescriptorSet 0
                              Decorate 145(bufferl) Binding 8
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 1
               7:             TypePointer Function 6(int)
               9:             TypePointer Workgroup 6(int)
       10(atomi):      9(ptr) Variable Workgroup
              11:      6(int) Constant 3
              12:      6(int) Constant 1
              13:      6(int) Constant 320
              14:      6(int) Constant 4
              15:             TypeInt 32 0
              16:     15(int) Constant 5
              17:     15(int) Constant 0
              18:     15(int) Constant 324
              20:             TypePointer Function 15(int)
              22:             TypePointer Workgroup 15(int)
       23(atomu):     22(ptr) Variable Workgroup
       24(value):     22(ptr) Variable Workgroup
              26:     15(int) Constant 2
              28:      6(int) Constant 64
              29:      6(int) Constant 2
              30:     15(int) Constant 66
              33:     15(int) Constant 68
              34:             TypeImage 6(int) 2D nonsampled format:R32i
              35:             TypePointer UniformConstant 34
      36(imagei):     35(ptr) Variable UniformConstant
              37:             TypeVector 6(int) 2
              38:      6(int) Constant 0
              39:   37(ivec2) ConstantComposite 38 38
              40:             TypePointer Image 6(int)
              43:             TypeImage 15(int) 2D nonsampled format:R32ui
              44:             TypePointer UniformConstant 43
      45(imageu):     44(ptr) Variable UniformConstant
              46:     15(int) Constant 3
              47:             TypePointer Image 15(int)
              50:     15(int) Constant 4
              52:     15(int) Constant 7
              57:      6(int) Constant 7
              61:     15(int) Constant 10
              63:     15(int) Constant 322
     65(BufferU):             TypeStruct 15(int)
              66:             TypePointer StorageBuffer 65(BufferU)
     67(bufferu):     66(ptr) Variable StorageBuffer
              68:             TypePointer StorageBuffer 15(int)
              70:     15(int) Constant 1
     77(BufferI):             TypeStruct 15(int)
              78:             TypePointer StorageBuffer 77(BufferI)
     79(bufferi):     78(ptr) Variable StorageBuffer
              82:             TypeArray 15(int) 26
           83(A):             TypeStruct 82
     84(BufferJ):             TypeStruct 83(A)
              85:             TypeArray 84(BufferJ) 26
              86:             TypePointer StorageBuffer 85
     87(bufferj):     86(ptr) Variable StorageBuffer
              94:             TypePointer StorageBuffer 83(A)
     98(BufferK):             TypeStruct 15(int)
              99:             TypePointer Uniform 98(BufferK)
    100(bufferk):     99(ptr) Variable Uniform
             101:             TypePointer Uniform 15(int)
             106:             TypeVector 6(int) 4
             108:             TypeArray 34 26
             109:             TypePointer UniformConstant 108
     110(imagej):    109(ptr) Variable UniformConstant
             116:  106(ivec4) ConstantComposite 38 38 38 38
             117:             TypeFloat 32
             118:             TypeImage 117(float) 2D sampled format:Unknown
             119:             TypeSampledImage 118
             120:             TypeArray 119 26
             121:             TypePointer UniformConstant 120
       122(samp):    121(ptr) Variable UniformConstant
             123:             TypePointer UniformConstant 119
             126:             TypeVector 117(float) 2
             127:  117(float) Constant 0
             128:  126(fvec2) ConstantComposite 127 127
             129:             TypeVector 117(float) 4
             131:             TypeInt 64 0
             132:             TypePointer Workgroup 131(int64_t)
    133(atomu64):    132(ptr) Variable Workgroup
             134:131(int64_t) Constant 7 0
             136:             TypeInt 64 1
             137:             TypePointer Workgroup 136(int64_t)
    138(atomi64):    137(ptr) Variable Workgroup
             139:136(int64_t) Constant 10 0
    143(BufferL):             TypeStruct 15(int)
             144:             TypePointer StorageBuffer 143(BufferL)
    145(bufferl):    144(ptr) Variable StorageBuffer
         4(main):           2 Function None 3
               5:             Label
        8(origi):      7(ptr) Variable Function
       21(origu):     20(ptr) Variable Function
           72(y):     20(ptr) Variable Function
              19:      6(int) AtomicIAdd 10(atomi) 12 18 11
                              Store 8(origi) 19
              25:     15(int) Load 24(value) MakePointerVisibleKHR NonPrivatePointerKHR 26
              27:     15(int) AtomicAnd 23(atomu) 16 17 25
                              Store 21(origu) 27
              31:      6(int) AtomicLoad 10(atomi) 12 30
                              Store 8(origi) 31
              32:     15(int) Load 24(value) MakePointerVisibleKHR NonPrivatePointerKHR 26
                              AtomicStore 23(atomu) 12 33 32
              41:     40(ptr) ImageTexelPointer 36(imagei) 39 17
              42:      6(int) AtomicLoad 41 12 30
                              Store 8(origi) 42
              48:     47(ptr) ImageTexelPointer 45(imageu) 39 17
              49:     15(int) AtomicIAdd 48 12 30 46
                              Store 21(origu) 49
              51:     47(ptr) ImageTexelPointer 45(imageu) 39 17
                              AtomicStore 51 12 33 50
              53:     15(int) AtomicOr 23(atomu) 12 17 52
                              Store 21(origu) 53
              54:     15(int) AtomicXor 23(atomu) 12 17 52
                              Store 21(origu) 54
              55:     15(int) Load 24(value) MakePointerVisibleKHR NonPrivatePointerKHR 26
              56:     15(int) AtomicUMin 23(atomu) 12 17 55
                              Store 21(origu) 56
              58:      6(int) AtomicSMax 10(atomi) 12 17 57
                              Store 8(origi) 58
              59:      6(int) Load 8(origi)
              60:      6(int) AtomicExchange 10(atomi) 12 17 59
                              Store 8(origi) 60
              62:     15(int) Load 24(value) MakePointerVisibleKHR NonPrivatePointerKHR 26
              64:     15(int) AtomicCompareExchange 23(atomu) 12 63 63 62 61
                              Store 21(origu) 64
              69:     68(ptr) AccessChain 67(bufferu) 38
              71:     15(int) AtomicIAdd 69 12 18 70
                              MemoryBarrier 26 18
                              ControlBarrier 26 26 63
                              ControlBarrier 26 26 17
              73:     68(ptr) AccessChain 67(bufferu) 38
              74:     15(int) Load 73 MakePointerVisibleKHR NonPrivatePointerKHR 26
                              Store 72(y) 74
              75:     15(int) Load 72(y)
              76:     68(ptr) AccessChain 67(bufferu) 38
                              Store 76 75 MakePointerAvailableKHR NonPrivatePointerKHR 26
              80:     68(ptr) AccessChain 79(bufferi) 38
              81:     15(int) Load 80 MakePointerVisibleKHR NonPrivatePointerKHR 16
                              Store 72(y) 81
              88:     68(ptr) AccessChain 87(bufferj) 38 38 38 12
              89:     15(int) Load 88 Volatile MakePointerVisibleKHR NonPrivatePointerKHR 16
                              Store 72(y) 89
              90:     15(int) Load 72(y)
              91:     68(ptr) AccessChain 79(bufferi) 38
                              Store 91 90 MakePointerAvailableKHR NonPrivatePointerKHR 16
              92:     15(int) Load 72(y)
              93:     68(ptr) AccessChain 87(bufferj) 38 38 38 12
                              Store 93 92 Volatile MakePointerAvailableKHR NonPrivatePointerKHR 16
              95:     94(ptr) AccessChain 87(bufferj) 12 38
              96:       83(A) Load 95 Volatile MakePointerVisibleKHR NonPrivatePointerKHR 16
              97:     94(ptr) AccessChain 87(bufferj) 38 38
                              Store 97 96 Volatile MakePointerAvailableKHR NonPrivatePointerKHR 16
             102:    101(ptr) AccessChain 100(bufferk) 38
             103:     15(int) Load 102 NonPrivatePointerKHR 
             104:     68(ptr) AccessChain 79(bufferi) 38
                              Store 104 103 MakePointerAvailableKHR NonPrivatePointerKHR 16
             105:          34 Load 36(imagei)
             107:  106(ivec4) ImageRead 105 39 MakeTexelVisibleKHR NonPrivateTexelKHR VolatileTexelKHR 16
             111:     35(ptr) AccessChain 110(imagej) 38
             112:          34 Load 111
             113:  106(ivec4) ImageRead 112 39 NonPrivateTexelKHR 
             114:     35(ptr) AccessChain 110(imagej) 12
             115:          34 Load 114
                              ImageWrite 115 39 116 NonPrivateTexelKHR 
             124:    123(ptr) AccessChain 122(samp) 38
             125:         119 Load 124
             130:  129(fvec4) ImageSampleExplicitLod 125 128 Lod NonPrivateTexelKHR 127
             135:131(int64_t) AtomicUMax 133(atomu64) 12 17 134
                              Store 133(atomu64) 135 MakePointerAvailableKHR NonPrivatePointerKHR 26
             140:131(int64_t) Load 133(atomu64) MakePointerVisibleKHR NonPrivatePointerKHR 26
             141:136(int64_t) Bitcast 140
             142:136(int64_t) AtomicCompareExchange 138(atomi64) 12 63 63 141 139
             146:     68(ptr) AccessChain 145(bufferl) 38
             147:     15(int) Load 146 Volatile MakePointerVisibleKHR NonPrivatePointerKHR 16
                              Store 72(y) 147
                              Return
                              FunctionEnd
