• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // GENERATED FILE - DO NOT EDIT.
2 // Generated by generate_tests.py
3 //
4 // Copyright (c) 2022 Google LLC.
5 //
6 // Licensed under the Apache License, Version 2.0 (the "License");
7 // you may not use this file except in compliance with the License.
8 // You may obtain a copy of the License at
9 //
10 //     http://www.apache.org/licenses/LICENSE-2.0
11 //
12 // Unless required by applicable law or agreed to in writing, software
13 // distributed under the License is distributed on an "AS IS" BASIS,
14 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 // See the License for the specific language governing permissions and
16 // limitations under the License.
17 
18 #include "../diff_test_utils.h"
19 
20 #include "gtest/gtest.h"
21 
22 namespace spvtools {
23 namespace diff {
24 namespace {
25 
26 // Test where src and dst have a function with different parameter count.
27 constexpr char kSrc[] = R"(; SPIR-V
28 ; Version: 1.0
29 ; Generator: Khronos Glslang Reference Front End; 10
30 ; Bound: 25
31 ; Schema: 0
32                OpCapability Shader
33           %1 = OpExtInstImport "GLSL.std.450"
34                OpMemoryModel Logical GLSL450
35                OpEntryPoint Fragment %4 "main" %20
36                OpExecutionMode %4 OriginUpperLeft
37                OpSource ESSL 320
38                OpName %4 "main"
39                OpName %11 "f(vf2;"
40                OpName %10 "v"
41                OpName %20 "o"
42                OpName %23 "param"
43                OpDecorate %20 RelaxedPrecision
44                OpDecorate %20 Location 0
45           %2 = OpTypeVoid
46           %3 = OpTypeFunction %2
47           %6 = OpTypeFloat 32
48           %7 = OpTypeVector %6 2
49           %8 = OpTypePointer Function %7
50           %9 = OpTypeFunction %7 %8
51          %14 = OpConstant %6 0.5
52          %15 = OpConstantComposite %7 %14 %14
53          %19 = OpTypePointer Output %7
54          %20 = OpVariable %19 Output
55          %21 = OpConstant %6 0
56          %22 = OpConstantComposite %7 %21 %21
57           %4 = OpFunction %2 None %3
58           %5 = OpLabel
59          %23 = OpVariable %8 Function
60                OpStore %23 %22
61          %24 = OpFunctionCall %7 %11 %23
62                OpStore %20 %24
63                OpReturn
64                OpFunctionEnd
65          %11 = OpFunction %7 None %9
66          %10 = OpFunctionParameter %8
67          %12 = OpLabel
68          %13 = OpLoad %7 %10
69          %16 = OpFAdd %7 %13 %15
70                OpReturnValue %16
71                OpFunctionEnd)";
72 constexpr char kDst[] = R"(; SPIR-V
73 ; Version: 1.0
74 ; Generator: Khronos Glslang Reference Front End; 10
75 ; Bound: 28
76 ; Schema: 0
77                OpCapability Shader
78           %1 = OpExtInstImport "GLSL.std.450"
79                OpMemoryModel Logical GLSL450
80                OpEntryPoint Fragment %4 "main" %20
81                OpExecutionMode %4 OriginUpperLeft
82                OpSource ESSL 320
83                OpName %4 "main"
84                OpName %12 "f(vf2;vf2;"
85                OpName %10 "v"
86                OpName %11 "v2"
87                OpName %20 "o"
88                OpName %25 "param"
89                OpName %26 "param"
90                OpDecorate %20 RelaxedPrecision
91                OpDecorate %20 Location 0
92           %2 = OpTypeVoid
93           %3 = OpTypeFunction %2
94           %6 = OpTypeFloat 32
95           %7 = OpTypeVector %6 2
96           %8 = OpTypePointer Function %7
97           %9 = OpTypeFunction %7 %8 %8
98          %19 = OpTypePointer Output %7
99          %20 = OpVariable %19 Output
100          %21 = OpConstant %6 0
101          %22 = OpConstantComposite %7 %21 %21
102          %23 = OpConstant %6 0.5
103          %24 = OpConstantComposite %7 %23 %23
104           %4 = OpFunction %2 None %3
105           %5 = OpLabel
106          %25 = OpVariable %8 Function
107          %26 = OpVariable %8 Function
108                OpStore %25 %22
109                OpStore %26 %24
110          %27 = OpFunctionCall %7 %12 %25 %26
111                OpStore %20 %27
112                OpReturn
113                OpFunctionEnd
114          %12 = OpFunction %7 None %9
115          %10 = OpFunctionParameter %8
116          %11 = OpFunctionParameter %8
117          %13 = OpLabel
118          %14 = OpLoad %7 %10
119          %15 = OpLoad %7 %11
120          %16 = OpFAdd %7 %14 %15
121                OpReturnValue %16
122                OpFunctionEnd
123 
124 )";
125 
TEST(DiffTest,DifferentFunctionParameterCount)126 TEST(DiffTest, DifferentFunctionParameterCount) {
127   constexpr char kDiff[] = R"( ; SPIR-V
128  ; Version: 1.6
129  ; Generator: Khronos SPIR-V Tools Assembler; 0
130 -; Bound: 25
131 +; Bound: 33
132  ; Schema: 0
133  OpCapability Shader
134  %1 = OpExtInstImport "GLSL.std.450"
135  OpMemoryModel Logical GLSL450
136  OpEntryPoint Fragment %4 "main" %20
137  OpExecutionMode %4 OriginUpperLeft
138  OpSource ESSL 320
139  OpName %4 "main"
140 -OpName %11 "f(vf2;"
141 +OpName %11 "f(vf2;vf2;"
142  OpName %10 "v"
143 +OpName %26 "v2"
144  OpName %20 "o"
145  OpName %23 "param"
146 +OpName %31 "param"
147  OpDecorate %20 RelaxedPrecision
148  OpDecorate %20 Location 0
149  %2 = OpTypeVoid
150  %3 = OpTypeFunction %2
151  %6 = OpTypeFloat 32
152  %7 = OpTypeVector %6 2
153  %8 = OpTypePointer Function %7
154 -%9 = OpTypeFunction %7 %8
155 +%25 = OpTypeFunction %7 %8 %8
156  %14 = OpConstant %6 0.5
157  %15 = OpConstantComposite %7 %14 %14
158  %19 = OpTypePointer Output %7
159  %20 = OpVariable %19 Output
160  %21 = OpConstant %6 0
161  %22 = OpConstantComposite %7 %21 %21
162  %4 = OpFunction %2 None %3
163  %5 = OpLabel
164  %23 = OpVariable %8 Function
165 +%31 = OpVariable %8 Function
166  OpStore %23 %22
167 -%24 = OpFunctionCall %7 %11 %23
168 +OpStore %31 %15
169 +%32 = OpFunctionCall %7 %11 %23 %31
170 -OpStore %20 %24
171 +OpStore %20 %32
172  OpReturn
173  OpFunctionEnd
174 -%11 = OpFunction %7 None %9
175 +%11 = OpFunction %7 None %25
176  %10 = OpFunctionParameter %8
177 +%26 = OpFunctionParameter %8
178  %12 = OpLabel
179  %13 = OpLoad %7 %10
180 -%16 = OpFAdd %7 %13 %15
181 +%27 = OpLoad %7 %26
182 +%28 = OpFAdd %7 %13 %27
183 -OpReturnValue %16
184 +OpReturnValue %28
185  OpFunctionEnd
186 )";
187   Options options;
188   DoStringDiffTest(kSrc, kDst, kDiff, options);
189 }
190 
TEST(DiffTest,DifferentFunctionParameterCountNoDebug)191 TEST(DiffTest, DifferentFunctionParameterCountNoDebug) {
192   constexpr char kSrcNoDebug[] = R"(; SPIR-V
193 ; Version: 1.0
194 ; Generator: Khronos Glslang Reference Front End; 10
195 ; Bound: 25
196 ; Schema: 0
197                OpCapability Shader
198           %1 = OpExtInstImport "GLSL.std.450"
199                OpMemoryModel Logical GLSL450
200                OpEntryPoint Fragment %4 "main" %20
201                OpExecutionMode %4 OriginUpperLeft
202                OpSource ESSL 320
203                OpDecorate %20 RelaxedPrecision
204                OpDecorate %20 Location 0
205           %2 = OpTypeVoid
206           %3 = OpTypeFunction %2
207           %6 = OpTypeFloat 32
208           %7 = OpTypeVector %6 2
209           %8 = OpTypePointer Function %7
210           %9 = OpTypeFunction %7 %8
211          %14 = OpConstant %6 0.5
212          %15 = OpConstantComposite %7 %14 %14
213          %19 = OpTypePointer Output %7
214          %20 = OpVariable %19 Output
215          %21 = OpConstant %6 0
216          %22 = OpConstantComposite %7 %21 %21
217           %4 = OpFunction %2 None %3
218           %5 = OpLabel
219          %23 = OpVariable %8 Function
220                OpStore %23 %22
221          %24 = OpFunctionCall %7 %11 %23
222                OpStore %20 %24
223                OpReturn
224                OpFunctionEnd
225          %11 = OpFunction %7 None %9
226          %10 = OpFunctionParameter %8
227          %12 = OpLabel
228          %13 = OpLoad %7 %10
229          %16 = OpFAdd %7 %13 %15
230                OpReturnValue %16
231                OpFunctionEnd
232 )";
233   constexpr char kDstNoDebug[] = R"(; SPIR-V
234 ; Version: 1.0
235 ; Generator: Khronos Glslang Reference Front End; 10
236 ; Bound: 28
237 ; Schema: 0
238                OpCapability Shader
239           %1 = OpExtInstImport "GLSL.std.450"
240                OpMemoryModel Logical GLSL450
241                OpEntryPoint Fragment %4 "main" %20
242                OpExecutionMode %4 OriginUpperLeft
243                OpSource ESSL 320
244                OpDecorate %20 RelaxedPrecision
245                OpDecorate %20 Location 0
246           %2 = OpTypeVoid
247           %3 = OpTypeFunction %2
248           %6 = OpTypeFloat 32
249           %7 = OpTypeVector %6 2
250           %8 = OpTypePointer Function %7
251           %9 = OpTypeFunction %7 %8 %8
252          %19 = OpTypePointer Output %7
253          %20 = OpVariable %19 Output
254          %21 = OpConstant %6 0
255          %22 = OpConstantComposite %7 %21 %21
256          %23 = OpConstant %6 0.5
257          %24 = OpConstantComposite %7 %23 %23
258           %4 = OpFunction %2 None %3
259           %5 = OpLabel
260          %25 = OpVariable %8 Function
261          %26 = OpVariable %8 Function
262                OpStore %25 %22
263                OpStore %26 %24
264          %27 = OpFunctionCall %7 %12 %25 %26
265                OpStore %20 %27
266                OpReturn
267                OpFunctionEnd
268          %12 = OpFunction %7 None %9
269          %10 = OpFunctionParameter %8
270          %11 = OpFunctionParameter %8
271          %13 = OpLabel
272          %14 = OpLoad %7 %10
273          %15 = OpLoad %7 %11
274          %16 = OpFAdd %7 %14 %15
275                OpReturnValue %16
276                OpFunctionEnd
277 
278 )";
279   constexpr char kDiff[] = R"( ; SPIR-V
280  ; Version: 1.6
281  ; Generator: Khronos SPIR-V Tools Assembler; 0
282 -; Bound: 25
283 +; Bound: 34
284  ; Schema: 0
285  OpCapability Shader
286  %1 = OpExtInstImport "GLSL.std.450"
287  OpMemoryModel Logical GLSL450
288  OpEntryPoint Fragment %4 "main" %20
289  OpExecutionMode %4 OriginUpperLeft
290  OpSource ESSL 320
291  OpDecorate %20 RelaxedPrecision
292  OpDecorate %20 Location 0
293  %2 = OpTypeVoid
294  %3 = OpTypeFunction %2
295  %6 = OpTypeFloat 32
296  %7 = OpTypeVector %6 2
297  %8 = OpTypePointer Function %7
298 -%9 = OpTypeFunction %7 %8
299 +%25 = OpTypeFunction %7 %8 %8
300  %14 = OpConstant %6 0.5
301  %15 = OpConstantComposite %7 %14 %14
302  %19 = OpTypePointer Output %7
303  %20 = OpVariable %19 Output
304  %21 = OpConstant %6 0
305  %22 = OpConstantComposite %7 %21 %21
306  %4 = OpFunction %2 None %3
307  %5 = OpLabel
308  %23 = OpVariable %8 Function
309 +%32 = OpVariable %8 Function
310  OpStore %23 %22
311 -%24 = OpFunctionCall %7 %11 %23
312 +OpStore %32 %15
313 +%33 = OpFunctionCall %7 %11 %23 %32
314 -OpStore %20 %24
315 +OpStore %20 %33
316  OpReturn
317  OpFunctionEnd
318 -%11 = OpFunction %7 None %9
319 +%11 = OpFunction %7 None %25
320 -%10 = OpFunctionParameter %8
321 +%26 = OpFunctionParameter %8
322 +%27 = OpFunctionParameter %8
323  %12 = OpLabel
324 -%13 = OpLoad %7 %10
325 +%13 = OpLoad %7 %26
326 -%16 = OpFAdd %7 %13 %15
327 +%28 = OpLoad %7 %27
328 +%29 = OpFAdd %7 %13 %28
329 -OpReturnValue %16
330 +OpReturnValue %29
331  OpFunctionEnd
332 )";
333   Options options;
334   DoStringDiffTest(kSrcNoDebug, kDstNoDebug, kDiff, options);
335 }
336 
337 }  // namespace
338 }  // namespace diff
339 }  // namespace spvtools
340