blob: d8650e7997f84944b351a8887abcc21cb5bbeb16 [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
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