// 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 { // Test for multiple entry points with the same execution model. constexpr char kSrc[] = R"( OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %4 "main1" %8 %10 OpEntryPoint Vertex %12 "main2" %13 %14 %15 OpSource ESSL 310 OpName %4 "main1" OpName %12 "main2" OpName %8 "v" OpName %10 "a" OpName %13 "v" OpName %14 "a" OpName %15 "b" OpDecorate %8 Location 0 OpDecorate %10 Location 0 OpDecorate %13 Location 0 OpDecorate %14 Location 0 OpDecorate %15 Location 1 %2 = OpTypeVoid %3 = OpTypeFunction %2 %6 = OpTypeFloat 32 %7 = OpTypePointer Output %6 %9 = OpTypePointer Input %6 %8 = OpVariable %7 Output %10 = OpVariable %9 Input %13 = OpVariable %7 Output %14 = OpVariable %9 Input %15 = OpVariable %9 Input %4 = OpFunction %2 None %3 %5 = OpLabel %11 = OpLoad %6 %10 OpStore %8 %11 OpReturn OpFunctionEnd %12 = OpFunction %2 None %3 %16 = OpLabel %17 = OpLoad %6 %14 %18 = OpLoad %6 %15 %19 = OpFAdd %6 %17 %18 OpStore %13 %19 OpReturn OpFunctionEnd)"; constexpr char kDst[] = R"( OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %4 "main2" %13 %14 %15 OpEntryPoint Vertex %12 "main1" %8 %10 OpSource ESSL 310 OpName %12 "main1" OpName %4 "main2" OpName %8 "v" OpName %10 "a" OpName %13 "v" OpName %14 "a" OpName %15 "b" OpDecorate %8 Location 0 OpDecorate %10 Location 0 OpDecorate %13 Location 0 OpDecorate %14 Location 0 OpDecorate %15 Location 1 %2 = OpTypeVoid %3 = OpTypeFunction %2 %6 = OpTypeFloat 32 %7 = OpTypePointer Output %6 %9 = OpTypePointer Input %6 %8 = OpVariable %7 Output %10 = OpVariable %9 Input %13 = OpVariable %7 Output %14 = OpVariable %9 Input %15 = OpVariable %9 Input %4 = OpFunction %2 None %3 %16 = OpLabel %17 = OpLoad %6 %14 %18 = OpLoad %6 %15 %19 = OpFAdd %6 %17 %18 OpStore %13 %19 OpReturn OpFunctionEnd %12 = OpFunction %2 None %3 %5 = OpLabel %11 = OpLoad %6 %10 OpStore %8 %11 OpReturn OpFunctionEnd )"; TEST(DiffTest, MultipleSameEntryPoints) { constexpr char kDiff[] = R"( ; SPIR-V ; Version: 1.6 ; Generator: Khronos SPIR-V Tools Assembler; 0 ; Bound: 20 ; Schema: 0 OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 +OpEntryPoint Vertex %12 "main2" %13 %14 %15 OpEntryPoint Vertex %4 "main1" %8 %10 -OpEntryPoint Vertex %12 "main2" %13 %14 %15 OpSource ESSL 310 OpName %4 "main1" OpName %12 "main2" OpName %8 "v" OpName %10 "a" OpName %13 "v" OpName %14 "a" OpName %15 "b" OpDecorate %8 Location 0 OpDecorate %10 Location 0 OpDecorate %13 Location 0 OpDecorate %14 Location 0 OpDecorate %15 Location 1 %2 = OpTypeVoid %3 = OpTypeFunction %2 %6 = OpTypeFloat 32 %7 = OpTypePointer Output %6 %9 = OpTypePointer Input %6 %8 = OpVariable %7 Output %10 = OpVariable %9 Input %13 = OpVariable %7 Output %14 = OpVariable %9 Input %15 = OpVariable %9 Input %4 = OpFunction %2 None %3 %5 = OpLabel %11 = OpLoad %6 %10 OpStore %8 %11 OpReturn OpFunctionEnd %12 = OpFunction %2 None %3 %16 = OpLabel %17 = OpLoad %6 %14 %18 = OpLoad %6 %15 %19 = OpFAdd %6 %17 %18 OpStore %13 %19 OpReturn OpFunctionEnd )"; Options options; DoStringDiffTest(kSrc, kDst, kDiff, options); } TEST(DiffTest, MultipleSameEntryPointsNoDebug) { constexpr char kSrcNoDebug[] = R"( OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %4 "main1" %8 %10 OpEntryPoint Vertex %12 "main2" %13 %14 %15 OpSource ESSL 310 OpDecorate %8 Location 0 OpDecorate %10 Location 0 OpDecorate %13 Location 0 OpDecorate %14 Location 0 OpDecorate %15 Location 1 %2 = OpTypeVoid %3 = OpTypeFunction %2 %6 = OpTypeFloat 32 %7 = OpTypePointer Output %6 %9 = OpTypePointer Input %6 %8 = OpVariable %7 Output %10 = OpVariable %9 Input %13 = OpVariable %7 Output %14 = OpVariable %9 Input %15 = OpVariable %9 Input %4 = OpFunction %2 None %3 %5 = OpLabel %11 = OpLoad %6 %10 OpStore %8 %11 OpReturn OpFunctionEnd %12 = OpFunction %2 None %3 %16 = OpLabel %17 = OpLoad %6 %14 %18 = OpLoad %6 %15 %19 = OpFAdd %6 %17 %18 OpStore %13 %19 OpReturn OpFunctionEnd )"; constexpr char kDstNoDebug[] = R"( OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %4 "main2" %13 %14 %15 OpEntryPoint Vertex %12 "main1" %8 %10 OpSource ESSL 310 OpDecorate %8 Location 0 OpDecorate %10 Location 0 OpDecorate %13 Location 0 OpDecorate %14 Location 0 OpDecorate %15 Location 1 %2 = OpTypeVoid %3 = OpTypeFunction %2 %6 = OpTypeFloat 32 %7 = OpTypePointer Output %6 %9 = OpTypePointer Input %6 %8 = OpVariable %7 Output %10 = OpVariable %9 Input %13 = OpVariable %7 Output %14 = OpVariable %9 Input %15 = OpVariable %9 Input %4 = OpFunction %2 None %3 %16 = OpLabel %17 = OpLoad %6 %14 %18 = OpLoad %6 %15 %19 = OpFAdd %6 %17 %18 OpStore %13 %19 OpReturn OpFunctionEnd %12 = OpFunction %2 None %3 %5 = OpLabel %11 = OpLoad %6 %10 OpStore %8 %11 OpReturn OpFunctionEnd )"; constexpr char kDiff[] = R"( ; SPIR-V ; Version: 1.6 ; Generator: Khronos SPIR-V Tools Assembler; 0 ; Bound: 20 ; Schema: 0 OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 +OpEntryPoint Vertex %12 "main2" %13 %14 %15 OpEntryPoint Vertex %4 "main1" %8 %10 -OpEntryPoint Vertex %12 "main2" %13 %14 %15 OpSource ESSL 310 OpDecorate %8 Location 0 OpDecorate %10 Location 0 OpDecorate %13 Location 0 OpDecorate %14 Location 0 OpDecorate %15 Location 1 %2 = OpTypeVoid %3 = OpTypeFunction %2 %6 = OpTypeFloat 32 %7 = OpTypePointer Output %6 %9 = OpTypePointer Input %6 %8 = OpVariable %7 Output %10 = OpVariable %9 Input %13 = OpVariable %7 Output %14 = OpVariable %9 Input %15 = OpVariable %9 Input %4 = OpFunction %2 None %3 %5 = OpLabel %11 = OpLoad %6 %10 OpStore %8 %11 OpReturn OpFunctionEnd %12 = OpFunction %2 None %3 %16 = OpLabel %17 = OpLoad %6 %14 %18 = OpLoad %6 %15 %19 = OpFAdd %6 %17 %18 OpStore %13 %19 OpReturn OpFunctionEnd )"; Options options; DoStringDiffTest(kSrcNoDebug, kDstNoDebug, kDiff, options); } TEST(DiffTest, MultipleSameEntryPointsDumpIds) { constexpr char kDiff[] = R"( ; SPIR-V ; Version: 1.6 ; Generator: Khronos SPIR-V Tools Assembler; 0 ; Bound: 20 ; Schema: 0 OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 +OpEntryPoint Vertex %12 "main2" %13 %14 %15 OpEntryPoint Vertex %4 "main1" %8 %10 -OpEntryPoint Vertex %12 "main2" %13 %14 %15 OpSource ESSL 310 OpName %4 "main1" OpName %12 "main2" OpName %8 "v" OpName %10 "a" OpName %13 "v" OpName %14 "a" OpName %15 "b" OpDecorate %8 Location 0 OpDecorate %10 Location 0 OpDecorate %13 Location 0 OpDecorate %14 Location 0 OpDecorate %15 Location 1 %2 = OpTypeVoid %3 = OpTypeFunction %2 %6 = OpTypeFloat 32 %7 = OpTypePointer Output %6 %9 = OpTypePointer Input %6 %8 = OpVariable %7 Output %10 = OpVariable %9 Input %13 = OpVariable %7 Output %14 = OpVariable %9 Input %15 = OpVariable %9 Input %4 = OpFunction %2 None %3 %5 = OpLabel %11 = OpLoad %6 %10 OpStore %8 %11 OpReturn OpFunctionEnd %12 = OpFunction %2 None %3 %16 = OpLabel %17 = OpLoad %6 %14 %18 = OpLoad %6 %15 %19 = OpFAdd %6 %17 %18 OpStore %13 %19 OpReturn OpFunctionEnd Src -> Dst 1 -> 1 [ExtInstImport] 2 -> 2 [TypeVoid] 3 -> 3 [TypeFunction] 4 -> 12 [Function] 5 -> 5 [Label] 6 -> 6 [TypeFloat] 7 -> 7 [TypePointer] 8 -> 8 [Variable] 9 -> 9 [TypePointer] 10 -> 10 [Variable] 11 -> 11 [Load] 12 -> 4 [Function] 13 -> 13 [Variable] 14 -> 14 [Variable] 15 -> 15 [Variable] 16 -> 16 [Label] 17 -> 17 [Load] 18 -> 18 [Load] 19 -> 19 [FAdd] )"; Options options; options.dump_id_map = true; DoStringDiffTest(kSrc, kDst, kDiff, options); } } // namespace } // namespace diff } // namespace spvtools