| spv.atomic.comp |
| // Module Version 10000 |
| // Generated by (magic number): 80008 |
| // Id's are bound by 74 |
| |
| 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 37 "origi" |
| Name 39 "atomi" |
| Name 42 "origu" |
| Name 44 "atomu" |
| Name 45 "value" |
| Name 62 "dataSSB" |
| MemberName 62(dataSSB) 0 "f" |
| MemberName 62(dataSSB) 1 "n_frames_rendered" |
| Name 64 "result" |
| Name 71 "arrX" |
| Name 72 "arrY" |
| Name 73 "arrZ" |
| Decorate 20(counter) Offset 0 |
| Decorate 20(counter) Binding 0 |
| Decorate 27(countArr) Offset 4 |
| Decorate 27(countArr) Binding 0 |
| MemberDecorate 62(dataSSB) 0 Restrict |
| MemberDecorate 62(dataSSB) 0 Offset 0 |
| MemberDecorate 62(dataSSB) 1 Restrict |
| MemberDecorate 62(dataSSB) 1 Offset 16 |
| Decorate 62(dataSSB) BufferBlock |
| Decorate 64(result) DescriptorSet 0 |
| Decorate 64(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 1032 |
| 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 |
| 33: 28(int) Constant 1 |
| 36: TypePointer Function 28(int) |
| 38: TypePointer Workgroup 28(int) |
| 39(atomi): 38(ptr) Variable Workgroup |
| 40: 28(int) Constant 3 |
| 43: TypePointer Workgroup 6(int) |
| 44(atomu): 43(ptr) Variable Workgroup |
| 45(value): 43(ptr) Variable Workgroup |
| 48: 6(int) Constant 7 |
| 53: 28(int) Constant 7 |
| 57: 6(int) Constant 10 |
| 60: TypeFloat 32 |
| 61: TypeVector 28(int) 4 |
| 62(dataSSB): TypeStruct 60(float) 61(ivec4) |
| 63: TypePointer Uniform 62(dataSSB) |
| 64(result): 63(ptr) Variable Uniform |
| 65: 6(int) Constant 2 |
| 66: TypePointer Uniform 28(int) |
| 69: TypeArray 28(int) 14 |
| 70: TypePointer Private 69 |
| 71(arrX): 70(ptr) Variable Private |
| 72(arrY): 70(ptr) Variable Private |
| 73(arrZ): 70(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 |
| 34: 6(int) ISub 32 33 |
| 35: 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 |
| 37(origi): 36(ptr) Variable Function |
| 42(origu): 22(ptr) Variable Function |
| 41: 28(int) AtomicIAdd 39(atomi) 14 15 40 |
| Store 37(origi) 41 |
| 46: 6(int) Load 45(value) |
| 47: 6(int) AtomicAnd 44(atomu) 14 15 46 |
| Store 42(origu) 47 |
| 49: 6(int) AtomicOr 44(atomu) 14 15 48 |
| Store 42(origu) 49 |
| 50: 6(int) AtomicXor 44(atomu) 14 15 48 |
| Store 42(origu) 50 |
| 51: 6(int) Load 45(value) |
| 52: 6(int) AtomicUMin 44(atomu) 14 15 51 |
| Store 42(origu) 52 |
| 54: 28(int) AtomicSMax 39(atomi) 14 15 53 |
| Store 37(origi) 54 |
| 55: 28(int) Load 37(origi) |
| 56: 28(int) AtomicExchange 39(atomi) 14 15 55 |
| Store 37(origi) 56 |
| 58: 6(int) Load 45(value) |
| 59: 6(int) AtomicCompareExchange 44(atomu) 14 15 15 58 57 |
| Store 42(origu) 59 |
| 67: 66(ptr) AccessChain 64(result) 33 65 |
| 68: 28(int) AtomicIAdd 67 14 15 33 |
| Return |
| FunctionEnd |