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// Basic test for spirv-diff 27fd4e5da5Sopenharmony_ciconstexpr char kSrc[] = R"(; SPIR-V 28fd4e5da5Sopenharmony_ci; Version: 1.0 29fd4e5da5Sopenharmony_ci; Generator: Google ANGLE Shader Compiler; 0 30fd4e5da5Sopenharmony_ci; Bound: 27 31fd4e5da5Sopenharmony_ci; Schema: 0 32fd4e5da5Sopenharmony_ciOpCapability Shader 33fd4e5da5Sopenharmony_ci OpMemoryModel Logical GLSL450 34fd4e5da5Sopenharmony_ci OpEntryPoint Vertex %22 "main" %4 %14 %19 35fd4e5da5Sopenharmony_ci OpSource GLSL 450 36fd4e5da5Sopenharmony_ci OpName %4 "_ua_position" 37fd4e5da5Sopenharmony_ci OpName %14 "ANGLEXfbPosition" 38fd4e5da5Sopenharmony_ci OpName %17 "gl_PerVertex" 39fd4e5da5Sopenharmony_ci OpMemberName %17 0 "gl_Position" 40fd4e5da5Sopenharmony_ciOpMemberName %17 1 "gl_PointSize" 41fd4e5da5Sopenharmony_ciOpMemberName %17 2 "gl_ClipDistance" 42fd4e5da5Sopenharmony_ci OpMemberName %17 3 "gl_CullDistance" 43fd4e5da5Sopenharmony_ci OpName %19 "" 44fd4e5da5Sopenharmony_ci OpName %22 "main" 45fd4e5da5Sopenharmony_ci OpDecorate %4 Location 0 46fd4e5da5Sopenharmony_ci OpDecorate %14 Location 0 47fd4e5da5Sopenharmony_ci OpMemberDecorate %17 1 RelaxedPrecision 48fd4e5da5Sopenharmony_ci OpMemberDecorate %17 0 BuiltIn Position 49fd4e5da5Sopenharmony_ci OpMemberDecorate %17 1 BuiltIn PointSize 50fd4e5da5Sopenharmony_ciOpMemberDecorate %17 2 BuiltIn ClipDistance 51fd4e5da5Sopenharmony_ciOpMemberDecorate %17 3 BuiltIn CullDistance 52fd4e5da5Sopenharmony_ciOpDecorate %17 Block 53fd4e5da5Sopenharmony_ci%1 = OpTypeFloat 32 54fd4e5da5Sopenharmony_ci%2 = OpTypeVector %1 4 55fd4e5da5Sopenharmony_ci%5 = OpTypeInt 32 0 56fd4e5da5Sopenharmony_ci%6 = OpTypeInt 32 1 57fd4e5da5Sopenharmony_ci%15 = OpConstant %5 8 58fd4e5da5Sopenharmony_ci%16 = OpTypeArray %1 %15 59fd4e5da5Sopenharmony_ci%17 = OpTypeStruct %2 %1 %16 %16 60fd4e5da5Sopenharmony_ci%20 = OpTypeVoid 61fd4e5da5Sopenharmony_ci%25 = OpConstant %6 0 62fd4e5da5Sopenharmony_ci%3 = OpTypePointer Input %2 63fd4e5da5Sopenharmony_ci%13 = OpTypePointer Output %2 64fd4e5da5Sopenharmony_ci%18 = OpTypePointer Output %17 65fd4e5da5Sopenharmony_ci%21 = OpTypeFunction %20 66fd4e5da5Sopenharmony_ci%4 = OpVariable %3 Input 67fd4e5da5Sopenharmony_ci%14 = OpVariable %13 Output 68fd4e5da5Sopenharmony_ci%19 = OpVariable %18 Output 69fd4e5da5Sopenharmony_ci%22 = OpFunction %20 None %21 70fd4e5da5Sopenharmony_ci%23 = OpLabel 71fd4e5da5Sopenharmony_ci%24 = OpLoad %2 %4 72fd4e5da5Sopenharmony_ci%26 = OpAccessChain %13 %19 %25 73fd4e5da5Sopenharmony_ciOpStore %26 %24 74fd4e5da5Sopenharmony_ciOpReturn 75fd4e5da5Sopenharmony_ciOpFunctionEnd)"; 76fd4e5da5Sopenharmony_ciconstexpr char kDst[] = R"(; SPIR-V 77fd4e5da5Sopenharmony_ci; Version: 1.0 78fd4e5da5Sopenharmony_ci; Generator: Khronos Glslang Reference Front End; 10 79fd4e5da5Sopenharmony_ci; Bound: 28 80fd4e5da5Sopenharmony_ci; Schema: 0 81fd4e5da5Sopenharmony_ciOpCapability Shader 82fd4e5da5Sopenharmony_ci%1 = OpExtInstImport "GLSL.std.450" 83fd4e5da5Sopenharmony_ciOpMemoryModel Logical GLSL450 84fd4e5da5Sopenharmony_ciOpEntryPoint Vertex %4 "main" %13 %17 %27 85fd4e5da5Sopenharmony_ciOpSource GLSL 450 86fd4e5da5Sopenharmony_ciOpName %4 "main" 87fd4e5da5Sopenharmony_ciOpName %11 "gl_PerVertex" 88fd4e5da5Sopenharmony_ciOpMemberName %11 0 "gl_Position" 89fd4e5da5Sopenharmony_ciOpMemberName %11 1 "gl_PointSize" 90fd4e5da5Sopenharmony_ciOpMemberName %11 2 "gl_ClipDistance" 91fd4e5da5Sopenharmony_ciOpMemberName %11 3 "gl_CullDistance" 92fd4e5da5Sopenharmony_ciOpName %13 "" 93fd4e5da5Sopenharmony_ciOpName %17 "_ua_position" 94fd4e5da5Sopenharmony_ciOpName %27 "ANGLEXfbPosition" 95fd4e5da5Sopenharmony_ciOpMemberDecorate %11 0 BuiltIn Position 96fd4e5da5Sopenharmony_ciOpMemberDecorate %11 1 BuiltIn PointSize 97fd4e5da5Sopenharmony_ciOpMemberDecorate %11 2 BuiltIn ClipDistance 98fd4e5da5Sopenharmony_ciOpMemberDecorate %11 3 BuiltIn CullDistance 99fd4e5da5Sopenharmony_ciOpDecorate %11 Block 100fd4e5da5Sopenharmony_ciOpDecorate %17 Location 0 101fd4e5da5Sopenharmony_ciOpDecorate %27 Location 0 102fd4e5da5Sopenharmony_ci%2 = OpTypeVoid 103fd4e5da5Sopenharmony_ci%3 = OpTypeFunction %2 104fd4e5da5Sopenharmony_ci%6 = OpTypeFloat 32 105fd4e5da5Sopenharmony_ci%7 = OpTypeVector %6 4 106fd4e5da5Sopenharmony_ci%8 = OpTypeInt 32 0 107fd4e5da5Sopenharmony_ci%9 = OpConstant %8 1 108fd4e5da5Sopenharmony_ci%10 = OpTypeArray %6 %9 109fd4e5da5Sopenharmony_ci%11 = OpTypeStruct %7 %6 %10 %10 110fd4e5da5Sopenharmony_ci%12 = OpTypePointer Output %11 111fd4e5da5Sopenharmony_ci%13 = OpVariable %12 Output 112fd4e5da5Sopenharmony_ci%14 = OpTypeInt 32 1 113fd4e5da5Sopenharmony_ci%15 = OpConstant %14 0 114fd4e5da5Sopenharmony_ci%16 = OpTypePointer Input %7 115fd4e5da5Sopenharmony_ci%17 = OpVariable %16 Input 116fd4e5da5Sopenharmony_ci%19 = OpTypePointer Output %7 117fd4e5da5Sopenharmony_ci%27 = OpVariable %19 Output 118fd4e5da5Sopenharmony_ci%4 = OpFunction %2 None %3 119fd4e5da5Sopenharmony_ci%5 = OpLabel 120fd4e5da5Sopenharmony_ci%18 = OpLoad %7 %17 121fd4e5da5Sopenharmony_ci%20 = OpAccessChain %19 %13 %15 122fd4e5da5Sopenharmony_ciOpStore %20 %18 123fd4e5da5Sopenharmony_ciOpReturn 124fd4e5da5Sopenharmony_ciOpFunctionEnd 125fd4e5da5Sopenharmony_ci)"; 126fd4e5da5Sopenharmony_ci 127fd4e5da5Sopenharmony_ciTEST(DiffTest, Basic) { 128fd4e5da5Sopenharmony_ci constexpr char kDiff[] = R"( ; SPIR-V 129fd4e5da5Sopenharmony_ci ; Version: 1.6 130fd4e5da5Sopenharmony_ci ; Generator: Khronos SPIR-V Tools Assembler; 0 131fd4e5da5Sopenharmony_ci-; Bound: 27 132fd4e5da5Sopenharmony_ci+; Bound: 30 133fd4e5da5Sopenharmony_ci ; Schema: 0 134fd4e5da5Sopenharmony_ci OpCapability Shader 135fd4e5da5Sopenharmony_ci+%27 = OpExtInstImport "GLSL.std.450" 136fd4e5da5Sopenharmony_ci OpMemoryModel Logical GLSL450 137fd4e5da5Sopenharmony_ci-OpEntryPoint Vertex %22 "main" %4 %14 %19 138fd4e5da5Sopenharmony_ci+OpEntryPoint Vertex %22 "main" %19 %4 %14 139fd4e5da5Sopenharmony_ci OpSource GLSL 450 140fd4e5da5Sopenharmony_ci OpName %4 "_ua_position" 141fd4e5da5Sopenharmony_ci OpName %14 "ANGLEXfbPosition" 142fd4e5da5Sopenharmony_ci OpName %17 "gl_PerVertex" 143fd4e5da5Sopenharmony_ci OpMemberName %17 0 "gl_Position" 144fd4e5da5Sopenharmony_ci OpMemberName %17 1 "gl_PointSize" 145fd4e5da5Sopenharmony_ci OpMemberName %17 2 "gl_ClipDistance" 146fd4e5da5Sopenharmony_ci OpMemberName %17 3 "gl_CullDistance" 147fd4e5da5Sopenharmony_ci OpName %19 "" 148fd4e5da5Sopenharmony_ci OpName %22 "main" 149fd4e5da5Sopenharmony_ci OpDecorate %4 Location 0 150fd4e5da5Sopenharmony_ci OpDecorate %14 Location 0 151fd4e5da5Sopenharmony_ci-OpMemberDecorate %17 1 RelaxedPrecision 152fd4e5da5Sopenharmony_ci OpMemberDecorate %17 0 BuiltIn Position 153fd4e5da5Sopenharmony_ci OpMemberDecorate %17 1 BuiltIn PointSize 154fd4e5da5Sopenharmony_ci OpMemberDecorate %17 2 BuiltIn ClipDistance 155fd4e5da5Sopenharmony_ci OpMemberDecorate %17 3 BuiltIn CullDistance 156fd4e5da5Sopenharmony_ci OpDecorate %17 Block 157fd4e5da5Sopenharmony_ci %1 = OpTypeFloat 32 158fd4e5da5Sopenharmony_ci %2 = OpTypeVector %1 4 159fd4e5da5Sopenharmony_ci %5 = OpTypeInt 32 0 160fd4e5da5Sopenharmony_ci %6 = OpTypeInt 32 1 161fd4e5da5Sopenharmony_ci-%15 = OpConstant %5 8 162fd4e5da5Sopenharmony_ci-%16 = OpTypeArray %1 %15 163fd4e5da5Sopenharmony_ci-%17 = OpTypeStruct %2 %1 %16 %16 164fd4e5da5Sopenharmony_ci+%17 = OpTypeStruct %2 %1 %29 %29 165fd4e5da5Sopenharmony_ci+%28 = OpConstant %5 1 166fd4e5da5Sopenharmony_ci+%29 = OpTypeArray %1 %28 167fd4e5da5Sopenharmony_ci %20 = OpTypeVoid 168fd4e5da5Sopenharmony_ci %25 = OpConstant %6 0 169fd4e5da5Sopenharmony_ci %3 = OpTypePointer Input %2 170fd4e5da5Sopenharmony_ci %13 = OpTypePointer Output %2 171fd4e5da5Sopenharmony_ci %18 = OpTypePointer Output %17 172fd4e5da5Sopenharmony_ci %21 = OpTypeFunction %20 173fd4e5da5Sopenharmony_ci %4 = OpVariable %3 Input 174fd4e5da5Sopenharmony_ci %14 = OpVariable %13 Output 175fd4e5da5Sopenharmony_ci %19 = OpVariable %18 Output 176fd4e5da5Sopenharmony_ci %22 = OpFunction %20 None %21 177fd4e5da5Sopenharmony_ci %23 = OpLabel 178fd4e5da5Sopenharmony_ci %24 = OpLoad %2 %4 179fd4e5da5Sopenharmony_ci %26 = OpAccessChain %13 %19 %25 180fd4e5da5Sopenharmony_ci OpStore %26 %24 181fd4e5da5Sopenharmony_ci OpReturn 182fd4e5da5Sopenharmony_ci OpFunctionEnd 183fd4e5da5Sopenharmony_ci)"; 184fd4e5da5Sopenharmony_ci Options options; 185fd4e5da5Sopenharmony_ci DoStringDiffTest(kSrc, kDst, kDiff, options); 186fd4e5da5Sopenharmony_ci} 187fd4e5da5Sopenharmony_ci 188fd4e5da5Sopenharmony_ciTEST(DiffTest, BasicNoDebug) { 189fd4e5da5Sopenharmony_ci constexpr char kSrcNoDebug[] = R"(; SPIR-V 190fd4e5da5Sopenharmony_ci; Version: 1.0 191fd4e5da5Sopenharmony_ci; Generator: Google ANGLE Shader Compiler; 0 192fd4e5da5Sopenharmony_ci; Bound: 27 193fd4e5da5Sopenharmony_ci; Schema: 0 194fd4e5da5Sopenharmony_ciOpCapability Shader 195fd4e5da5Sopenharmony_ci OpMemoryModel Logical GLSL450 196fd4e5da5Sopenharmony_ci OpEntryPoint Vertex %22 "main" %4 %14 %19 197fd4e5da5Sopenharmony_ci OpSource GLSL 450 198fd4e5da5Sopenharmony_ci OpDecorate %4 Location 0 199fd4e5da5Sopenharmony_ci OpDecorate %14 Location 0 200fd4e5da5Sopenharmony_ci OpMemberDecorate %17 1 RelaxedPrecision 201fd4e5da5Sopenharmony_ci OpMemberDecorate %17 0 BuiltIn Position 202fd4e5da5Sopenharmony_ci OpMemberDecorate %17 1 BuiltIn PointSize 203fd4e5da5Sopenharmony_ciOpMemberDecorate %17 2 BuiltIn ClipDistance 204fd4e5da5Sopenharmony_ciOpMemberDecorate %17 3 BuiltIn CullDistance 205fd4e5da5Sopenharmony_ciOpDecorate %17 Block 206fd4e5da5Sopenharmony_ci%1 = OpTypeFloat 32 207fd4e5da5Sopenharmony_ci%2 = OpTypeVector %1 4 208fd4e5da5Sopenharmony_ci%5 = OpTypeInt 32 0 209fd4e5da5Sopenharmony_ci%6 = OpTypeInt 32 1 210fd4e5da5Sopenharmony_ci%15 = OpConstant %5 8 211fd4e5da5Sopenharmony_ci%16 = OpTypeArray %1 %15 212fd4e5da5Sopenharmony_ci%17 = OpTypeStruct %2 %1 %16 %16 213fd4e5da5Sopenharmony_ci%20 = OpTypeVoid 214fd4e5da5Sopenharmony_ci%25 = OpConstant %6 0 215fd4e5da5Sopenharmony_ci%3 = OpTypePointer Input %2 216fd4e5da5Sopenharmony_ci%13 = OpTypePointer Output %2 217fd4e5da5Sopenharmony_ci%18 = OpTypePointer Output %17 218fd4e5da5Sopenharmony_ci%21 = OpTypeFunction %20 219fd4e5da5Sopenharmony_ci%4 = OpVariable %3 Input 220fd4e5da5Sopenharmony_ci%14 = OpVariable %13 Output 221fd4e5da5Sopenharmony_ci%19 = OpVariable %18 Output 222fd4e5da5Sopenharmony_ci%22 = OpFunction %20 None %21 223fd4e5da5Sopenharmony_ci%23 = OpLabel 224fd4e5da5Sopenharmony_ci%24 = OpLoad %2 %4 225fd4e5da5Sopenharmony_ci%26 = OpAccessChain %13 %19 %25 226fd4e5da5Sopenharmony_ciOpStore %26 %24 227fd4e5da5Sopenharmony_ciOpReturn 228fd4e5da5Sopenharmony_ciOpFunctionEnd 229fd4e5da5Sopenharmony_ci)"; 230fd4e5da5Sopenharmony_ci constexpr char kDstNoDebug[] = R"(; SPIR-V 231fd4e5da5Sopenharmony_ci; Version: 1.0 232fd4e5da5Sopenharmony_ci; Generator: Khronos Glslang Reference Front End; 10 233fd4e5da5Sopenharmony_ci; Bound: 28 234fd4e5da5Sopenharmony_ci; Schema: 0 235fd4e5da5Sopenharmony_ciOpCapability Shader 236fd4e5da5Sopenharmony_ci%1 = OpExtInstImport "GLSL.std.450" 237fd4e5da5Sopenharmony_ciOpMemoryModel Logical GLSL450 238fd4e5da5Sopenharmony_ciOpEntryPoint Vertex %4 "main" %13 %17 %27 239fd4e5da5Sopenharmony_ciOpSource GLSL 450 240fd4e5da5Sopenharmony_ciOpMemberDecorate %11 0 BuiltIn Position 241fd4e5da5Sopenharmony_ciOpMemberDecorate %11 1 BuiltIn PointSize 242fd4e5da5Sopenharmony_ciOpMemberDecorate %11 2 BuiltIn ClipDistance 243fd4e5da5Sopenharmony_ciOpMemberDecorate %11 3 BuiltIn CullDistance 244fd4e5da5Sopenharmony_ciOpDecorate %11 Block 245fd4e5da5Sopenharmony_ciOpDecorate %17 Location 0 246fd4e5da5Sopenharmony_ciOpDecorate %27 Location 0 247fd4e5da5Sopenharmony_ci%2 = OpTypeVoid 248fd4e5da5Sopenharmony_ci%3 = OpTypeFunction %2 249fd4e5da5Sopenharmony_ci%6 = OpTypeFloat 32 250fd4e5da5Sopenharmony_ci%7 = OpTypeVector %6 4 251fd4e5da5Sopenharmony_ci%8 = OpTypeInt 32 0 252fd4e5da5Sopenharmony_ci%9 = OpConstant %8 1 253fd4e5da5Sopenharmony_ci%10 = OpTypeArray %6 %9 254fd4e5da5Sopenharmony_ci%11 = OpTypeStruct %7 %6 %10 %10 255fd4e5da5Sopenharmony_ci%12 = OpTypePointer Output %11 256fd4e5da5Sopenharmony_ci%13 = OpVariable %12 Output 257fd4e5da5Sopenharmony_ci%14 = OpTypeInt 32 1 258fd4e5da5Sopenharmony_ci%15 = OpConstant %14 0 259fd4e5da5Sopenharmony_ci%16 = OpTypePointer Input %7 260fd4e5da5Sopenharmony_ci%17 = OpVariable %16 Input 261fd4e5da5Sopenharmony_ci%19 = OpTypePointer Output %7 262fd4e5da5Sopenharmony_ci%27 = OpVariable %19 Output 263fd4e5da5Sopenharmony_ci%4 = OpFunction %2 None %3 264fd4e5da5Sopenharmony_ci%5 = OpLabel 265fd4e5da5Sopenharmony_ci%18 = OpLoad %7 %17 266fd4e5da5Sopenharmony_ci%20 = OpAccessChain %19 %13 %15 267fd4e5da5Sopenharmony_ciOpStore %20 %18 268fd4e5da5Sopenharmony_ciOpReturn 269fd4e5da5Sopenharmony_ciOpFunctionEnd 270fd4e5da5Sopenharmony_ci)"; 271fd4e5da5Sopenharmony_ci constexpr char kDiff[] = R"( ; SPIR-V 272fd4e5da5Sopenharmony_ci ; Version: 1.6 273fd4e5da5Sopenharmony_ci ; Generator: Khronos SPIR-V Tools Assembler; 0 274fd4e5da5Sopenharmony_ci-; Bound: 27 275fd4e5da5Sopenharmony_ci+; Bound: 30 276fd4e5da5Sopenharmony_ci ; Schema: 0 277fd4e5da5Sopenharmony_ci OpCapability Shader 278fd4e5da5Sopenharmony_ci+%27 = OpExtInstImport "GLSL.std.450" 279fd4e5da5Sopenharmony_ci OpMemoryModel Logical GLSL450 280fd4e5da5Sopenharmony_ci-OpEntryPoint Vertex %22 "main" %4 %14 %19 281fd4e5da5Sopenharmony_ci+OpEntryPoint Vertex %22 "main" %19 %4 %14 282fd4e5da5Sopenharmony_ci OpSource GLSL 450 283fd4e5da5Sopenharmony_ci OpDecorate %4 Location 0 284fd4e5da5Sopenharmony_ci OpDecorate %14 Location 0 285fd4e5da5Sopenharmony_ci-OpMemberDecorate %17 1 RelaxedPrecision 286fd4e5da5Sopenharmony_ci OpMemberDecorate %17 0 BuiltIn Position 287fd4e5da5Sopenharmony_ci OpMemberDecorate %17 1 BuiltIn PointSize 288fd4e5da5Sopenharmony_ci OpMemberDecorate %17 2 BuiltIn ClipDistance 289fd4e5da5Sopenharmony_ci OpMemberDecorate %17 3 BuiltIn CullDistance 290fd4e5da5Sopenharmony_ci OpDecorate %17 Block 291fd4e5da5Sopenharmony_ci %1 = OpTypeFloat 32 292fd4e5da5Sopenharmony_ci %2 = OpTypeVector %1 4 293fd4e5da5Sopenharmony_ci %5 = OpTypeInt 32 0 294fd4e5da5Sopenharmony_ci %6 = OpTypeInt 32 1 295fd4e5da5Sopenharmony_ci-%15 = OpConstant %5 8 296fd4e5da5Sopenharmony_ci-%16 = OpTypeArray %1 %15 297fd4e5da5Sopenharmony_ci-%17 = OpTypeStruct %2 %1 %16 %16 298fd4e5da5Sopenharmony_ci+%17 = OpTypeStruct %2 %1 %29 %29 299fd4e5da5Sopenharmony_ci+%28 = OpConstant %5 1 300fd4e5da5Sopenharmony_ci+%29 = OpTypeArray %1 %28 301fd4e5da5Sopenharmony_ci %20 = OpTypeVoid 302fd4e5da5Sopenharmony_ci %25 = OpConstant %6 0 303fd4e5da5Sopenharmony_ci %3 = OpTypePointer Input %2 304fd4e5da5Sopenharmony_ci %13 = OpTypePointer Output %2 305fd4e5da5Sopenharmony_ci %18 = OpTypePointer Output %17 306fd4e5da5Sopenharmony_ci %21 = OpTypeFunction %20 307fd4e5da5Sopenharmony_ci %4 = OpVariable %3 Input 308fd4e5da5Sopenharmony_ci %14 = OpVariable %13 Output 309fd4e5da5Sopenharmony_ci %19 = OpVariable %18 Output 310fd4e5da5Sopenharmony_ci %22 = OpFunction %20 None %21 311fd4e5da5Sopenharmony_ci %23 = OpLabel 312fd4e5da5Sopenharmony_ci %24 = OpLoad %2 %4 313fd4e5da5Sopenharmony_ci %26 = OpAccessChain %13 %19 %25 314fd4e5da5Sopenharmony_ci OpStore %26 %24 315fd4e5da5Sopenharmony_ci OpReturn 316fd4e5da5Sopenharmony_ci OpFunctionEnd 317fd4e5da5Sopenharmony_ci)"; 318fd4e5da5Sopenharmony_ci Options options; 319fd4e5da5Sopenharmony_ci DoStringDiffTest(kSrcNoDebug, kDstNoDebug, kDiff, options); 320fd4e5da5Sopenharmony_ci} 321fd4e5da5Sopenharmony_ci 322fd4e5da5Sopenharmony_ciTEST(DiffTest, BasicDumpIds) { 323fd4e5da5Sopenharmony_ci constexpr char kDiff[] = R"( ; SPIR-V 324fd4e5da5Sopenharmony_ci ; Version: 1.6 325fd4e5da5Sopenharmony_ci ; Generator: Khronos SPIR-V Tools Assembler; 0 326fd4e5da5Sopenharmony_ci-; Bound: 27 327fd4e5da5Sopenharmony_ci+; Bound: 30 328fd4e5da5Sopenharmony_ci ; Schema: 0 329fd4e5da5Sopenharmony_ci OpCapability Shader 330fd4e5da5Sopenharmony_ci+%27 = OpExtInstImport "GLSL.std.450" 331fd4e5da5Sopenharmony_ci OpMemoryModel Logical GLSL450 332fd4e5da5Sopenharmony_ci-OpEntryPoint Vertex %22 "main" %4 %14 %19 333fd4e5da5Sopenharmony_ci+OpEntryPoint Vertex %22 "main" %19 %4 %14 334fd4e5da5Sopenharmony_ci OpSource GLSL 450 335fd4e5da5Sopenharmony_ci OpName %4 "_ua_position" 336fd4e5da5Sopenharmony_ci OpName %14 "ANGLEXfbPosition" 337fd4e5da5Sopenharmony_ci OpName %17 "gl_PerVertex" 338fd4e5da5Sopenharmony_ci OpMemberName %17 0 "gl_Position" 339fd4e5da5Sopenharmony_ci OpMemberName %17 1 "gl_PointSize" 340fd4e5da5Sopenharmony_ci OpMemberName %17 2 "gl_ClipDistance" 341fd4e5da5Sopenharmony_ci OpMemberName %17 3 "gl_CullDistance" 342fd4e5da5Sopenharmony_ci OpName %19 "" 343fd4e5da5Sopenharmony_ci OpName %22 "main" 344fd4e5da5Sopenharmony_ci OpDecorate %4 Location 0 345fd4e5da5Sopenharmony_ci OpDecorate %14 Location 0 346fd4e5da5Sopenharmony_ci-OpMemberDecorate %17 1 RelaxedPrecision 347fd4e5da5Sopenharmony_ci OpMemberDecorate %17 0 BuiltIn Position 348fd4e5da5Sopenharmony_ci OpMemberDecorate %17 1 BuiltIn PointSize 349fd4e5da5Sopenharmony_ci OpMemberDecorate %17 2 BuiltIn ClipDistance 350fd4e5da5Sopenharmony_ci OpMemberDecorate %17 3 BuiltIn CullDistance 351fd4e5da5Sopenharmony_ci OpDecorate %17 Block 352fd4e5da5Sopenharmony_ci %1 = OpTypeFloat 32 353fd4e5da5Sopenharmony_ci %2 = OpTypeVector %1 4 354fd4e5da5Sopenharmony_ci %5 = OpTypeInt 32 0 355fd4e5da5Sopenharmony_ci %6 = OpTypeInt 32 1 356fd4e5da5Sopenharmony_ci-%15 = OpConstant %5 8 357fd4e5da5Sopenharmony_ci-%16 = OpTypeArray %1 %15 358fd4e5da5Sopenharmony_ci-%17 = OpTypeStruct %2 %1 %16 %16 359fd4e5da5Sopenharmony_ci+%17 = OpTypeStruct %2 %1 %29 %29 360fd4e5da5Sopenharmony_ci+%28 = OpConstant %5 1 361fd4e5da5Sopenharmony_ci+%29 = OpTypeArray %1 %28 362fd4e5da5Sopenharmony_ci %20 = OpTypeVoid 363fd4e5da5Sopenharmony_ci %25 = OpConstant %6 0 364fd4e5da5Sopenharmony_ci %3 = OpTypePointer Input %2 365fd4e5da5Sopenharmony_ci %13 = OpTypePointer Output %2 366fd4e5da5Sopenharmony_ci %18 = OpTypePointer Output %17 367fd4e5da5Sopenharmony_ci %21 = OpTypeFunction %20 368fd4e5da5Sopenharmony_ci %4 = OpVariable %3 Input 369fd4e5da5Sopenharmony_ci %14 = OpVariable %13 Output 370fd4e5da5Sopenharmony_ci %19 = OpVariable %18 Output 371fd4e5da5Sopenharmony_ci %22 = OpFunction %20 None %21 372fd4e5da5Sopenharmony_ci %23 = OpLabel 373fd4e5da5Sopenharmony_ci %24 = OpLoad %2 %4 374fd4e5da5Sopenharmony_ci %26 = OpAccessChain %13 %19 %25 375fd4e5da5Sopenharmony_ci OpStore %26 %24 376fd4e5da5Sopenharmony_ci OpReturn 377fd4e5da5Sopenharmony_ci OpFunctionEnd 378fd4e5da5Sopenharmony_ci Src -> Dst 379fd4e5da5Sopenharmony_ci 1 -> 6 [TypeFloat] 380fd4e5da5Sopenharmony_ci 2 -> 7 [TypeVector] 381fd4e5da5Sopenharmony_ci 3 -> 16 [TypePointer] 382fd4e5da5Sopenharmony_ci 4 -> 17 [Variable] 383fd4e5da5Sopenharmony_ci 5 -> 8 [TypeInt] 384fd4e5da5Sopenharmony_ci 6 -> 14 [TypeInt] 385fd4e5da5Sopenharmony_ci 13 -> 19 [TypePointer] 386fd4e5da5Sopenharmony_ci 14 -> 27 [Variable] 387fd4e5da5Sopenharmony_ci 15 -> 28 [Constant] 388fd4e5da5Sopenharmony_ci 16 -> 29 [TypeArray] 389fd4e5da5Sopenharmony_ci 17 -> 11 [TypeStruct] 390fd4e5da5Sopenharmony_ci 18 -> 12 [TypePointer] 391fd4e5da5Sopenharmony_ci 19 -> 13 [Variable] 392fd4e5da5Sopenharmony_ci 20 -> 2 [TypeVoid] 393fd4e5da5Sopenharmony_ci 21 -> 3 [TypeFunction] 394fd4e5da5Sopenharmony_ci 22 -> 4 [Function] 395fd4e5da5Sopenharmony_ci 23 -> 5 [Label] 396fd4e5da5Sopenharmony_ci 24 -> 18 [Load] 397fd4e5da5Sopenharmony_ci 25 -> 15 [Constant] 398fd4e5da5Sopenharmony_ci 26 -> 20 [AccessChain] 399fd4e5da5Sopenharmony_ci)"; 400fd4e5da5Sopenharmony_ci Options options; 401fd4e5da5Sopenharmony_ci options.dump_id_map = true; 402fd4e5da5Sopenharmony_ci DoStringDiffTest(kSrc, kDst, kDiff, options); 403fd4e5da5Sopenharmony_ci} 404fd4e5da5Sopenharmony_ci 405fd4e5da5Sopenharmony_ci} // namespace 406fd4e5da5Sopenharmony_ci} // namespace diff 407fd4e5da5Sopenharmony_ci} // namespace spvtools 408