blob: 2ee4978fe603e9a64ceddfaba5346239a36e399e [file] [log] [blame]
John Kessenichcc16fa02015-12-10 18:01:54 -07001spv.atomic.comp
2Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
3
4
5Linked compute stage:
6
7
8TBD functionality: Is atomic_uint an opaque handle in the uniform storage class, or an addresses in the atomic storage class?
9// Module Version 10000
10// Generated by (magic number): 80001
11// Id's are bound by 74
12
13 Capability Shader
14 1: ExtInstImport "GLSL.std.450"
15 MemoryModel Logical GLSL450
16 EntryPoint GLCompute 4 "main"
17 ExecutionMode 4 LocalSize 1 1 1
18 Source ESSL 310
19 Name 4 "main"
20 Name 10 "func(au1;"
21 Name 9 "c"
22 Name 12 "atoms("
23 Name 20 "counter"
24 Name 21 "param"
25 Name 24 "val"
26 Name 28 "countArr"
27 Name 35 "origi"
28 Name 37 "atomi"
29 Name 40 "origu"
30 Name 42 "atomu"
31 Name 44 "value"
32 Name 61 "dataSSB"
33 MemberName 61(dataSSB) 0 "f"
34 MemberName 61(dataSSB) 1 "n_frames_rendered"
35 Name 63 "result"
36 Name 71 "arrX"
37 Name 72 "arrY"
38 Name 73 "arrZ"
39 Decorate 20(counter) Binding 0
40 Decorate 28(countArr) Binding 0
41 MemberDecorate 61(dataSSB) 0 Offset 0
42 MemberDecorate 61(dataSSB) 1 Offset 16
43 Decorate 61(dataSSB) BufferBlock
44 Decorate 63(result) Binding 0
45 2: TypeVoid
46 3: TypeFunction 2
47 6: TypeInt 32 0
48 7: TypePointer Function 6(int)
49 8: TypeFunction 6(int) 7(ptr)
50 14: 6(int) Constant 1
51 15: 6(int) Constant 0
52 18: 6(int) Constant 1024
53 19: TypePointer AtomicCounter 6(int)
54 20(counter): 19(ptr) Variable AtomicCounter
55 25: 6(int) Constant 4
56 26: TypeArray 6(int) 25
57 27: TypePointer AtomicCounter 26
58 28(countArr): 27(ptr) Variable AtomicCounter
59 29: TypeInt 32 1
60 30: 29(int) Constant 2
61 34: TypePointer Function 29(int)
62 36: TypePointer Workgroup 29(int)
63 37(atomi): 36(ptr) Variable Workgroup
64 38: 29(int) Constant 3
65 41: TypePointer Workgroup 6(int)
66 42(atomu): 41(ptr) Variable Workgroup
67 43: TypePointer UniformConstant 6(int)
68 44(value): 43(ptr) Variable UniformConstant
69 47: 6(int) Constant 7
70 52: 29(int) Constant 7
71 56: 6(int) Constant 10
72 59: TypeFloat 32
73 60: TypeVector 29(int) 4
74 61(dataSSB): TypeStruct 59(float) 60(ivec4)
75 62: TypePointer Uniform 61(dataSSB)
76 63(result): 62(ptr) Variable Uniform
77 64: 29(int) Constant 1
78 65: 6(int) Constant 2
79 66: TypePointer Uniform 29(int)
80 69: TypeArray 29(int) 14
81 70: TypePointer Private 69
82 71(arrX): 70(ptr) Variable Private
83 72(arrY): 70(ptr) Variable Private
84 73(arrZ): 70(ptr) Variable Private
85 4(main): 2 Function None 3
86 5: Label
87 21(param): 7(ptr) Variable Function
88 24(val): 7(ptr) Variable Function
89 MemoryBarrier 14 18
90 22: 6(int) Load 20(counter)
91 Store 21(param) 22
92 23: 6(int) FunctionCall 10(func(au1;) 21(param)
93 31: 19(ptr) AccessChain 28(countArr) 30
94 32: 6(int) AtomicLoad 31 14 15
95 Store 24(val) 32
96 33: 6(int) AtomicIDecrement 20(counter) 14 15
97 Return
98 FunctionEnd
99 10(func(au1;): 6(int) Function None 8
100 9(c): 7(ptr) FunctionParameter
101 11: Label
102 16: 6(int) AtomicIIncrement 9(c) 14 15
103 ReturnValue 16
104 FunctionEnd
105 12(atoms(): 2 Function None 3
106 13: Label
107 35(origi): 34(ptr) Variable Function
108 40(origu): 7(ptr) Variable Function
109 39: 29(int) AtomicIAdd 37(atomi) 14 15 38
110 Store 35(origi) 39
111 45: 6(int) Load 44(value)
112 46: 6(int) AtomicAnd 42(atomu) 14 15 45
113 Store 40(origu) 46
114 48: 6(int) AtomicOr 42(atomu) 14 15 47
115 Store 40(origu) 48
116 49: 6(int) AtomicXor 42(atomu) 14 15 47
117 Store 40(origu) 49
118 50: 6(int) Load 44(value)
119 51: 6(int) AtomicUMin 42(atomu) 14 15 50
120 Store 40(origu) 51
121 53: 29(int) AtomicSMax 37(atomi) 14 15 52
122 Store 35(origi) 53
123 54: 29(int) Load 35(origi)
124 55: 29(int) AtomicExchange 37(atomi) 14 15 54
125 Store 35(origi) 55
126 57: 6(int) Load 44(value)
127 58: 6(int) AtomicCompareExchange 42(atomu) 14 15 15 57 56
128 Store 40(origu) 58
129 67: 66(ptr) AccessChain 63(result) 64 65
130 68: 29(int) AtomicIAdd 67 14 15 64
131 Return
132 FunctionEnd