spv.atomic.comp | |
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. | |
Linked compute stage: | |
TBD functionality: Is atomic_uint an opaque handle in the uniform storage class, or an addresses in the atomic storage class? | |
// Module Version 99 | |
// Generated by (magic number): 51a00bb | |
// Id's are bound by 77 | |
Source ESSL 310 | |
Capability Shader | |
1: ExtInstImport "GLSL.std.450" | |
MemoryModel Logical GLSL450 | |
EntryPoint GLCompute 4 "main" | |
Name 4 "main" | |
Name 11 "func(au1;" | |
Name 10 "c" | |
Name 13 "atoms(" | |
Name 23 "counter" | |
Name 24 "param" | |
Name 27 "val" | |
Name 31 "countArr" | |
Name 41 "origi" | |
Name 43 "atomi" | |
Name 47 "origu" | |
Name 49 "atomu" | |
Name 51 "value" | |
Name 74 "arrX" | |
Name 75 "arrY" | |
Name 76 "arrZ" | |
Decorate 23(counter) Binding 0 | |
Decorate 31(countArr) Binding 0 | |
Decorate 74(arrX) NoStaticUse | |
Decorate 75(arrY) NoStaticUse | |
Decorate 76(arrZ) NoStaticUse | |
2: TypeVoid | |
3: TypeFunction 2 | |
7: TypeInt 32 0 | |
8: TypePointer Function 7(int) | |
9: TypeFunction 7(int) 8(ptr) | |
16: 7(int) Constant 1 | |
17: 7(int) Constant 0 | |
21: 7(int) Constant 256 | |
22: TypePointer UniformConstant 7(int) | |
23(counter): 22(ptr) Variable UniformConstant | |
28: 7(int) Constant 4 | |
29: TypeArray 7(int) 28 | |
30: TypePointer UniformConstant 29 | |
31(countArr): 30(ptr) Variable UniformConstant | |
32: TypeInt 32 1 | |
33: 32(int) Constant 2 | |
40: TypePointer Function 32(int) | |
42: TypePointer WorkgroupLocal 32(int) | |
43(atomi): 42(ptr) Variable WorkgroupLocal | |
45: 32(int) Constant 3 | |
48: TypePointer WorkgroupLocal 7(int) | |
49(atomu): 48(ptr) Variable WorkgroupLocal | |
51(value): 22(ptr) Variable UniformConstant | |
55: 7(int) Constant 7 | |
63: 32(int) Constant 7 | |
69: 7(int) Constant 10 | |
72: TypeArray 32(int) 16 | |
73: TypePointer PrivateGlobal 72 | |
74(arrX): 73(ptr) Variable PrivateGlobal | |
75(arrY): 73(ptr) Variable PrivateGlobal | |
76(arrZ): 73(ptr) Variable PrivateGlobal | |
4(main): 2 Function None 3 | |
5: Label | |
24(param): 8(ptr) Variable Function | |
27(val): 8(ptr) Variable Function | |
MemoryBarrier 16 21 | |
25: 7(int) Load 23(counter) | |
Store 24(param) 25 | |
26: 7(int) FunctionCall 11(func(au1;) 24(param) | |
34: 22(ptr) AccessChain 31(countArr) 33 | |
35: 7(int) Load 34 | |
36: 7(int) AtomicLoad 35 16 17 | |
37: 7(int) Load 34 | |
Store 27(val) 37 | |
38: 7(int) Load 23(counter) | |
39: 7(int) AtomicIDecrement 38 16 17 | |
Branch 6 | |
6: Label | |
Return | |
FunctionEnd | |
11(func(au1;): 7(int) Function None 9 | |
10(c): 8(ptr) FunctionParameter | |
12: Label | |
15: 7(int) Load 10(c) | |
18: 7(int) AtomicIIncrement 15 16 17 | |
19: 7(int) Load 10(c) | |
ReturnValue 19 | |
FunctionEnd | |
13(atoms(): 2 Function None 3 | |
14: Label | |
41(origi): 40(ptr) Variable Function | |
47(origu): 8(ptr) Variable Function | |
44: 32(int) Load 43(atomi) | |
46: 32(int) AtomicIAdd 44 16 17 45 | |
Store 41(origi) 46 | |
50: 7(int) Load 49(atomu) | |
52: 7(int) Load 51(value) | |
53: 7(int) AtomicAnd 50 16 17 52 | |
Store 47(origu) 53 | |
54: 7(int) Load 49(atomu) | |
56: 7(int) AtomicOr 54 16 17 55 | |
Store 47(origu) 56 | |
57: 7(int) Load 49(atomu) | |
58: 7(int) AtomicXor 57 16 17 55 | |
Store 47(origu) 58 | |
59: 7(int) Load 49(atomu) | |
60: 7(int) Load 51(value) | |
61: 7(int) AtomicSMin 59 16 17 60 | |
Store 47(origu) 61 | |
62: 32(int) Load 43(atomi) | |
64: 32(int) AtomicSMax 62 16 17 63 | |
Store 41(origi) 64 | |
65: 32(int) Load 43(atomi) | |
66: 32(int) Load 41(origi) | |
67: 32(int) AtomicExchange 65 16 17 66 | |
Store 41(origi) 67 | |
68: 7(int) Load 49(atomu) | |
70: 7(int) Load 51(value) | |
71: 7(int) AtomicCompareExchange 68 16 17 69 70 | |
Store 47(origu) 71 | |
Return | |
FunctionEnd |