• 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 // Tests diff of unrelated shaders (with different execution models).
27 constexpr char kSrc[] = R"(               OpCapability Shader
28           %1 = OpExtInstImport "GLSL.std.450"
29                OpMemoryModel Logical GLSL450
30                OpEntryPoint Vertex %4 "main" %8 %10
31                OpSource ESSL 310
32                OpName %4 "main"
33                OpName %8 "v"
34                OpName %10 "a"
35                OpDecorate %8 Location 0
36                OpDecorate %10 Location 0
37           %2 = OpTypeVoid
38           %3 = OpTypeFunction %2
39           %6 = OpTypeFloat 32
40           %7 = OpTypePointer Output %6
41           %8 = OpVariable %7 Output
42           %9 = OpTypePointer Input %6
43          %10 = OpVariable %9 Input
44           %4 = OpFunction %2 None %3
45           %5 = OpLabel
46          %11 = OpLoad %6 %10
47                OpStore %8 %11
48                OpReturn
49                OpFunctionEnd
50 )";
51 constexpr char kDst[] = R"(               OpCapability Shader
52           %1 = OpExtInstImport "GLSL.std.450"
53                OpMemoryModel Logical GLSL450
54                OpEntryPoint Fragment %4 "main" %9 %11
55                OpExecutionMode %4 OriginUpperLeft
56                OpSource ESSL 310
57                OpName %4 "main"
58                OpName %9 "color"
59                OpName %11 "v"
60                OpDecorate %9 RelaxedPrecision
61                OpDecorate %9 Location 0
62                OpDecorate %11 RelaxedPrecision
63                OpDecorate %11 Location 0
64                OpDecorate %12 RelaxedPrecision
65                OpDecorate %13 RelaxedPrecision
66           %2 = OpTypeVoid
67           %3 = OpTypeFunction %2
68           %6 = OpTypeFloat 32
69           %7 = OpTypeVector %6 4
70           %8 = OpTypePointer Output %7
71           %9 = OpVariable %8 Output
72          %10 = OpTypePointer Input %6
73          %11 = OpVariable %10 Input
74           %4 = OpFunction %2 None %3
75           %5 = OpLabel
76          %12 = OpLoad %6 %11
77          %13 = OpCompositeConstruct %7 %12 %12 %12 %12
78                OpStore %9 %13
79                OpReturn
80                OpFunctionEnd
81 
82 )";
83 
TEST(DiffTest,UnrelatedShaders)84 TEST(DiffTest, UnrelatedShaders) {
85   constexpr char kDiff[] = R"( ; SPIR-V
86  ; Version: 1.6
87  ; Generator: Khronos SPIR-V Tools Assembler; 0
88 -; Bound: 12
89 +; Bound: 16
90  ; Schema: 0
91  OpCapability Shader
92  %1 = OpExtInstImport "GLSL.std.450"
93  OpMemoryModel Logical GLSL450
94 -OpEntryPoint Vertex %4 "main" %8 %10
95 +OpEntryPoint Fragment %4 "main" %14 %8
96 +OpExecutionMode %4 OriginUpperLeft
97  OpSource ESSL 310
98  OpName %4 "main"
99 +OpName %14 "color"
100  OpName %8 "v"
101 -OpName %10 "a"
102 +OpDecorate %14 RelaxedPrecision
103 +OpDecorate %14 Location 0
104 +OpDecorate %8 RelaxedPrecision
105  OpDecorate %8 Location 0
106 -OpDecorate %10 Location 0
107 +OpDecorate %11 RelaxedPrecision
108 +OpDecorate %15 RelaxedPrecision
109  %2 = OpTypeVoid
110  %3 = OpTypeFunction %2
111  %6 = OpTypeFloat 32
112 -%7 = OpTypePointer Output %6
113 +%12 = OpTypeVector %6 4
114 +%13 = OpTypePointer Output %12
115 +%14 = OpVariable %13 Output
116 -%8 = OpVariable %7 Output
117 +%8 = OpVariable %9 Input
118  %9 = OpTypePointer Input %6
119 -%10 = OpVariable %9 Input
120  %4 = OpFunction %2 None %3
121  %5 = OpLabel
122 -%11 = OpLoad %6 %10
123 +%11 = OpLoad %6 %8
124 -OpStore %8 %11
125 +%15 = OpCompositeConstruct %12 %11 %11 %11 %11
126 +OpStore %14 %15
127  OpReturn
128  OpFunctionEnd
129 )";
130   Options options;
131   DoStringDiffTest(kSrc, kDst, kDiff, options);
132 }
133 
TEST(DiffTest,UnrelatedShadersNoDebug)134 TEST(DiffTest, UnrelatedShadersNoDebug) {
135   constexpr char kSrcNoDebug[] = R"(               OpCapability Shader
136           %1 = OpExtInstImport "GLSL.std.450"
137                OpMemoryModel Logical GLSL450
138                OpEntryPoint Vertex %4 "main" %8 %10
139                OpSource ESSL 310
140                OpDecorate %8 Location 0
141                OpDecorate %10 Location 0
142           %2 = OpTypeVoid
143           %3 = OpTypeFunction %2
144           %6 = OpTypeFloat 32
145           %7 = OpTypePointer Output %6
146           %8 = OpVariable %7 Output
147           %9 = OpTypePointer Input %6
148          %10 = OpVariable %9 Input
149           %4 = OpFunction %2 None %3
150           %5 = OpLabel
151          %11 = OpLoad %6 %10
152                OpStore %8 %11
153                OpReturn
154                OpFunctionEnd
155 
156 )";
157   constexpr char kDstNoDebug[] = R"(               OpCapability Shader
158           %1 = OpExtInstImport "GLSL.std.450"
159                OpMemoryModel Logical GLSL450
160                OpEntryPoint Fragment %4 "main" %9 %11
161                OpExecutionMode %4 OriginUpperLeft
162                OpSource ESSL 310
163                OpDecorate %9 RelaxedPrecision
164                OpDecorate %9 Location 0
165                OpDecorate %11 RelaxedPrecision
166                OpDecorate %11 Location 0
167                OpDecorate %12 RelaxedPrecision
168                OpDecorate %13 RelaxedPrecision
169           %2 = OpTypeVoid
170           %3 = OpTypeFunction %2
171           %6 = OpTypeFloat 32
172           %7 = OpTypeVector %6 4
173           %8 = OpTypePointer Output %7
174           %9 = OpVariable %8 Output
175          %10 = OpTypePointer Input %6
176          %11 = OpVariable %10 Input
177           %4 = OpFunction %2 None %3
178           %5 = OpLabel
179          %12 = OpLoad %6 %11
180          %13 = OpCompositeConstruct %7 %12 %12 %12 %12
181                OpStore %9 %13
182                OpReturn
183                OpFunctionEnd
184 
185 )";
186   constexpr char kDiff[] = R"( ; SPIR-V
187  ; Version: 1.6
188  ; Generator: Khronos SPIR-V Tools Assembler; 0
189 -; Bound: 12
190 +; Bound: 15
191  ; Schema: 0
192  OpCapability Shader
193  %1 = OpExtInstImport "GLSL.std.450"
194  OpMemoryModel Logical GLSL450
195 -OpEntryPoint Vertex %4 "main" %8 %10
196 +OpEntryPoint Fragment %4 "main" %8 %10
197 +OpExecutionMode %4 OriginUpperLeft
198  OpSource ESSL 310
199 +OpDecorate %8 RelaxedPrecision
200  OpDecorate %8 Location 0
201 +OpDecorate %10 RelaxedPrecision
202  OpDecorate %10 Location 0
203 +OpDecorate %11 RelaxedPrecision
204 +OpDecorate %14 RelaxedPrecision
205  %2 = OpTypeVoid
206  %3 = OpTypeFunction %2
207  %6 = OpTypeFloat 32
208 -%7 = OpTypePointer Output %6
209 +%12 = OpTypeVector %6 4
210 +%13 = OpTypePointer Output %12
211 -%8 = OpVariable %7 Output
212 +%8 = OpVariable %13 Output
213  %9 = OpTypePointer Input %6
214  %10 = OpVariable %9 Input
215  %4 = OpFunction %2 None %3
216  %5 = OpLabel
217  %11 = OpLoad %6 %10
218 +%14 = OpCompositeConstruct %12 %11 %11 %11 %11
219 -OpStore %8 %11
220 +OpStore %8 %14
221  OpReturn
222  OpFunctionEnd
223 )";
224   Options options;
225   DoStringDiffTest(kSrcNoDebug, kDstNoDebug, kDiff, options);
226 }
227 
228 }  // namespace
229 }  // namespace diff
230 }  // namespace spvtools
231