1fd4e5da5Sopenharmony_ci// GENERATED FILE - DO NOT EDIT. 2fd4e5da5Sopenharmony_ci// Generated by generate_tests.py 3fd4e5da5Sopenharmony_ci// 4fd4e5da5Sopenharmony_ci// Copyright (c) 2022 Google LLC. 5fd4e5da5Sopenharmony_ci// 6fd4e5da5Sopenharmony_ci// Licensed under the Apache License, Version 2.0 (the "License"); 7fd4e5da5Sopenharmony_ci// you may not use this file except in compliance with the License. 8fd4e5da5Sopenharmony_ci// You may obtain a copy of the License at 9fd4e5da5Sopenharmony_ci// 10fd4e5da5Sopenharmony_ci// http://www.apache.org/licenses/LICENSE-2.0 11fd4e5da5Sopenharmony_ci// 12fd4e5da5Sopenharmony_ci// Unless required by applicable law or agreed to in writing, software 13fd4e5da5Sopenharmony_ci// distributed under the License is distributed on an "AS IS" BASIS, 14fd4e5da5Sopenharmony_ci// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15fd4e5da5Sopenharmony_ci// See the License for the specific language governing permissions and 16fd4e5da5Sopenharmony_ci// limitations under the License. 17fd4e5da5Sopenharmony_ci 18fd4e5da5Sopenharmony_ci#include "../diff_test_utils.h" 19fd4e5da5Sopenharmony_ci 20fd4e5da5Sopenharmony_ci#include "gtest/gtest.h" 21fd4e5da5Sopenharmony_ci 22fd4e5da5Sopenharmony_cinamespace spvtools { 23fd4e5da5Sopenharmony_cinamespace diff { 24fd4e5da5Sopenharmony_cinamespace { 25fd4e5da5Sopenharmony_ci 26fd4e5da5Sopenharmony_ci// Tests diff of unrelated shaders (with different execution models). 27fd4e5da5Sopenharmony_ciconstexpr char kSrc[] = R"( OpCapability Shader 28fd4e5da5Sopenharmony_ci %1 = OpExtInstImport "GLSL.std.450" 29fd4e5da5Sopenharmony_ci OpMemoryModel Logical GLSL450 30fd4e5da5Sopenharmony_ci OpEntryPoint Vertex %4 "main" %8 %10 31fd4e5da5Sopenharmony_ci OpSource ESSL 310 32fd4e5da5Sopenharmony_ci OpName %4 "main" 33fd4e5da5Sopenharmony_ci OpName %8 "v" 34fd4e5da5Sopenharmony_ci OpName %10 "a" 35fd4e5da5Sopenharmony_ci OpDecorate %8 Location 0 36fd4e5da5Sopenharmony_ci OpDecorate %10 Location 0 37fd4e5da5Sopenharmony_ci %2 = OpTypeVoid 38fd4e5da5Sopenharmony_ci %3 = OpTypeFunction %2 39fd4e5da5Sopenharmony_ci %6 = OpTypeFloat 32 40fd4e5da5Sopenharmony_ci %7 = OpTypePointer Output %6 41fd4e5da5Sopenharmony_ci %8 = OpVariable %7 Output 42fd4e5da5Sopenharmony_ci %9 = OpTypePointer Input %6 43fd4e5da5Sopenharmony_ci %10 = OpVariable %9 Input 44fd4e5da5Sopenharmony_ci %4 = OpFunction %2 None %3 45fd4e5da5Sopenharmony_ci %5 = OpLabel 46fd4e5da5Sopenharmony_ci %11 = OpLoad %6 %10 47fd4e5da5Sopenharmony_ci OpStore %8 %11 48fd4e5da5Sopenharmony_ci OpReturn 49fd4e5da5Sopenharmony_ci OpFunctionEnd 50fd4e5da5Sopenharmony_ci)"; 51fd4e5da5Sopenharmony_ciconstexpr char kDst[] = R"( OpCapability Shader 52fd4e5da5Sopenharmony_ci %1 = OpExtInstImport "GLSL.std.450" 53fd4e5da5Sopenharmony_ci OpMemoryModel Logical GLSL450 54fd4e5da5Sopenharmony_ci OpEntryPoint Fragment %4 "main" %9 %11 55fd4e5da5Sopenharmony_ci OpExecutionMode %4 OriginUpperLeft 56fd4e5da5Sopenharmony_ci OpSource ESSL 310 57fd4e5da5Sopenharmony_ci OpName %4 "main" 58fd4e5da5Sopenharmony_ci OpName %9 "color" 59fd4e5da5Sopenharmony_ci OpName %11 "v" 60fd4e5da5Sopenharmony_ci OpDecorate %9 RelaxedPrecision 61fd4e5da5Sopenharmony_ci OpDecorate %9 Location 0 62fd4e5da5Sopenharmony_ci OpDecorate %11 RelaxedPrecision 63fd4e5da5Sopenharmony_ci OpDecorate %11 Location 0 64fd4e5da5Sopenharmony_ci OpDecorate %12 RelaxedPrecision 65fd4e5da5Sopenharmony_ci OpDecorate %13 RelaxedPrecision 66fd4e5da5Sopenharmony_ci %2 = OpTypeVoid 67fd4e5da5Sopenharmony_ci %3 = OpTypeFunction %2 68fd4e5da5Sopenharmony_ci %6 = OpTypeFloat 32 69fd4e5da5Sopenharmony_ci %7 = OpTypeVector %6 4 70fd4e5da5Sopenharmony_ci %8 = OpTypePointer Output %7 71fd4e5da5Sopenharmony_ci %9 = OpVariable %8 Output 72fd4e5da5Sopenharmony_ci %10 = OpTypePointer Input %6 73fd4e5da5Sopenharmony_ci %11 = OpVariable %10 Input 74fd4e5da5Sopenharmony_ci %4 = OpFunction %2 None %3 75fd4e5da5Sopenharmony_ci %5 = OpLabel 76fd4e5da5Sopenharmony_ci %12 = OpLoad %6 %11 77fd4e5da5Sopenharmony_ci %13 = OpCompositeConstruct %7 %12 %12 %12 %12 78fd4e5da5Sopenharmony_ci OpStore %9 %13 79fd4e5da5Sopenharmony_ci OpReturn 80fd4e5da5Sopenharmony_ci OpFunctionEnd 81fd4e5da5Sopenharmony_ci 82fd4e5da5Sopenharmony_ci)"; 83fd4e5da5Sopenharmony_ci 84fd4e5da5Sopenharmony_ciTEST(DiffTest, UnrelatedShaders) { 85fd4e5da5Sopenharmony_ci constexpr char kDiff[] = R"( ; SPIR-V 86fd4e5da5Sopenharmony_ci ; Version: 1.6 87fd4e5da5Sopenharmony_ci ; Generator: Khronos SPIR-V Tools Assembler; 0 88fd4e5da5Sopenharmony_ci-; Bound: 12 89fd4e5da5Sopenharmony_ci+; Bound: 16 90fd4e5da5Sopenharmony_ci ; Schema: 0 91fd4e5da5Sopenharmony_ci OpCapability Shader 92fd4e5da5Sopenharmony_ci %1 = OpExtInstImport "GLSL.std.450" 93fd4e5da5Sopenharmony_ci OpMemoryModel Logical GLSL450 94fd4e5da5Sopenharmony_ci-OpEntryPoint Vertex %4 "main" %8 %10 95fd4e5da5Sopenharmony_ci+OpEntryPoint Fragment %4 "main" %14 %8 96fd4e5da5Sopenharmony_ci+OpExecutionMode %4 OriginUpperLeft 97fd4e5da5Sopenharmony_ci OpSource ESSL 310 98fd4e5da5Sopenharmony_ci OpName %4 "main" 99fd4e5da5Sopenharmony_ci+OpName %14 "color" 100fd4e5da5Sopenharmony_ci OpName %8 "v" 101fd4e5da5Sopenharmony_ci-OpName %10 "a" 102fd4e5da5Sopenharmony_ci+OpDecorate %14 RelaxedPrecision 103fd4e5da5Sopenharmony_ci+OpDecorate %14 Location 0 104fd4e5da5Sopenharmony_ci+OpDecorate %8 RelaxedPrecision 105fd4e5da5Sopenharmony_ci OpDecorate %8 Location 0 106fd4e5da5Sopenharmony_ci-OpDecorate %10 Location 0 107fd4e5da5Sopenharmony_ci+OpDecorate %11 RelaxedPrecision 108fd4e5da5Sopenharmony_ci+OpDecorate %15 RelaxedPrecision 109fd4e5da5Sopenharmony_ci %2 = OpTypeVoid 110fd4e5da5Sopenharmony_ci %3 = OpTypeFunction %2 111fd4e5da5Sopenharmony_ci %6 = OpTypeFloat 32 112fd4e5da5Sopenharmony_ci-%7 = OpTypePointer Output %6 113fd4e5da5Sopenharmony_ci+%12 = OpTypeVector %6 4 114fd4e5da5Sopenharmony_ci+%13 = OpTypePointer Output %12 115fd4e5da5Sopenharmony_ci+%14 = OpVariable %13 Output 116fd4e5da5Sopenharmony_ci-%8 = OpVariable %7 Output 117fd4e5da5Sopenharmony_ci+%8 = OpVariable %9 Input 118fd4e5da5Sopenharmony_ci %9 = OpTypePointer Input %6 119fd4e5da5Sopenharmony_ci-%10 = OpVariable %9 Input 120fd4e5da5Sopenharmony_ci %4 = OpFunction %2 None %3 121fd4e5da5Sopenharmony_ci %5 = OpLabel 122fd4e5da5Sopenharmony_ci-%11 = OpLoad %6 %10 123fd4e5da5Sopenharmony_ci+%11 = OpLoad %6 %8 124fd4e5da5Sopenharmony_ci-OpStore %8 %11 125fd4e5da5Sopenharmony_ci+%15 = OpCompositeConstruct %12 %11 %11 %11 %11 126fd4e5da5Sopenharmony_ci+OpStore %14 %15 127fd4e5da5Sopenharmony_ci OpReturn 128fd4e5da5Sopenharmony_ci OpFunctionEnd 129fd4e5da5Sopenharmony_ci)"; 130fd4e5da5Sopenharmony_ci Options options; 131fd4e5da5Sopenharmony_ci DoStringDiffTest(kSrc, kDst, kDiff, options); 132fd4e5da5Sopenharmony_ci} 133fd4e5da5Sopenharmony_ci 134fd4e5da5Sopenharmony_ciTEST(DiffTest, UnrelatedShadersNoDebug) { 135fd4e5da5Sopenharmony_ci constexpr char kSrcNoDebug[] = R"( OpCapability Shader 136fd4e5da5Sopenharmony_ci %1 = OpExtInstImport "GLSL.std.450" 137fd4e5da5Sopenharmony_ci OpMemoryModel Logical GLSL450 138fd4e5da5Sopenharmony_ci OpEntryPoint Vertex %4 "main" %8 %10 139fd4e5da5Sopenharmony_ci OpSource ESSL 310 140fd4e5da5Sopenharmony_ci OpDecorate %8 Location 0 141fd4e5da5Sopenharmony_ci OpDecorate %10 Location 0 142fd4e5da5Sopenharmony_ci %2 = OpTypeVoid 143fd4e5da5Sopenharmony_ci %3 = OpTypeFunction %2 144fd4e5da5Sopenharmony_ci %6 = OpTypeFloat 32 145fd4e5da5Sopenharmony_ci %7 = OpTypePointer Output %6 146fd4e5da5Sopenharmony_ci %8 = OpVariable %7 Output 147fd4e5da5Sopenharmony_ci %9 = OpTypePointer Input %6 148fd4e5da5Sopenharmony_ci %10 = OpVariable %9 Input 149fd4e5da5Sopenharmony_ci %4 = OpFunction %2 None %3 150fd4e5da5Sopenharmony_ci %5 = OpLabel 151fd4e5da5Sopenharmony_ci %11 = OpLoad %6 %10 152fd4e5da5Sopenharmony_ci OpStore %8 %11 153fd4e5da5Sopenharmony_ci OpReturn 154fd4e5da5Sopenharmony_ci OpFunctionEnd 155fd4e5da5Sopenharmony_ci 156fd4e5da5Sopenharmony_ci)"; 157fd4e5da5Sopenharmony_ci constexpr char kDstNoDebug[] = R"( OpCapability Shader 158fd4e5da5Sopenharmony_ci %1 = OpExtInstImport "GLSL.std.450" 159fd4e5da5Sopenharmony_ci OpMemoryModel Logical GLSL450 160fd4e5da5Sopenharmony_ci OpEntryPoint Fragment %4 "main" %9 %11 161fd4e5da5Sopenharmony_ci OpExecutionMode %4 OriginUpperLeft 162fd4e5da5Sopenharmony_ci OpSource ESSL 310 163fd4e5da5Sopenharmony_ci OpDecorate %9 RelaxedPrecision 164fd4e5da5Sopenharmony_ci OpDecorate %9 Location 0 165fd4e5da5Sopenharmony_ci OpDecorate %11 RelaxedPrecision 166fd4e5da5Sopenharmony_ci OpDecorate %11 Location 0 167fd4e5da5Sopenharmony_ci OpDecorate %12 RelaxedPrecision 168fd4e5da5Sopenharmony_ci OpDecorate %13 RelaxedPrecision 169fd4e5da5Sopenharmony_ci %2 = OpTypeVoid 170fd4e5da5Sopenharmony_ci %3 = OpTypeFunction %2 171fd4e5da5Sopenharmony_ci %6 = OpTypeFloat 32 172fd4e5da5Sopenharmony_ci %7 = OpTypeVector %6 4 173fd4e5da5Sopenharmony_ci %8 = OpTypePointer Output %7 174fd4e5da5Sopenharmony_ci %9 = OpVariable %8 Output 175fd4e5da5Sopenharmony_ci %10 = OpTypePointer Input %6 176fd4e5da5Sopenharmony_ci %11 = OpVariable %10 Input 177fd4e5da5Sopenharmony_ci %4 = OpFunction %2 None %3 178fd4e5da5Sopenharmony_ci %5 = OpLabel 179fd4e5da5Sopenharmony_ci %12 = OpLoad %6 %11 180fd4e5da5Sopenharmony_ci %13 = OpCompositeConstruct %7 %12 %12 %12 %12 181fd4e5da5Sopenharmony_ci OpStore %9 %13 182fd4e5da5Sopenharmony_ci OpReturn 183fd4e5da5Sopenharmony_ci OpFunctionEnd 184fd4e5da5Sopenharmony_ci 185fd4e5da5Sopenharmony_ci)"; 186fd4e5da5Sopenharmony_ci constexpr char kDiff[] = R"( ; SPIR-V 187fd4e5da5Sopenharmony_ci ; Version: 1.6 188fd4e5da5Sopenharmony_ci ; Generator: Khronos SPIR-V Tools Assembler; 0 189fd4e5da5Sopenharmony_ci-; Bound: 12 190fd4e5da5Sopenharmony_ci+; Bound: 15 191fd4e5da5Sopenharmony_ci ; Schema: 0 192fd4e5da5Sopenharmony_ci OpCapability Shader 193fd4e5da5Sopenharmony_ci %1 = OpExtInstImport "GLSL.std.450" 194fd4e5da5Sopenharmony_ci OpMemoryModel Logical GLSL450 195fd4e5da5Sopenharmony_ci-OpEntryPoint Vertex %4 "main" %8 %10 196fd4e5da5Sopenharmony_ci+OpEntryPoint Fragment %4 "main" %8 %10 197fd4e5da5Sopenharmony_ci+OpExecutionMode %4 OriginUpperLeft 198fd4e5da5Sopenharmony_ci OpSource ESSL 310 199fd4e5da5Sopenharmony_ci+OpDecorate %8 RelaxedPrecision 200fd4e5da5Sopenharmony_ci OpDecorate %8 Location 0 201fd4e5da5Sopenharmony_ci+OpDecorate %10 RelaxedPrecision 202fd4e5da5Sopenharmony_ci OpDecorate %10 Location 0 203fd4e5da5Sopenharmony_ci+OpDecorate %11 RelaxedPrecision 204fd4e5da5Sopenharmony_ci+OpDecorate %14 RelaxedPrecision 205fd4e5da5Sopenharmony_ci %2 = OpTypeVoid 206fd4e5da5Sopenharmony_ci %3 = OpTypeFunction %2 207fd4e5da5Sopenharmony_ci %6 = OpTypeFloat 32 208fd4e5da5Sopenharmony_ci-%7 = OpTypePointer Output %6 209fd4e5da5Sopenharmony_ci+%12 = OpTypeVector %6 4 210fd4e5da5Sopenharmony_ci+%13 = OpTypePointer Output %12 211fd4e5da5Sopenharmony_ci-%8 = OpVariable %7 Output 212fd4e5da5Sopenharmony_ci+%8 = OpVariable %13 Output 213fd4e5da5Sopenharmony_ci %9 = OpTypePointer Input %6 214fd4e5da5Sopenharmony_ci %10 = OpVariable %9 Input 215fd4e5da5Sopenharmony_ci %4 = OpFunction %2 None %3 216fd4e5da5Sopenharmony_ci %5 = OpLabel 217fd4e5da5Sopenharmony_ci %11 = OpLoad %6 %10 218fd4e5da5Sopenharmony_ci+%14 = OpCompositeConstruct %12 %11 %11 %11 %11 219fd4e5da5Sopenharmony_ci-OpStore %8 %11 220fd4e5da5Sopenharmony_ci+OpStore %8 %14 221fd4e5da5Sopenharmony_ci OpReturn 222fd4e5da5Sopenharmony_ci OpFunctionEnd 223fd4e5da5Sopenharmony_ci)"; 224fd4e5da5Sopenharmony_ci Options options; 225fd4e5da5Sopenharmony_ci DoStringDiffTest(kSrcNoDebug, kDstNoDebug, kDiff, options); 226fd4e5da5Sopenharmony_ci} 227fd4e5da5Sopenharmony_ci 228fd4e5da5Sopenharmony_ci} // namespace 229fd4e5da5Sopenharmony_ci} // namespace diff 230fd4e5da5Sopenharmony_ci} // namespace spvtools 231