| spv.atomicInt64.comp | |
| // Module Version 10000 | |
| // Generated by (magic number): 8000b | |
| // 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" | |
| Decorate 14(Buffer) BufferBlock | |
| MemberDecorate 14(Buffer) 0 Offset 0 | |
| MemberDecorate 14(Buffer) 1 Offset 8 | |
| Decorate 16(buf) Binding 0 | |
| Decorate 16(buf) DescriptorSet 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 |