spv.atomicInt64.comp // Module Version 10000 // Generated by (magic number): 8000a // Id's are bound by 149 Capability Shader Capability Int64 Capability Int64Atomics 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" ExecutionMode 4 LocalSize 16 16 1 Source GLSL 450 SourceExtension "GL_ARB_gpu_shader_int64" SourceExtension "GL_NV_shader_atomic_int64" Name 4 "main" Name 8 "i64" Name 12 "u64" Name 14 "Buffer" MemberName 14(Buffer) 0 "i64" MemberName 14(Buffer) 1 "u64" Name 16 "buf" Name 84 "Struct" MemberName 84(Struct) 0 "i64" MemberName 84(Struct) 1 "u64" Name 86 "s" MemberDecorate 14(Buffer) 0 Offset 0 MemberDecorate 14(Buffer) 1 Offset 8 Decorate 14(Buffer) BufferBlock Decorate 16(buf) DescriptorSet 0 Decorate 16(buf) Binding 0 Decorate 148 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 64 1 7: TypePointer Function 6(int64_t) 9: 6(int64_t) Constant 0 0 10: TypeInt 64 0 11: TypePointer Function 10(int64_t) 13: 10(int64_t) Constant 0 0 14(Buffer): TypeStruct 6(int64_t) 10(int64_t) 15: TypePointer Uniform 14(Buffer) 16(buf): 15(ptr) Variable Uniform 17: TypeInt 32 1 18: 17(int) Constant 0 19: TypePointer Uniform 6(int64_t) 21: 6(int64_t) Constant 4294967272 4294967295 22: TypeInt 32 0 23: 22(int) Constant 1 24: 22(int) Constant 0 28: 17(int) Constant 1 29: TypePointer Uniform 10(int64_t) 31: 10(int64_t) Constant 15 240 84(Struct): TypeStruct 6(int64_t) 10(int64_t) 85: TypePointer Workgroup 84(Struct) 86(s): 85(ptr) Variable Workgroup 87: TypePointer Workgroup 6(int64_t) 92: TypePointer Workgroup 10(int64_t) 146: TypeVector 22(int) 3 147: 22(int) Constant 16 148: 146(ivec3) ConstantComposite 147 147 23 4(main): 2 Function None 3 5: Label 8(i64): 7(ptr) Variable Function 12(u64): 11(ptr) Variable Function Store 8(i64) 9 Store 12(u64) 13 20: 19(ptr) AccessChain 16(buf) 18 25: 6(int64_t) AtomicSMin 20 23 24 21 26: 6(int64_t) Load 8(i64) 27: 6(int64_t) IAdd 26 25 Store 8(i64) 27 30: 29(ptr) AccessChain 16(buf) 28 32: 10(int64_t) AtomicUMin 30 23 24 31 33: 10(int64_t) Load 12(u64) 34: 10(int64_t) IAdd 33 32 Store 12(u64) 34 35: 19(ptr) AccessChain 16(buf) 18 36: 6(int64_t) AtomicSMax 35 23 24 21 37: 6(int64_t) Load 8(i64) 38: 6(int64_t) IAdd 37 36 Store 8(i64) 38 39: 29(ptr) AccessChain 16(buf) 28 40: 10(int64_t) AtomicUMax 39 23 24 31 41: 10(int64_t) Load 12(u64) 42: 10(int64_t) IAdd 41 40 Store 12(u64) 42 43: 19(ptr) AccessChain 16(buf) 18 44: 6(int64_t) AtomicAnd 43 23 24 21 45: 6(int64_t) Load 8(i64) 46: 6(int64_t) IAdd 45 44 Store 8(i64) 46 47: 29(ptr) AccessChain 16(buf) 28 48: 10(int64_t) AtomicAnd 47 23 24 31 49: 10(int64_t) Load 12(u64) 50: 10(int64_t) IAdd 49 48 Store 12(u64) 50 51: 19(ptr) AccessChain 16(buf) 18 52: 6(int64_t) AtomicOr 51 23 24 21 53: 6(int64_t) Load 8(i64) 54: 6(int64_t) IAdd 53 52 Store 8(i64) 54 55: 29(ptr) AccessChain 16(buf) 28 56: 10(int64_t) AtomicOr 55 23 24 31 57: 10(int64_t) Load 12(u64) 58: 10(int64_t) IAdd 57 56 Store 12(u64) 58 59: 19(ptr) AccessChain 16(buf) 18 60: 6(int64_t) AtomicXor 59 23 24 21 61: 6(int64_t) Load 8(i64) 62: 6(int64_t) IAdd 61 60 Store 8(i64) 62 63: 29(ptr) AccessChain 16(buf) 28 64: 10(int64_t) AtomicXor 63 23 24 31 65: 10(int64_t) Load 12(u64) 66: 10(int64_t) IAdd 65 64 Store 12(u64) 66 67: 19(ptr) AccessChain 16(buf) 18 68: 6(int64_t) AtomicIAdd 67 23 24 21 69: 6(int64_t) Load 8(i64) 70: 6(int64_t) IAdd 69 68 Store 8(i64) 70 71: 19(ptr) AccessChain 16(buf) 18 72: 6(int64_t) AtomicExchange 71 23 24 21 73: 6(int64_t) Load 8(i64) 74: 6(int64_t) IAdd 73 72 Store 8(i64) 74 75: 19(ptr) AccessChain 16(buf) 18 76: 6(int64_t) Load 8(i64) 77: 6(int64_t) AtomicCompareExchange 75 23 24 24 76 21 78: 6(int64_t) Load 8(i64) 79: 6(int64_t) IAdd 78 77 Store 8(i64) 79 80: 6(int64_t) Load 8(i64) 81: 19(ptr) AccessChain 16(buf) 18 Store 81 80 82: 10(int64_t) Load 12(u64) 83: 29(ptr) AccessChain 16(buf) 28 Store 83 82 Store 8(i64) 9 Store 12(u64) 13 88: 87(ptr) AccessChain 86(s) 18 89: 6(int64_t) AtomicSMin 88 23 24 21 90: 6(int64_t) Load 8(i64) 91: 6(int64_t) IAdd 90 89 Store 8(i64) 91 93: 92(ptr) AccessChain 86(s) 28 94: 10(int64_t) AtomicUMin 93 23 24 31 95: 10(int64_t) Load 12(u64) 96: 10(int64_t) IAdd 95 94 Store 12(u64) 96 97: 87(ptr) AccessChain 86(s) 18 98: 6(int64_t) AtomicSMax 97 23 24 21 99: 6(int64_t) Load 8(i64) 100: 6(int64_t) IAdd 99 98 Store 8(i64) 100 101: 92(ptr) AccessChain 86(s) 28 102: 10(int64_t) AtomicUMax 101 23 24 31 103: 10(int64_t) Load 12(u64) 104: 10(int64_t) IAdd 103 102 Store 12(u64) 104 105: 87(ptr) AccessChain 86(s) 18 106: 6(int64_t) AtomicAnd 105 23 24 21 107: 6(int64_t) Load 8(i64) 108: 6(int64_t) IAdd 107 106 Store 8(i64) 108 109: 92(ptr) AccessChain 86(s) 28 110: 10(int64_t) AtomicAnd 109 23 24 31 111: 10(int64_t) Load 12(u64) 112: 10(int64_t) IAdd 111 110 Store 12(u64) 112 113: 87(ptr) AccessChain 86(s) 18 114: 6(int64_t) AtomicOr 113 23 24 21 115: 6(int64_t) Load 8(i64) 116: 6(int64_t) IAdd 115 114 Store 8(i64) 116 117: 92(ptr) AccessChain 86(s) 28 118: 10(int64_t) AtomicOr 117 23 24 31 119: 10(int64_t) Load 12(u64) 120: 10(int64_t) IAdd 119 118 Store 12(u64) 120 121: 87(ptr) AccessChain 86(s) 18 122: 6(int64_t) AtomicXor 121 23 24 21 123: 6(int64_t) Load 8(i64) 124: 6(int64_t) IAdd 123 122 Store 8(i64) 124 125: 92(ptr) AccessChain 86(s) 28 126: 10(int64_t) AtomicXor 125 23 24 31 127: 10(int64_t) Load 12(u64) 128: 10(int64_t) IAdd 127 126 Store 12(u64) 128 129: 87(ptr) AccessChain 86(s) 18 130: 6(int64_t) AtomicIAdd 129 23 24 21 131: 6(int64_t) Load 8(i64) 132: 6(int64_t) IAdd 131 130 Store 8(i64) 132 133: 87(ptr) AccessChain 86(s) 18 134: 6(int64_t) AtomicExchange 133 23 24 21 135: 6(int64_t) Load 8(i64) 136: 6(int64_t) IAdd 135 134 Store 8(i64) 136 137: 87(ptr) AccessChain 86(s) 18 138: 6(int64_t) Load 8(i64) 139: 6(int64_t) AtomicCompareExchange 137 23 24 24 138 21 140: 6(int64_t) Load 8(i64) 141: 6(int64_t) IAdd 140 139 Store 8(i64) 141 142: 6(int64_t) Load 8(i64) 143: 87(ptr) AccessChain 86(s) 18 Store 143 142 144: 10(int64_t) Load 12(u64) 145: 92(ptr) AccessChain 86(s) 28 Store 145 144 Return FunctionEnd