1spv.atomic.comp 2// Module Version 10000 3// Generated by (magic number): 8000a 4// Id's are bound by 74 5 6 Capability Shader 7 Capability AtomicStorage 8 1: ExtInstImport "GLSL.std.450" 9 MemoryModel Logical GLSL450 10 EntryPoint GLCompute 4 "main" 11 ExecutionMode 4 LocalSize 1 1 1 12 Source GLSL 450 13 Name 4 "main" 14 Name 10 "func(au1;" 15 Name 9 "c" 16 Name 12 "atoms(" 17 Name 20 "counter" 18 Name 23 "val" 19 Name 27 "countArr" 20 Name 37 "origi" 21 Name 39 "atomi" 22 Name 42 "origu" 23 Name 44 "atomu" 24 Name 45 "value" 25 Name 62 "dataSSB" 26 MemberName 62(dataSSB) 0 "f" 27 MemberName 62(dataSSB) 1 "n_frames_rendered" 28 Name 64 "result" 29 Name 71 "arrX" 30 Name 72 "arrY" 31 Name 73 "arrZ" 32 Decorate 20(counter) Offset 0 33 Decorate 20(counter) DescriptorSet 0 34 Decorate 20(counter) Binding 0 35 Decorate 27(countArr) Offset 4 36 Decorate 27(countArr) DescriptorSet 0 37 Decorate 27(countArr) Binding 0 38 MemberDecorate 62(dataSSB) 0 Restrict 39 MemberDecorate 62(dataSSB) 0 Offset 0 40 MemberDecorate 62(dataSSB) 1 Restrict 41 MemberDecorate 62(dataSSB) 1 Offset 16 42 Decorate 62(dataSSB) BufferBlock 43 Decorate 64(result) DescriptorSet 0 44 Decorate 64(result) Binding 0 45 2: TypeVoid 46 3: TypeFunction 2 47 6: TypeInt 32 0 48 7: TypePointer AtomicCounter 6(int) 49 8: TypeFunction 6(int) 7(ptr) 50 14: 6(int) Constant 1 51 15: 6(int) Constant 0 52 19: 6(int) Constant 1032 53 20(counter): 7(ptr) Variable AtomicCounter 54 22: TypePointer Function 6(int) 55 24: 6(int) Constant 4 56 25: TypeArray 6(int) 24 57 26: TypePointer AtomicCounter 25 58 27(countArr): 26(ptr) Variable AtomicCounter 59 28: TypeInt 32 1 60 29: 28(int) Constant 2 61 33: 28(int) Constant 1 62 36: TypePointer Function 28(int) 63 38: TypePointer Workgroup 28(int) 64 39(atomi): 38(ptr) Variable Workgroup 65 40: 28(int) Constant 3 66 43: TypePointer Workgroup 6(int) 67 44(atomu): 43(ptr) Variable Workgroup 68 45(value): 43(ptr) Variable Workgroup 69 48: 6(int) Constant 7 70 53: 28(int) Constant 7 71 57: 6(int) Constant 10 72 60: TypeFloat 32 73 61: TypeVector 28(int) 4 74 62(dataSSB): TypeStruct 60(float) 61(ivec4) 75 63: TypePointer Uniform 62(dataSSB) 76 64(result): 63(ptr) Variable Uniform 77 65: 6(int) Constant 2 78 66: TypePointer Uniform 28(int) 79 69: TypeArray 28(int) 14 80 70: TypePointer Private 69 81 71(arrX): 70(ptr) Variable Private 82 72(arrY): 70(ptr) Variable Private 83 73(arrZ): 70(ptr) Variable Private 84 4(main): 2 Function None 3 85 5: Label 86 23(val): 22(ptr) Variable Function 87 MemoryBarrier 14 19 88 21: 6(int) FunctionCall 10(func(au1;) 20(counter) 89 30: 7(ptr) AccessChain 27(countArr) 29 90 31: 6(int) AtomicLoad 30 14 15 91 Store 23(val) 31 92 32: 6(int) AtomicIDecrement 20(counter) 14 15 93 34: 6(int) ISub 32 33 94 35: 6(int) AtomicIIncrement 20(counter) 14 15 95 Return 96 FunctionEnd 97 10(func(au1;): 6(int) Function None 8 98 9(c): 7(ptr) FunctionParameter 99 11: Label 100 16: 6(int) AtomicIIncrement 9(c) 14 15 101 ReturnValue 16 102 FunctionEnd 103 12(atoms(): 2 Function None 3 104 13: Label 105 37(origi): 36(ptr) Variable Function 106 42(origu): 22(ptr) Variable Function 107 41: 28(int) AtomicIAdd 39(atomi) 14 15 40 108 Store 37(origi) 41 109 46: 6(int) Load 45(value) 110 47: 6(int) AtomicAnd 44(atomu) 14 15 46 111 Store 42(origu) 47 112 49: 6(int) AtomicOr 44(atomu) 14 15 48 113 Store 42(origu) 49 114 50: 6(int) AtomicXor 44(atomu) 14 15 48 115 Store 42(origu) 50 116 51: 6(int) Load 45(value) 117 52: 6(int) AtomicUMin 44(atomu) 14 15 51 118 Store 42(origu) 52 119 54: 28(int) AtomicSMax 39(atomi) 14 15 53 120 Store 37(origi) 54 121 55: 28(int) Load 37(origi) 122 56: 28(int) AtomicExchange 39(atomi) 14 15 55 123 Store 37(origi) 56 124 58: 6(int) Load 45(value) 125 59: 6(int) AtomicCompareExchange 44(atomu) 14 15 15 58 57 126 Store 42(origu) 59 127 67: 66(ptr) AccessChain 64(result) 33 65 128 68: 28(int) AtomicIAdd 67 14 15 33 129 Return 130 FunctionEnd 131