HLSL: allow mixed user & builtin members in hull shader output structure
[platform/upstream/glslang.git] / Test / baseResults / hlsl.hull.1.tesc.out
1 hlsl.hull.1.tesc
2 Shader version: 500
3 vertices = 4
4 vertex spacing = equal_spacing
5 0:? Sequence
6 0:26  Function Definition: @main(struct-VS_OUT-vf31[4];u1; ( temp structure{ temp 3-component vector of float cpoint})
7 0:26    Function Parameters: 
8 0:26      'ip' ( in 4-element array of structure{ temp 3-component vector of float cpoint})
9 0:26      'm_cpid' ( in uint)
10 0:?     Sequence
11 0:28      move second child to first child ( temp 3-component vector of float)
12 0:28        cpoint: direct index for structure ( temp 3-component vector of float)
13 0:28          'output' ( temp structure{ temp 3-component vector of float cpoint})
14 0:28          Constant:
15 0:28            0 (const int)
16 0:28        cpoint: direct index for structure ( temp 3-component vector of float)
17 0:28          direct index ( temp structure{ temp 3-component vector of float cpoint})
18 0:28            'ip' ( in 4-element array of structure{ temp 3-component vector of float cpoint})
19 0:28            Constant:
20 0:28              0 (const int)
21 0:28          Constant:
22 0:28            0 (const int)
23 0:29      Branch: Return with expression
24 0:29        'output' ( temp structure{ temp 3-component vector of float cpoint})
25 0:26  Function Definition: main( ( temp void)
26 0:26    Function Parameters: 
27 0:?     Sequence
28 0:26      move second child to first child ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
29 0:?         'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
30 0:?         'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint})
31 0:26      move second child to first child ( temp uint)
32 0:?         'm_cpid' ( temp uint)
33 0:?         'm_cpid' ( in uint InvocationID)
34 0:26      move second child to first child ( temp structure{ temp 3-component vector of float cpoint})
35 0:26        indirect index (layout( location=0) out structure{ temp 3-component vector of float cpoint})
36 0:?           '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint})
37 0:?           'm_cpid' ( in uint InvocationID)
38 0:26        Function Call: @main(struct-VS_OUT-vf31[4];u1; ( temp structure{ temp 3-component vector of float cpoint})
39 0:?           'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
40 0:?           'm_cpid' ( temp uint)
41 0:?       Barrier ( temp void)
42 0:?       Test condition and select ( temp void)
43 0:?         Condition
44 0:?         Compare Equal ( temp bool)
45 0:?           'm_cpid' ( in uint InvocationID)
46 0:?           Constant:
47 0:?             0 (const int)
48 0:?         true case
49 0:?         Sequence
50 0:?           move second child to first child ( temp structure{ temp 2-element array of float edges})
51 0:?             '@patchConstantResult' ( temp structure{ temp 2-element array of float edges})
52 0:?             Function Call: PCF(u1; ( temp structure{ temp 2-element array of float edges})
53 0:?               'pid' ( in uint PrimitiveID)
54 0:?           Sequence
55 0:?             move second child to first child ( temp float)
56 0:?               direct index ( patch out float TessLevelOuter)
57 0:?                 '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
58 0:?                 Constant:
59 0:?                   0 (const int)
60 0:?               direct index ( temp float)
61 0:?                 edges: direct index for structure ( temp 2-element array of float)
62 0:?                   '@patchConstantResult' ( temp structure{ temp 2-element array of float edges})
63 0:?                   Constant:
64 0:?                     0 (const int)
65 0:?                 Constant:
66 0:?                   0 (const int)
67 0:?             move second child to first child ( temp float)
68 0:?               direct index ( patch out float TessLevelOuter)
69 0:?                 '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
70 0:?                 Constant:
71 0:?                   1 (const int)
72 0:?               direct index ( temp float)
73 0:?                 edges: direct index for structure ( temp 2-element array of float)
74 0:?                   '@patchConstantResult' ( temp structure{ temp 2-element array of float edges})
75 0:?                   Constant:
76 0:?                     0 (const int)
77 0:?                 Constant:
78 0:?                   1 (const int)
79 0:33  Function Definition: PCF(u1; ( temp structure{ temp 2-element array of float edges})
80 0:33    Function Parameters: 
81 0:33      'pid' ( in uint)
82 0:?     Sequence
83 0:36      move second child to first child ( temp float)
84 0:36        direct index ( temp float)
85 0:36          edges: direct index for structure ( temp 2-element array of float)
86 0:36            'output' ( temp structure{ temp 2-element array of float edges})
87 0:36            Constant:
88 0:36              0 (const int)
89 0:36          Constant:
90 0:36            0 (const int)
91 0:36        Constant:
92 0:36          2.000000
93 0:37      move second child to first child ( temp float)
94 0:37        direct index ( temp float)
95 0:37          edges: direct index for structure ( temp 2-element array of float)
96 0:37            'output' ( temp structure{ temp 2-element array of float edges})
97 0:37            Constant:
98 0:37              0 (const int)
99 0:37          Constant:
100 0:37            1 (const int)
101 0:37        Constant:
102 0:37          8.000000
103 0:38      Branch: Return with expression
104 0:38        'output' ( temp structure{ temp 2-element array of float edges})
105 0:?   Linker Objects
106 0:?     '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint})
107 0:?     'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint})
108 0:?     'm_cpid' ( in uint InvocationID)
109 0:?     'pid' ( in uint PrimitiveID)
110 0:?     '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
111
112
113 Linked tessellation control stage:
114
115
116 Shader version: 500
117 vertices = 4
118 vertex spacing = equal_spacing
119 0:? Sequence
120 0:26  Function Definition: @main(struct-VS_OUT-vf31[4];u1; ( temp structure{ temp 3-component vector of float cpoint})
121 0:26    Function Parameters: 
122 0:26      'ip' ( in 4-element array of structure{ temp 3-component vector of float cpoint})
123 0:26      'm_cpid' ( in uint)
124 0:?     Sequence
125 0:28      move second child to first child ( temp 3-component vector of float)
126 0:28        cpoint: direct index for structure ( temp 3-component vector of float)
127 0:28          'output' ( temp structure{ temp 3-component vector of float cpoint})
128 0:28          Constant:
129 0:28            0 (const int)
130 0:28        cpoint: direct index for structure ( temp 3-component vector of float)
131 0:28          direct index ( temp structure{ temp 3-component vector of float cpoint})
132 0:28            'ip' ( in 4-element array of structure{ temp 3-component vector of float cpoint})
133 0:28            Constant:
134 0:28              0 (const int)
135 0:28          Constant:
136 0:28            0 (const int)
137 0:29      Branch: Return with expression
138 0:29        'output' ( temp structure{ temp 3-component vector of float cpoint})
139 0:26  Function Definition: main( ( temp void)
140 0:26    Function Parameters: 
141 0:?     Sequence
142 0:26      move second child to first child ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
143 0:?         'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
144 0:?         'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint})
145 0:26      move second child to first child ( temp uint)
146 0:?         'm_cpid' ( temp uint)
147 0:?         'm_cpid' ( in uint InvocationID)
148 0:26      move second child to first child ( temp structure{ temp 3-component vector of float cpoint})
149 0:26        indirect index (layout( location=0) out structure{ temp 3-component vector of float cpoint})
150 0:?           '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint})
151 0:?           'm_cpid' ( in uint InvocationID)
152 0:26        Function Call: @main(struct-VS_OUT-vf31[4];u1; ( temp structure{ temp 3-component vector of float cpoint})
153 0:?           'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
154 0:?           'm_cpid' ( temp uint)
155 0:?       Barrier ( temp void)
156 0:?       Test condition and select ( temp void)
157 0:?         Condition
158 0:?         Compare Equal ( temp bool)
159 0:?           'm_cpid' ( in uint InvocationID)
160 0:?           Constant:
161 0:?             0 (const int)
162 0:?         true case
163 0:?         Sequence
164 0:?           move second child to first child ( temp structure{ temp 2-element array of float edges})
165 0:?             '@patchConstantResult' ( temp structure{ temp 2-element array of float edges})
166 0:?             Function Call: PCF(u1; ( temp structure{ temp 2-element array of float edges})
167 0:?               'pid' ( in uint PrimitiveID)
168 0:?           Sequence
169 0:?             move second child to first child ( temp float)
170 0:?               direct index ( patch out float TessLevelOuter)
171 0:?                 '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
172 0:?                 Constant:
173 0:?                   0 (const int)
174 0:?               direct index ( temp float)
175 0:?                 edges: direct index for structure ( temp 2-element array of float)
176 0:?                   '@patchConstantResult' ( temp structure{ temp 2-element array of float edges})
177 0:?                   Constant:
178 0:?                     0 (const int)
179 0:?                 Constant:
180 0:?                   0 (const int)
181 0:?             move second child to first child ( temp float)
182 0:?               direct index ( patch out float TessLevelOuter)
183 0:?                 '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
184 0:?                 Constant:
185 0:?                   1 (const int)
186 0:?               direct index ( temp float)
187 0:?                 edges: direct index for structure ( temp 2-element array of float)
188 0:?                   '@patchConstantResult' ( temp structure{ temp 2-element array of float edges})
189 0:?                   Constant:
190 0:?                     0 (const int)
191 0:?                 Constant:
192 0:?                   1 (const int)
193 0:33  Function Definition: PCF(u1; ( temp structure{ temp 2-element array of float edges})
194 0:33    Function Parameters: 
195 0:33      'pid' ( in uint)
196 0:?     Sequence
197 0:36      move second child to first child ( temp float)
198 0:36        direct index ( temp float)
199 0:36          edges: direct index for structure ( temp 2-element array of float)
200 0:36            'output' ( temp structure{ temp 2-element array of float edges})
201 0:36            Constant:
202 0:36              0 (const int)
203 0:36          Constant:
204 0:36            0 (const int)
205 0:36        Constant:
206 0:36          2.000000
207 0:37      move second child to first child ( temp float)
208 0:37        direct index ( temp float)
209 0:37          edges: direct index for structure ( temp 2-element array of float)
210 0:37            'output' ( temp structure{ temp 2-element array of float edges})
211 0:37            Constant:
212 0:37              0 (const int)
213 0:37          Constant:
214 0:37            1 (const int)
215 0:37        Constant:
216 0:37          8.000000
217 0:38      Branch: Return with expression
218 0:38        'output' ( temp structure{ temp 2-element array of float edges})
219 0:?   Linker Objects
220 0:?     '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint})
221 0:?     'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint})
222 0:?     'm_cpid' ( in uint InvocationID)
223 0:?     'pid' ( in uint PrimitiveID)
224 0:?     '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
225
226 // Module Version 10000
227 // Generated by (magic number): 80001
228 // Id's are bound by 90
229
230                               Capability Tessellation
231                1:             ExtInstImport  "GLSL.std.450"
232                               MemoryModel Logical GLSL450
233                               EntryPoint TessellationControl 4  "main" 40 44 48 66 72
234                               ExecutionMode 4 OutputVertices 4
235                               ExecutionMode 4 Isolines
236                               ExecutionMode 4 SpacingEqual
237                               Source HLSL 500
238                               Name 4  "main"
239                               Name 8  "VS_OUT"
240                               MemberName 8(VS_OUT) 0  "cpoint"
241                               Name 14  "HS_OUT"
242                               MemberName 14(HS_OUT) 0  "cpoint"
243                               Name 18  "@main(struct-VS_OUT-vf31[4];u1;"
244                               Name 16  "ip"
245                               Name 17  "m_cpid"
246                               Name 22  "HS_CONSTANT_OUT"
247                               MemberName 22(HS_CONSTANT_OUT) 0  "edges"
248                               Name 25  "PCF(u1;"
249                               Name 24  "pid"
250                               Name 28  "output"
251                               Name 38  "ip"
252                               Name 40  "ip"
253                               Name 42  "m_cpid"
254                               Name 44  "m_cpid"
255                               Name 48  "@entryPointOutput"
256                               Name 50  "param"
257                               Name 52  "param"
258                               Name 65  "@patchConstantResult"
259                               Name 66  "pid"
260                               Name 67  "param"
261                               Name 72  "@patchConstantOutput.edges"
262                               Name 82  "output"
263                               Decorate 40(ip) Location 0
264                               Decorate 44(m_cpid) BuiltIn InvocationId
265                               Decorate 48(@entryPointOutput) Location 0
266                               Decorate 66(pid) BuiltIn PrimitiveId
267                               Decorate 72(@patchConstantOutput.edges) Patch
268                               Decorate 72(@patchConstantOutput.edges) BuiltIn TessLevelOuter
269                2:             TypeVoid
270                3:             TypeFunction 2
271                6:             TypeFloat 32
272                7:             TypeVector 6(float) 3
273        8(VS_OUT):             TypeStruct 7(fvec3)
274                9:             TypeInt 32 0
275               10:      9(int) Constant 4
276               11:             TypeArray 8(VS_OUT) 10
277               12:             TypePointer Function 11
278               13:             TypePointer Function 9(int)
279       14(HS_OUT):             TypeStruct 7(fvec3)
280               15:             TypeFunction 14(HS_OUT) 12(ptr) 13(ptr)
281               20:      9(int) Constant 2
282               21:             TypeArray 6(float) 20
283 22(HS_CONSTANT_OUT):             TypeStruct 21
284               23:             TypeFunction 22(HS_CONSTANT_OUT) 13(ptr)
285               27:             TypePointer Function 14(HS_OUT)
286               29:             TypeInt 32 1
287               30:     29(int) Constant 0
288               31:             TypePointer Function 7(fvec3)
289               39:             TypePointer Input 11
290           40(ip):     39(ptr) Variable Input
291               43:             TypePointer Input 9(int)
292       44(m_cpid):     43(ptr) Variable Input
293               46:             TypeArray 14(HS_OUT) 10
294               47:             TypePointer Output 46
295 48(@entryPointOutput):     47(ptr) Variable Output
296               55:             TypePointer Output 14(HS_OUT)
297               57:      9(int) Constant 1
298               58:      9(int) Constant 0
299               60:             TypeBool
300               64:             TypePointer Function 22(HS_CONSTANT_OUT)
301          66(pid):     43(ptr) Variable Input
302               70:             TypeArray 6(float) 10
303               71:             TypePointer Output 70
304 72(@patchConstantOutput.edges):     71(ptr) Variable Output
305               73:             TypePointer Function 6(float)
306               76:             TypePointer Output 6(float)
307               78:     29(int) Constant 1
308               83:    6(float) Constant 1073741824
309               85:    6(float) Constant 1090519040
310          4(main):           2 Function None 3
311                5:             Label
312           38(ip):     12(ptr) Variable Function
313       42(m_cpid):     13(ptr) Variable Function
314        50(param):     12(ptr) Variable Function
315        52(param):     13(ptr) Variable Function
316 65(@patchConstantResult):     64(ptr) Variable Function
317        67(param):     13(ptr) Variable Function
318               41:          11 Load 40(ip)
319                               Store 38(ip) 41
320               45:      9(int) Load 44(m_cpid)
321                               Store 42(m_cpid) 45
322               49:      9(int) Load 44(m_cpid)
323               51:          11 Load 38(ip)
324                               Store 50(param) 51
325               53:      9(int) Load 42(m_cpid)
326                               Store 52(param) 53
327               54:  14(HS_OUT) FunctionCall 18(@main(struct-VS_OUT-vf31[4];u1;) 50(param) 52(param)
328               56:     55(ptr) AccessChain 48(@entryPointOutput) 49
329                               Store 56 54
330                               ControlBarrier 20 57 58
331               59:      9(int) Load 44(m_cpid)
332               61:    60(bool) IEqual 59 30
333                               SelectionMerge 63 None
334                               BranchConditional 61 62 63
335               62:               Label
336               68:      9(int)   Load 66(pid)
337                                 Store 67(param) 68
338               69:22(HS_CONSTANT_OUT)   FunctionCall 25(PCF(u1;) 67(param)
339                                 Store 65(@patchConstantResult) 69
340               74:     73(ptr)   AccessChain 65(@patchConstantResult) 30 30
341               75:    6(float)   Load 74
342               77:     76(ptr)   AccessChain 72(@patchConstantOutput.edges) 30
343                                 Store 77 75
344               79:     73(ptr)   AccessChain 65(@patchConstantResult) 30 78
345               80:    6(float)   Load 79
346               81:     76(ptr)   AccessChain 72(@patchConstantOutput.edges) 78
347                                 Store 81 80
348                                 Branch 63
349               63:             Label
350                               Return
351                               FunctionEnd
352 18(@main(struct-VS_OUT-vf31[4];u1;):  14(HS_OUT) Function None 15
353           16(ip):     12(ptr) FunctionParameter
354       17(m_cpid):     13(ptr) FunctionParameter
355               19:             Label
356       28(output):     27(ptr) Variable Function
357               32:     31(ptr) AccessChain 16(ip) 30 30
358               33:    7(fvec3) Load 32
359               34:     31(ptr) AccessChain 28(output) 30
360                               Store 34 33
361               35:  14(HS_OUT) Load 28(output)
362                               ReturnValue 35
363                               FunctionEnd
364      25(PCF(u1;):22(HS_CONSTANT_OUT) Function None 23
365          24(pid):     13(ptr) FunctionParameter
366               26:             Label
367       82(output):     64(ptr) Variable Function
368               84:     73(ptr) AccessChain 82(output) 30 30
369                               Store 84 83
370               86:     73(ptr) AccessChain 82(output) 30 78
371                               Store 86 85
372               87:22(HS_CONSTANT_OUT) Load 82(output)
373                               ReturnValue 87
374                               FunctionEnd