1 spv.memoryScopeSemantics.comp 2 // Module Version 10300 3 // Generated by (magic number): 80007 4 // Id's are bound by 143 5 6 Capability Shader 7 Capability Int64 8 Capability Int64Atomics 9 Capability CapabilityVulkanMemoryModelKHR 10 Capability CapabilityVulkanMemoryModelDeviceScopeKHR 11 Extension "SPV_KHR_vulkan_memory_model" 12 1: ExtInstImport "GLSL.std.450" 13 MemoryModel Logical VulkanKHR 14 EntryPoint GLCompute 4 "main" 15 ExecutionMode 4 LocalSize 1 1 1 16 Source GLSL 450 17 SourceExtension "GL_ARB_gpu_shader_int64" 18 SourceExtension "GL_KHR_memory_scope_semantics" 19 Name 4 "main" 20 Name 8 "origi" 21 Name 10 "atomi" 22 Name 21 "origu" 23 Name 23 "atomu" 24 Name 24 "value" 25 Name 36 "imagei" 26 Name 45 "imageu" 27 Name 65 "BufferU" 28 MemberName 65(BufferU) 0 "x" 29 Name 67 "bufferu" 30 Name 72 "y" 31 Name 77 "BufferI" 32 MemberName 77(BufferI) 0 "x" 33 Name 79 "bufferi" 34 Name 83 "A" 35 MemberName 83(A) 0 "x" 36 Name 84 "BufferJ" 37 MemberName 84(BufferJ) 0 "a" 38 Name 87 "bufferj" 39 Name 98 "BufferK" 40 MemberName 98(BufferK) 0 "x" 41 Name 100 "bufferk" 42 Name 110 "imagej" 43 Name 122 "samp" 44 Name 133 "atomu64" 45 Name 138 "atomi64" 46 Decorate 36(imagei) DescriptorSet 0 47 Decorate 36(imagei) Binding 1 48 Decorate 45(imageu) DescriptorSet 0 49 Decorate 45(imageu) Binding 0 50 MemberDecorate 65(BufferU) 0 Offset 0 51 Decorate 65(BufferU) Block 52 Decorate 67(bufferu) DescriptorSet 0 53 Decorate 67(bufferu) Binding 2 54 MemberDecorate 77(BufferI) 0 Offset 0 55 Decorate 77(BufferI) Block 56 Decorate 79(bufferi) DescriptorSet 0 57 Decorate 79(bufferi) Binding 3 58 Decorate 82 ArrayStride 4 59 MemberDecorate 83(A) 0 Offset 0 60 MemberDecorate 84(BufferJ) 0 Offset 0 61 Decorate 84(BufferJ) Block 62 Decorate 87(bufferj) DescriptorSet 0 63 Decorate 87(bufferj) Binding 4 64 MemberDecorate 98(BufferK) 0 Offset 0 65 Decorate 98(BufferK) Block 66 Decorate 100(bufferk) DescriptorSet 0 67 Decorate 100(bufferk) Binding 7 68 Decorate 110(imagej) DescriptorSet 0 69 Decorate 110(imagej) Binding 5 70 Decorate 122(samp) DescriptorSet 0 71 Decorate 122(samp) Binding 6 72 2: TypeVoid 73 3: TypeFunction 2 74 6: TypeInt 32 1 75 7: TypePointer Function 6(int) 76 9: TypePointer Workgroup 6(int) 77 10(atomi): 9(ptr) Variable Workgroup 78 11: 6(int) Constant 3 79 12: 6(int) Constant 1 80 13: 6(int) Constant 320 81 14: 6(int) Constant 4 82 15: TypeInt 32 0 83 16: 15(int) Constant 5 84 17: 15(int) Constant 0 85 18: 15(int) Constant 324 86 20: TypePointer Function 15(int) 87 22: TypePointer Workgroup 15(int) 88 23(atomu): 22(ptr) Variable Workgroup 89 24(value): 22(ptr) Variable Workgroup 90 26: 15(int) Constant 2 91 28: 6(int) Constant 64 92 29: 6(int) Constant 2 93 30: 15(int) Constant 66 94 33: 15(int) Constant 68 95 34: TypeImage 6(int) 2D nonsampled format:R32i 96 35: TypePointer UniformConstant 34 97 36(imagei): 35(ptr) Variable UniformConstant 98 37: TypeVector 6(int) 2 99 38: 6(int) Constant 0 100 39: 37(ivec2) ConstantComposite 38 38 101 40: TypePointer Image 6(int) 102 43: TypeImage 15(int) 2D nonsampled format:R32ui 103 44: TypePointer UniformConstant 43 104 45(imageu): 44(ptr) Variable UniformConstant 105 46: 15(int) Constant 3 106 47: TypePointer Image 15(int) 107 50: 15(int) Constant 4 108 52: 15(int) Constant 7 109 57: 6(int) Constant 7 110 61: 15(int) Constant 10 111 63: 15(int) Constant 322 112 65(BufferU): TypeStruct 15(int) 113 66: TypePointer StorageBuffer 65(BufferU) 114 67(bufferu): 66(ptr) Variable StorageBuffer 115 68: TypePointer StorageBuffer 15(int) 116 70: 15(int) Constant 1 117 77(BufferI): TypeStruct 15(int) 118 78: TypePointer StorageBuffer 77(BufferI) 119 79(bufferi): 78(ptr) Variable StorageBuffer 120 82: TypeArray 15(int) 26 121 83(A): TypeStruct 82 122 84(BufferJ): TypeStruct 83(A) 123 85: TypeArray 84(BufferJ) 26 124 86: TypePointer StorageBuffer 85 125 87(bufferj): 86(ptr) Variable StorageBuffer 126 94: TypePointer StorageBuffer 83(A) 127 98(BufferK): TypeStruct 15(int) 128 99: TypePointer Uniform 98(BufferK) 129 100(bufferk): 99(ptr) Variable Uniform 130 101: TypePointer Uniform 15(int) 131 106: TypeVector 6(int) 4 132 108: TypeArray 34 26 133 109: TypePointer UniformConstant 108 134 110(imagej): 109(ptr) Variable UniformConstant 135 116: 106(ivec4) ConstantComposite 38 38 38 38 136 117: TypeFloat 32 137 118: TypeImage 117(float) 2D sampled format:Unknown 138 119: TypeSampledImage 118 139 120: TypeArray 119 26 140 121: TypePointer UniformConstant 120 141 122(samp): 121(ptr) Variable UniformConstant 142 123: TypePointer UniformConstant 119 143 126: TypeVector 117(float) 2 144 127: 117(float) Constant 0 145 128: 126(fvec2) ConstantComposite 127 127 146 129: TypeVector 117(float) 4 147 131: TypeInt 64 0 148 132: TypePointer Workgroup 131(int64_t) 149 133(atomu64): 132(ptr) Variable Workgroup 150 134:131(int64_t) Constant 7 0 151 136: TypeInt 64 1 152 137: TypePointer Workgroup 136(int64_t) 153 138(atomi64): 137(ptr) Variable Workgroup 154 139:136(int64_t) Constant 10 0 155 4(main): 2 Function None 3 156 5: Label 157 8(origi): 7(ptr) Variable Function 158 21(origu): 20(ptr) Variable Function 159 72(y): 20(ptr) Variable Function 160 19: 6(int) AtomicIAdd 10(atomi) 12 18 11 161 Store 8(origi) 19 162 25: 15(int) Load 24(value) MakePointerVisibleKHR NonPrivatePointerKHR 26 163 27: 15(int) AtomicAnd 23(atomu) 16 17 25 164 Store 21(origu) 27 165 31: 6(int) AtomicLoad 10(atomi) 12 30 166 Store 8(origi) 31 167 32: 15(int) Load 24(value) MakePointerVisibleKHR NonPrivatePointerKHR 26 168 AtomicStore 23(atomu) 12 33 32 169 41: 40(ptr) ImageTexelPointer 36(imagei) 39 17 170 42: 6(int) AtomicLoad 41 12 30 171 Store 8(origi) 42 172 48: 47(ptr) ImageTexelPointer 45(imageu) 39 17 173 49: 15(int) AtomicIAdd 48 12 30 46 174 Store 21(origu) 49 175 51: 47(ptr) ImageTexelPointer 45(imageu) 39 17 176 AtomicStore 51 12 33 50 177 53: 15(int) AtomicOr 23(atomu) 12 17 52 178 Store 21(origu) 53 179 54: 15(int) AtomicXor 23(atomu) 12 17 52 180 Store 21(origu) 54 181 55: 15(int) Load 24(value) MakePointerVisibleKHR NonPrivatePointerKHR 26 182 56: 15(int) AtomicUMin 23(atomu) 12 17 55 183 Store 21(origu) 56 184 58: 6(int) AtomicSMax 10(atomi) 12 17 57 185 Store 8(origi) 58 186 59: 6(int) Load 8(origi) 187 60: 6(int) AtomicExchange 10(atomi) 12 17 59 188 Store 8(origi) 60 189 62: 15(int) Load 24(value) MakePointerVisibleKHR NonPrivatePointerKHR 26 190 64: 15(int) AtomicCompareExchange 23(atomu) 12 63 63 62 61 191 Store 21(origu) 64 192 69: 68(ptr) AccessChain 67(bufferu) 38 193 71: 15(int) AtomicIAdd 69 12 18 70 194 MemoryBarrier 26 18 195 ControlBarrier 26 26 63 196 ControlBarrier 26 26 17 197 73: 68(ptr) AccessChain 67(bufferu) 38 198 74: 15(int) Load 73 MakePointerVisibleKHR NonPrivatePointerKHR 26 199 Store 72(y) 74 200 75: 15(int) Load 72(y) 201 76: 68(ptr) AccessChain 67(bufferu) 38 202 Store 76 75 MakePointerAvailableKHR NonPrivatePointerKHR 26 203 80: 68(ptr) AccessChain 79(bufferi) 38 204 81: 15(int) Load 80 MakePointerVisibleKHR NonPrivatePointerKHR 16 205 Store 72(y) 81 206 88: 68(ptr) AccessChain 87(bufferj) 38 38 38 12 207 89: 15(int) Load 88 Volatile MakePointerVisibleKHR NonPrivatePointerKHR 46 208 Store 72(y) 89 209 90: 15(int) Load 72(y) 210 91: 68(ptr) AccessChain 79(bufferi) 38 211 Store 91 90 MakePointerAvailableKHR NonPrivatePointerKHR 16 212 92: 15(int) Load 72(y) 213 93: 68(ptr) AccessChain 87(bufferj) 38 38 38 12 214 Store 93 92 Volatile MakePointerAvailableKHR NonPrivatePointerKHR 46 215 95: 94(ptr) AccessChain 87(bufferj) 12 38 216 96: 83(A) Load 95 Volatile MakePointerVisibleKHR NonPrivatePointerKHR 46 217 97: 94(ptr) AccessChain 87(bufferj) 38 38 218 Store 97 96 Volatile MakePointerAvailableKHR NonPrivatePointerKHR 46 219 102: 101(ptr) AccessChain 100(bufferk) 38 220 103: 15(int) Load 102 NonPrivatePointerKHR 221 104: 68(ptr) AccessChain 79(bufferi) 38 222 Store 104 103 MakePointerAvailableKHR NonPrivatePointerKHR 16 223 105: 34 Load 36(imagei) 224 107: 106(ivec4) ImageRead 105 39 MakeTexelVisibleKHR NonPrivateTexelKHR VolatileTexelKHR 16 225 111: 35(ptr) AccessChain 110(imagej) 38 226 112: 34 Load 111 227 113: 106(ivec4) ImageRead 112 39 NonPrivateTexelKHR 228 114: 35(ptr) AccessChain 110(imagej) 12 229 115: 34 Load 114 230 ImageWrite 115 39 116 NonPrivateTexelKHR 231 124: 123(ptr) AccessChain 122(samp) 38 232 125: 119 Load 124 233 130: 129(fvec4) ImageSampleExplicitLod 125 128 Lod NonPrivateTexelKHR 127 234 135:131(int64_t) AtomicUMax 133(atomu64) 12 17 134 235 Store 133(atomu64) 135 MakePointerAvailableKHR NonPrivatePointerKHR 26 236 140:131(int64_t) Load 133(atomu64) MakePointerVisibleKHR NonPrivatePointerKHR 26 237 141:136(int64_t) Bitcast 140 238 142:136(int64_t) AtomicCompareExchange 138(atomi64) 12 63 63 141 139 239 Return 240 FunctionEnd 241