blob: c5183807e70410cc11ecae5f7886828d791e55cb [file] [log] [blame]
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
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint GLCompute 4
Name 4 "main"
Name 11 "func(au1;"
Name 10 "c"
Name 13 "atoms("
Name 20 "counter"
Name 21 "param"
Name 24 "val"
Name 28 "countArr"
Name 38 "origi"
Name 40 "atomi"
Name 44 "origu"
Name 46 "atomu"
Name 48 "value"
Name 72 "arrX"
Name 73 "arrY"
Name 74 "arrZ"
Decorate 20(counter) PrecisionHigh
Decorate 20(counter) Binding 0
Decorate 24(val) PrecisionHigh
Decorate 28(countArr) PrecisionHigh
Decorate 28(countArr) Binding 0
Decorate 38(origi) PrecisionHigh
Decorate 40(atomi) PrecisionHigh
Decorate 44(origu) PrecisionHigh
Decorate 46(atomu) PrecisionHigh
Decorate 48(value) PrecisionHigh
Decorate 72(arrX) PrecisionHigh
Decorate 72(arrX) NoStaticUse
Decorate 73(arrY) PrecisionHigh
Decorate 73(arrY) NoStaticUse
Decorate 74(arrZ) PrecisionHigh
Decorate 74(arrZ) NoStaticUse
2: TypeVoid
3: TypeFunction 2
7: TypeInt 32 0
8: TypePointer Function 7(int)
9: TypeFunction 7(int) 8(ptr)
19: TypePointer UniformConstant 7(int)
20(counter): 19(ptr) Variable UniformConstant
25: 7(int) Constant 4
26: TypeArray 7(int) 25
27: TypePointer UniformConstant 26
28(countArr): 27(ptr) Variable UniformConstant
29: TypeInt 32 1
30: 29(int) Constant 2
37: TypePointer Function 29(int)
39: TypePointer WorkgroupLocal 29(int)
40(atomi): 39(ptr) Variable WorkgroupLocal
42: 29(int) Constant 3
45: TypePointer WorkgroupLocal 7(int)
46(atomu): 45(ptr) Variable WorkgroupLocal
48(value): 19(ptr) Variable UniformConstant
52: 7(int) Constant 7
60: 29(int) Constant 7
66: 7(int) Constant 10
69: 7(int) Constant 1
70: TypeArray 29(int) 69
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
21(param): 8(ptr) Variable Function
24(val): 8(ptr) Variable Function
MemoryBarrier Device AtomicCounterMemory
22: 7(int) Load 20(counter)
Store 21(param) 22
23: 7(int) FunctionCall 11(func(au1;) 21(param)
31: 19(ptr) AccessChain 28(countArr) 30
32: 7(int) Load 31
33: 7(int) AtomicLoad 32 Device None
34: 7(int) Load 31
Store 24(val) 34
35: 7(int) Load 20(counter)
36: 7(int) AtomicIDecrement 35 Device None
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)
16: 7(int) AtomicIIncrement 15 Device None
17: 7(int) Load 10(c)
ReturnValue 17
FunctionEnd
13(atoms(): 2 Function None 3
14: Label
38(origi): 37(ptr) Variable Function
44(origu): 8(ptr) Variable Function
41: 29(int) Load 40(atomi)
43: 29(int) AtomicIAdd 41 Device None 42
Store 38(origi) 43
47: 7(int) Load 46(atomu)
49: 7(int) Load 48(value)
50: 7(int) AtomicAnd 47 Device None 49
Store 44(origu) 50
51: 7(int) Load 46(atomu)
53: 7(int) AtomicOr 51 Device None 52
Store 44(origu) 53
54: 7(int) Load 46(atomu)
55: 7(int) AtomicXor 54 Device None 52
Store 44(origu) 55
56: 7(int) Load 46(atomu)
57: 7(int) Load 48(value)
58: 7(int) AtomicIMin 56 Device None 57
Store 44(origu) 58
59: 29(int) Load 40(atomi)
61: 29(int) AtomicIMax 59 Device None 60
Store 38(origi) 61
62: 29(int) Load 40(atomi)
63: 29(int) Load 38(origi)
64: 29(int) AtomicExchange 62 Device None 63
Store 38(origi) 64
65: 7(int) Load 46(atomu)
67: 7(int) Load 48(value)
68: 7(int) AtomicCompareExchange 65 Device None 66 67
Store 44(origu) 68
Return
FunctionEnd