// GENERATED FILE - DO NOT EDIT. // Generated by generate_tests.py // // Copyright (c) 2022 Google LLC. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #include "../diff_test_utils.h" #include "gtest/gtest.h" namespace spvtools { namespace diff { namespace { // Tests diff of unrelated shaders (with different execution models). constexpr char kSrc[] = R"( OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %4 "main" %8 %10 OpSource ESSL 310 OpName %4 "main" OpName %8 "v" OpName %10 "a" OpDecorate %8 Location 0 OpDecorate %10 Location 0 %2 = OpTypeVoid %3 = OpTypeFunction %2 %6 = OpTypeFloat 32 %7 = OpTypePointer Output %6 %8 = OpVariable %7 Output %9 = OpTypePointer Input %6 %10 = OpVariable %9 Input %4 = OpFunction %2 None %3 %5 = OpLabel %11 = OpLoad %6 %10 OpStore %8 %11 OpReturn OpFunctionEnd )"; constexpr char kDst[] = R"( OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Fragment %4 "main" %9 %11 OpExecutionMode %4 OriginUpperLeft OpSource ESSL 310 OpName %4 "main" OpName %9 "color" OpName %11 "v" OpDecorate %9 RelaxedPrecision OpDecorate %9 Location 0 OpDecorate %11 RelaxedPrecision OpDecorate %11 Location 0 OpDecorate %12 RelaxedPrecision OpDecorate %13 RelaxedPrecision %2 = OpTypeVoid %3 = OpTypeFunction %2 %6 = OpTypeFloat 32 %7 = OpTypeVector %6 4 %8 = OpTypePointer Output %7 %9 = OpVariable %8 Output %10 = OpTypePointer Input %6 %11 = OpVariable %10 Input %4 = OpFunction %2 None %3 %5 = OpLabel %12 = OpLoad %6 %11 %13 = OpCompositeConstruct %7 %12 %12 %12 %12 OpStore %9 %13 OpReturn OpFunctionEnd )"; TEST(DiffTest, UnrelatedShaders) { constexpr char kDiff[] = R"( ; SPIR-V ; Version: 1.6 ; Generator: Khronos SPIR-V Tools Assembler; 0 -; Bound: 12 +; Bound: 16 ; Schema: 0 OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 -OpEntryPoint Vertex %4 "main" %8 %10 +OpEntryPoint Fragment %4 "main" %14 %8 +OpExecutionMode %4 OriginUpperLeft OpSource ESSL 310 OpName %4 "main" +OpName %14 "color" OpName %8 "v" -OpName %10 "a" +OpDecorate %14 RelaxedPrecision +OpDecorate %14 Location 0 +OpDecorate %8 RelaxedPrecision OpDecorate %8 Location 0 -OpDecorate %10 Location 0 +OpDecorate %11 RelaxedPrecision +OpDecorate %15 RelaxedPrecision %2 = OpTypeVoid %3 = OpTypeFunction %2 %6 = OpTypeFloat 32 -%7 = OpTypePointer Output %6 +%12 = OpTypeVector %6 4 +%13 = OpTypePointer Output %12 +%14 = OpVariable %13 Output -%8 = OpVariable %7 Output +%8 = OpVariable %9 Input %9 = OpTypePointer Input %6 -%10 = OpVariable %9 Input %4 = OpFunction %2 None %3 %5 = OpLabel -%11 = OpLoad %6 %10 +%11 = OpLoad %6 %8 -OpStore %8 %11 +%15 = OpCompositeConstruct %12 %11 %11 %11 %11 +OpStore %14 %15 OpReturn OpFunctionEnd )"; Options options; DoStringDiffTest(kSrc, kDst, kDiff, options); } TEST(DiffTest, UnrelatedShadersNoDebug) { constexpr char kSrcNoDebug[] = R"( OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %4 "main" %8 %10 OpSource ESSL 310 OpDecorate %8 Location 0 OpDecorate %10 Location 0 %2 = OpTypeVoid %3 = OpTypeFunction %2 %6 = OpTypeFloat 32 %7 = OpTypePointer Output %6 %8 = OpVariable %7 Output %9 = OpTypePointer Input %6 %10 = OpVariable %9 Input %4 = OpFunction %2 None %3 %5 = OpLabel %11 = OpLoad %6 %10 OpStore %8 %11 OpReturn OpFunctionEnd )"; constexpr char kDstNoDebug[] = R"( OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Fragment %4 "main" %9 %11 OpExecutionMode %4 OriginUpperLeft OpSource ESSL 310 OpDecorate %9 RelaxedPrecision OpDecorate %9 Location 0 OpDecorate %11 RelaxedPrecision OpDecorate %11 Location 0 OpDecorate %12 RelaxedPrecision OpDecorate %13 RelaxedPrecision %2 = OpTypeVoid %3 = OpTypeFunction %2 %6 = OpTypeFloat 32 %7 = OpTypeVector %6 4 %8 = OpTypePointer Output %7 %9 = OpVariable %8 Output %10 = OpTypePointer Input %6 %11 = OpVariable %10 Input %4 = OpFunction %2 None %3 %5 = OpLabel %12 = OpLoad %6 %11 %13 = OpCompositeConstruct %7 %12 %12 %12 %12 OpStore %9 %13 OpReturn OpFunctionEnd )"; constexpr char kDiff[] = R"( ; SPIR-V ; Version: 1.6 ; Generator: Khronos SPIR-V Tools Assembler; 0 -; Bound: 12 +; Bound: 15 ; Schema: 0 OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 -OpEntryPoint Vertex %4 "main" %8 %10 +OpEntryPoint Fragment %4 "main" %8 %10 +OpExecutionMode %4 OriginUpperLeft OpSource ESSL 310 +OpDecorate %8 RelaxedPrecision OpDecorate %8 Location 0 +OpDecorate %10 RelaxedPrecision OpDecorate %10 Location 0 +OpDecorate %11 RelaxedPrecision +OpDecorate %14 RelaxedPrecision %2 = OpTypeVoid %3 = OpTypeFunction %2 %6 = OpTypeFloat 32 -%7 = OpTypePointer Output %6 +%12 = OpTypeVector %6 4 +%13 = OpTypePointer Output %12 -%8 = OpVariable %7 Output +%8 = OpVariable %13 Output %9 = OpTypePointer Input %6 %10 = OpVariable %9 Input %4 = OpFunction %2 None %3 %5 = OpLabel %11 = OpLoad %6 %10 +%14 = OpCompositeConstruct %12 %11 %11 %11 %11 -OpStore %8 %11 +OpStore %8 %14 OpReturn OpFunctionEnd )"; Options options; DoStringDiffTest(kSrcNoDebug, kDstNoDebug, kDiff, options); } } // namespace } // namespace diff } // namespace spvtools