blob: 2ee4978fe603e9a64ceddfaba5346239a36e399e [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 10000
// Generated by (magic number): 80001
// Id's are bound by 74
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "main"
ExecutionMode 4 LocalSize 1 1 1
Source ESSL 310
Name 4 "main"
Name 10 "func(au1;"
Name 9 "c"
Name 12 "atoms("
Name 20 "counter"
Name 21 "param"
Name 24 "val"
Name 28 "countArr"
Name 35 "origi"
Name 37 "atomi"
Name 40 "origu"
Name 42 "atomu"
Name 44 "value"
Name 61 "dataSSB"
MemberName 61(dataSSB) 0 "f"
MemberName 61(dataSSB) 1 "n_frames_rendered"
Name 63 "result"
Name 71 "arrX"
Name 72 "arrY"
Name 73 "arrZ"
Decorate 20(counter) Binding 0
Decorate 28(countArr) Binding 0
MemberDecorate 61(dataSSB) 0 Offset 0
MemberDecorate 61(dataSSB) 1 Offset 16
Decorate 61(dataSSB) BufferBlock
Decorate 63(result) Binding 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
7: TypePointer Function 6(int)
8: TypeFunction 6(int) 7(ptr)
14: 6(int) Constant 1
15: 6(int) Constant 0
18: 6(int) Constant 1024
19: TypePointer AtomicCounter 6(int)
20(counter): 19(ptr) Variable AtomicCounter
25: 6(int) Constant 4
26: TypeArray 6(int) 25
27: TypePointer AtomicCounter 26
28(countArr): 27(ptr) Variable AtomicCounter
29: TypeInt 32 1
30: 29(int) Constant 2
34: TypePointer Function 29(int)
36: TypePointer Workgroup 29(int)
37(atomi): 36(ptr) Variable Workgroup
38: 29(int) Constant 3
41: TypePointer Workgroup 6(int)
42(atomu): 41(ptr) Variable Workgroup
43: TypePointer UniformConstant 6(int)
44(value): 43(ptr) Variable UniformConstant
47: 6(int) Constant 7
52: 29(int) Constant 7
56: 6(int) Constant 10
59: TypeFloat 32
60: TypeVector 29(int) 4
61(dataSSB): TypeStruct 59(float) 60(ivec4)
62: TypePointer Uniform 61(dataSSB)
63(result): 62(ptr) Variable Uniform
64: 29(int) Constant 1
65: 6(int) Constant 2
66: TypePointer Uniform 29(int)
69: TypeArray 29(int) 14
70: TypePointer Private 69
71(arrX): 70(ptr) Variable Private
72(arrY): 70(ptr) Variable Private
73(arrZ): 70(ptr) Variable Private
4(main): 2 Function None 3
5: Label
21(param): 7(ptr) Variable Function
24(val): 7(ptr) Variable Function
MemoryBarrier 14 18
22: 6(int) Load 20(counter)
Store 21(param) 22
23: 6(int) FunctionCall 10(func(au1;) 21(param)
31: 19(ptr) AccessChain 28(countArr) 30
32: 6(int) AtomicLoad 31 14 15
Store 24(val) 32
33: 6(int) AtomicIDecrement 20(counter) 14 15
Return
FunctionEnd
10(func(au1;): 6(int) Function None 8
9(c): 7(ptr) FunctionParameter
11: Label
16: 6(int) AtomicIIncrement 9(c) 14 15
ReturnValue 16
FunctionEnd
12(atoms(): 2 Function None 3
13: Label
35(origi): 34(ptr) Variable Function
40(origu): 7(ptr) Variable Function
39: 29(int) AtomicIAdd 37(atomi) 14 15 38
Store 35(origi) 39
45: 6(int) Load 44(value)
46: 6(int) AtomicAnd 42(atomu) 14 15 45
Store 40(origu) 46
48: 6(int) AtomicOr 42(atomu) 14 15 47
Store 40(origu) 48
49: 6(int) AtomicXor 42(atomu) 14 15 47
Store 40(origu) 49
50: 6(int) Load 44(value)
51: 6(int) AtomicUMin 42(atomu) 14 15 50
Store 40(origu) 51
53: 29(int) AtomicSMax 37(atomi) 14 15 52
Store 35(origi) 53
54: 29(int) Load 35(origi)
55: 29(int) AtomicExchange 37(atomi) 14 15 54
Store 35(origi) 55
57: 6(int) Load 44(value)
58: 6(int) AtomicCompareExchange 42(atomu) 14 15 15 57 56
Store 40(origu) 58
67: 66(ptr) AccessChain 63(result) 64 65
68: 29(int) AtomicIAdd 67 14 15 64
Return
FunctionEnd