• 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 for multiple entry points with the same execution model.
27 constexpr char kSrc[] = R"(               OpCapability Shader
28           %1 = OpExtInstImport "GLSL.std.450"
29                OpMemoryModel Logical GLSL450
30                OpEntryPoint Vertex %4 "main1" %8 %10
31                OpEntryPoint Vertex %12 "main2" %13 %14 %15
32                OpSource ESSL 310
33                OpName %4 "main1"
34                OpName %12 "main2"
35                OpName %8 "v"
36                OpName %10 "a"
37                OpName %13 "v"
38                OpName %14 "a"
39                OpName %15 "b"
40                OpDecorate %8 Location 0
41                OpDecorate %10 Location 0
42                OpDecorate %13 Location 0
43                OpDecorate %14 Location 0
44                OpDecorate %15 Location 1
45           %2 = OpTypeVoid
46           %3 = OpTypeFunction %2
47           %6 = OpTypeFloat 32
48 
49           %7 = OpTypePointer Output %6
50           %9 = OpTypePointer Input %6
51           %8 = OpVariable %7 Output
52          %10 = OpVariable %9 Input
53          %13 = OpVariable %7 Output
54          %14 = OpVariable %9 Input
55          %15 = OpVariable %9 Input
56 
57           %4 = OpFunction %2 None %3
58           %5 = OpLabel
59          %11 = OpLoad %6 %10
60                OpStore %8 %11
61                OpReturn
62                OpFunctionEnd
63 
64          %12 = OpFunction %2 None %3
65          %16 = OpLabel
66          %17 = OpLoad %6 %14
67          %18 = OpLoad %6 %15
68          %19 = OpFAdd %6 %17 %18
69                OpStore %13 %19
70                OpReturn
71                OpFunctionEnd)";
72 constexpr char kDst[] = R"(               OpCapability Shader
73           %1 = OpExtInstImport "GLSL.std.450"
74                OpMemoryModel Logical GLSL450
75                OpEntryPoint Vertex %4 "main2" %13 %14 %15
76                OpEntryPoint Vertex %12 "main1" %8 %10
77                OpSource ESSL 310
78                OpName %12 "main1"
79                OpName %4 "main2"
80                OpName %8 "v"
81                OpName %10 "a"
82                OpName %13 "v"
83                OpName %14 "a"
84                OpName %15 "b"
85                OpDecorate %8 Location 0
86                OpDecorate %10 Location 0
87                OpDecorate %13 Location 0
88                OpDecorate %14 Location 0
89                OpDecorate %15 Location 1
90           %2 = OpTypeVoid
91           %3 = OpTypeFunction %2
92           %6 = OpTypeFloat 32
93 
94           %7 = OpTypePointer Output %6
95           %9 = OpTypePointer Input %6
96           %8 = OpVariable %7 Output
97          %10 = OpVariable %9 Input
98          %13 = OpVariable %7 Output
99          %14 = OpVariable %9 Input
100          %15 = OpVariable %9 Input
101 
102          %4 = OpFunction %2 None %3
103          %16 = OpLabel
104          %17 = OpLoad %6 %14
105          %18 = OpLoad %6 %15
106          %19 = OpFAdd %6 %17 %18
107                OpStore %13 %19
108                OpReturn
109                OpFunctionEnd
110 
111          %12 = OpFunction %2 None %3
112           %5 = OpLabel
113          %11 = OpLoad %6 %10
114                OpStore %8 %11
115                OpReturn
116                OpFunctionEnd
117 )";
118 
TEST(DiffTest,MultipleSameEntryPoints)119 TEST(DiffTest, MultipleSameEntryPoints) {
120   constexpr char kDiff[] = R"( ; SPIR-V
121  ; Version: 1.6
122  ; Generator: Khronos SPIR-V Tools Assembler; 0
123  ; Bound: 20
124  ; Schema: 0
125  OpCapability Shader
126  %1 = OpExtInstImport "GLSL.std.450"
127  OpMemoryModel Logical GLSL450
128 +OpEntryPoint Vertex %12 "main2" %13 %14 %15
129  OpEntryPoint Vertex %4 "main1" %8 %10
130 -OpEntryPoint Vertex %12 "main2" %13 %14 %15
131  OpSource ESSL 310
132  OpName %4 "main1"
133  OpName %12 "main2"
134  OpName %8 "v"
135  OpName %10 "a"
136  OpName %13 "v"
137  OpName %14 "a"
138  OpName %15 "b"
139  OpDecorate %8 Location 0
140  OpDecorate %10 Location 0
141  OpDecorate %13 Location 0
142  OpDecorate %14 Location 0
143  OpDecorate %15 Location 1
144  %2 = OpTypeVoid
145  %3 = OpTypeFunction %2
146  %6 = OpTypeFloat 32
147  %7 = OpTypePointer Output %6
148  %9 = OpTypePointer Input %6
149  %8 = OpVariable %7 Output
150  %10 = OpVariable %9 Input
151  %13 = OpVariable %7 Output
152  %14 = OpVariable %9 Input
153  %15 = OpVariable %9 Input
154  %4 = OpFunction %2 None %3
155  %5 = OpLabel
156  %11 = OpLoad %6 %10
157  OpStore %8 %11
158  OpReturn
159  OpFunctionEnd
160  %12 = OpFunction %2 None %3
161  %16 = OpLabel
162  %17 = OpLoad %6 %14
163  %18 = OpLoad %6 %15
164  %19 = OpFAdd %6 %17 %18
165  OpStore %13 %19
166  OpReturn
167  OpFunctionEnd
168 )";
169   Options options;
170   DoStringDiffTest(kSrc, kDst, kDiff, options);
171 }
172 
TEST(DiffTest,MultipleSameEntryPointsNoDebug)173 TEST(DiffTest, MultipleSameEntryPointsNoDebug) {
174   constexpr char kSrcNoDebug[] = R"(               OpCapability Shader
175           %1 = OpExtInstImport "GLSL.std.450"
176                OpMemoryModel Logical GLSL450
177                OpEntryPoint Vertex %4 "main1" %8 %10
178                OpEntryPoint Vertex %12 "main2" %13 %14 %15
179                OpSource ESSL 310
180                OpDecorate %8 Location 0
181                OpDecorate %10 Location 0
182                OpDecorate %13 Location 0
183                OpDecorate %14 Location 0
184                OpDecorate %15 Location 1
185           %2 = OpTypeVoid
186           %3 = OpTypeFunction %2
187           %6 = OpTypeFloat 32
188 
189           %7 = OpTypePointer Output %6
190           %9 = OpTypePointer Input %6
191           %8 = OpVariable %7 Output
192          %10 = OpVariable %9 Input
193          %13 = OpVariable %7 Output
194          %14 = OpVariable %9 Input
195          %15 = OpVariable %9 Input
196 
197           %4 = OpFunction %2 None %3
198           %5 = OpLabel
199          %11 = OpLoad %6 %10
200                OpStore %8 %11
201                OpReturn
202                OpFunctionEnd
203 
204          %12 = OpFunction %2 None %3
205          %16 = OpLabel
206          %17 = OpLoad %6 %14
207          %18 = OpLoad %6 %15
208          %19 = OpFAdd %6 %17 %18
209                OpStore %13 %19
210                OpReturn
211                OpFunctionEnd
212 )";
213   constexpr char kDstNoDebug[] = R"(               OpCapability Shader
214           %1 = OpExtInstImport "GLSL.std.450"
215                OpMemoryModel Logical GLSL450
216                OpEntryPoint Vertex %4 "main2" %13 %14 %15
217                OpEntryPoint Vertex %12 "main1" %8 %10
218                OpSource ESSL 310
219                OpDecorate %8 Location 0
220                OpDecorate %10 Location 0
221                OpDecorate %13 Location 0
222                OpDecorate %14 Location 0
223                OpDecorate %15 Location 1
224           %2 = OpTypeVoid
225           %3 = OpTypeFunction %2
226           %6 = OpTypeFloat 32
227 
228           %7 = OpTypePointer Output %6
229           %9 = OpTypePointer Input %6
230           %8 = OpVariable %7 Output
231          %10 = OpVariable %9 Input
232          %13 = OpVariable %7 Output
233          %14 = OpVariable %9 Input
234          %15 = OpVariable %9 Input
235 
236          %4 = OpFunction %2 None %3
237          %16 = OpLabel
238          %17 = OpLoad %6 %14
239          %18 = OpLoad %6 %15
240          %19 = OpFAdd %6 %17 %18
241                OpStore %13 %19
242                OpReturn
243                OpFunctionEnd
244 
245          %12 = OpFunction %2 None %3
246           %5 = OpLabel
247          %11 = OpLoad %6 %10
248                OpStore %8 %11
249                OpReturn
250                OpFunctionEnd
251 )";
252   constexpr char kDiff[] = R"( ; SPIR-V
253  ; Version: 1.6
254  ; Generator: Khronos SPIR-V Tools Assembler; 0
255  ; Bound: 20
256  ; Schema: 0
257  OpCapability Shader
258  %1 = OpExtInstImport "GLSL.std.450"
259  OpMemoryModel Logical GLSL450
260 +OpEntryPoint Vertex %12 "main2" %13 %14 %15
261  OpEntryPoint Vertex %4 "main1" %8 %10
262 -OpEntryPoint Vertex %12 "main2" %13 %14 %15
263  OpSource ESSL 310
264  OpDecorate %8 Location 0
265  OpDecorate %10 Location 0
266  OpDecorate %13 Location 0
267  OpDecorate %14 Location 0
268  OpDecorate %15 Location 1
269  %2 = OpTypeVoid
270  %3 = OpTypeFunction %2
271  %6 = OpTypeFloat 32
272  %7 = OpTypePointer Output %6
273  %9 = OpTypePointer Input %6
274  %8 = OpVariable %7 Output
275  %10 = OpVariable %9 Input
276  %13 = OpVariable %7 Output
277  %14 = OpVariable %9 Input
278  %15 = OpVariable %9 Input
279  %4 = OpFunction %2 None %3
280  %5 = OpLabel
281  %11 = OpLoad %6 %10
282  OpStore %8 %11
283  OpReturn
284  OpFunctionEnd
285  %12 = OpFunction %2 None %3
286  %16 = OpLabel
287  %17 = OpLoad %6 %14
288  %18 = OpLoad %6 %15
289  %19 = OpFAdd %6 %17 %18
290  OpStore %13 %19
291  OpReturn
292  OpFunctionEnd
293 )";
294   Options options;
295   DoStringDiffTest(kSrcNoDebug, kDstNoDebug, kDiff, options);
296 }
297 
TEST(DiffTest,MultipleSameEntryPointsDumpIds)298 TEST(DiffTest, MultipleSameEntryPointsDumpIds) {
299   constexpr char kDiff[] = R"( ; SPIR-V
300  ; Version: 1.6
301  ; Generator: Khronos SPIR-V Tools Assembler; 0
302  ; Bound: 20
303  ; Schema: 0
304  OpCapability Shader
305  %1 = OpExtInstImport "GLSL.std.450"
306  OpMemoryModel Logical GLSL450
307 +OpEntryPoint Vertex %12 "main2" %13 %14 %15
308  OpEntryPoint Vertex %4 "main1" %8 %10
309 -OpEntryPoint Vertex %12 "main2" %13 %14 %15
310  OpSource ESSL 310
311  OpName %4 "main1"
312  OpName %12 "main2"
313  OpName %8 "v"
314  OpName %10 "a"
315  OpName %13 "v"
316  OpName %14 "a"
317  OpName %15 "b"
318  OpDecorate %8 Location 0
319  OpDecorate %10 Location 0
320  OpDecorate %13 Location 0
321  OpDecorate %14 Location 0
322  OpDecorate %15 Location 1
323  %2 = OpTypeVoid
324  %3 = OpTypeFunction %2
325  %6 = OpTypeFloat 32
326  %7 = OpTypePointer Output %6
327  %9 = OpTypePointer Input %6
328  %8 = OpVariable %7 Output
329  %10 = OpVariable %9 Input
330  %13 = OpVariable %7 Output
331  %14 = OpVariable %9 Input
332  %15 = OpVariable %9 Input
333  %4 = OpFunction %2 None %3
334  %5 = OpLabel
335  %11 = OpLoad %6 %10
336  OpStore %8 %11
337  OpReturn
338  OpFunctionEnd
339  %12 = OpFunction %2 None %3
340  %16 = OpLabel
341  %17 = OpLoad %6 %14
342  %18 = OpLoad %6 %15
343  %19 = OpFAdd %6 %17 %18
344  OpStore %13 %19
345  OpReturn
346  OpFunctionEnd
347  Src ->  Dst
348    1 ->    1 [ExtInstImport]
349    2 ->    2 [TypeVoid]
350    3 ->    3 [TypeFunction]
351    4 ->   12 [Function]
352    5 ->    5 [Label]
353    6 ->    6 [TypeFloat]
354    7 ->    7 [TypePointer]
355    8 ->    8 [Variable]
356    9 ->    9 [TypePointer]
357   10 ->   10 [Variable]
358   11 ->   11 [Load]
359   12 ->    4 [Function]
360   13 ->   13 [Variable]
361   14 ->   14 [Variable]
362   15 ->   15 [Variable]
363   16 ->   16 [Label]
364   17 ->   17 [Load]
365   18 ->   18 [Load]
366   19 ->   19 [FAdd]
367 )";
368   Options options;
369   options.dump_id_map = true;
370   DoStringDiffTest(kSrc, kDst, kDiff, options);
371 }
372 
373 }  // namespace
374 }  // namespace diff
375 }  // namespace spvtools
376