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 75 | |
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 22 "counter" | |
Name 23 "param" | |
Name 26 "val" | |
Name 30 "countArr" | |
Name 39 "origi" | |
Name 41 "atomi" | |
Name 45 "origu" | |
Name 47 "atomu" | |
Name 49 "value" | |
Name 72 "arrX" | |
Name 73 "arrY" | |
Name 74 "arrZ" | |
Decorate 22(counter) Binding 0 | |
Decorate 30(countArr) Binding 0 | |
Decorate 72(arrX) NoStaticUse | |
Decorate 73(arrY) NoStaticUse | |
Decorate 74(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 | |
20: 7(int) Constant 256 | |
21: TypePointer UniformConstant 7(int) | |
22(counter): 21(ptr) Variable UniformConstant | |
27: 7(int) Constant 4 | |
28: TypeArray 7(int) 27 | |
29: TypePointer UniformConstant 28 | |
30(countArr): 29(ptr) Variable UniformConstant | |
31: TypeInt 32 1 | |
32: 31(int) Constant 2 | |
38: TypePointer Function 31(int) | |
40: TypePointer WorkgroupLocal 31(int) | |
41(atomi): 40(ptr) Variable WorkgroupLocal | |
43: 31(int) Constant 3 | |
46: TypePointer WorkgroupLocal 7(int) | |
47(atomu): 46(ptr) Variable WorkgroupLocal | |
49(value): 21(ptr) Variable UniformConstant | |
53: 7(int) Constant 7 | |
61: 31(int) Constant 7 | |
67: 7(int) Constant 10 | |
70: TypeArray 31(int) 16 | |
71: TypePointer PrivateGlobal 70 | |
72(arrX): 71(ptr) Variable PrivateGlobal | |
73(arrY): 71(ptr) Variable PrivateGlobal | |
74(arrZ): 71(ptr) Variable PrivateGlobal | |
4(main): 2 Function None 3 | |
5: Label | |
23(param): 8(ptr) Variable Function | |
26(val): 8(ptr) Variable Function | |
MemoryBarrier 16 20 | |
24: 7(int) Load 22(counter) | |
Store 23(param) 24 | |
25: 7(int) FunctionCall 11(func(au1;) 23(param) | |
33: 21(ptr) AccessChain 30(countArr) 32 | |
34: 7(int) Load 33 | |
35: 7(int) AtomicLoad 34 16 17 | |
Store 26(val) 35 | |
36: 7(int) Load 22(counter) | |
37: 7(int) AtomicIDecrement 36 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 | |
ReturnValue 18 | |
FunctionEnd | |
13(atoms(): 2 Function None 3 | |
14: Label | |
39(origi): 38(ptr) Variable Function | |
45(origu): 8(ptr) Variable Function | |
42: 31(int) Load 41(atomi) | |
44: 31(int) AtomicIAdd 42 16 17 43 | |
Store 39(origi) 44 | |
48: 7(int) Load 47(atomu) | |
50: 7(int) Load 49(value) | |
51: 7(int) AtomicAnd 48 16 17 50 | |
Store 45(origu) 51 | |
52: 7(int) Load 47(atomu) | |
54: 7(int) AtomicOr 52 16 17 53 | |
Store 45(origu) 54 | |
55: 7(int) Load 47(atomu) | |
56: 7(int) AtomicXor 55 16 17 53 | |
Store 45(origu) 56 | |
57: 7(int) Load 47(atomu) | |
58: 7(int) Load 49(value) | |
59: 7(int) AtomicSMin 57 16 17 58 | |
Store 45(origu) 59 | |
60: 31(int) Load 41(atomi) | |
62: 31(int) AtomicSMax 60 16 17 61 | |
Store 39(origi) 62 | |
63: 31(int) Load 41(atomi) | |
64: 31(int) Load 39(origi) | |
65: 31(int) AtomicExchange 63 16 17 64 | |
Store 39(origi) 65 | |
66: 7(int) Load 47(atomu) | |
68: 7(int) Load 49(value) | |
69: 7(int) AtomicCompareExchange 66 16 17 67 68 | |
Store 45(origu) 69 | |
Return | |
FunctionEnd |