Merge RenameReservedKeywords into the Renamer
Adds additional modes to the Renamer for renaming just HLSL or MSL
keywords. The sanitizers no longer rename reserved keywords
automatically, which isn't usually necessary anyway since Dawn renames
all symbols.
The tint executable automatically renames reserved keywords when
targeting HLSL and MSL. It now also has an option to rename
everything, which is useful for testing the renamer.
Change-Id: Idbfd53226805e851050024402be8d8f251b88707
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/47960
Commit-Queue: Ben Clayton <bclayton@chromium.org>
Auto-Submit: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@chromium.org>
diff --git a/samples/main.cc b/samples/main.cc
index 17acb9a..056508e 100644
--- a/samples/main.cc
+++ b/samples/main.cc
@@ -85,6 +85,7 @@
bound_array_accessors
emit_vertex_point_size
first_index_offset
+ renamer
--parse-only -- Stop after parsing the input
--dump-ast -- Dump the generated AST to stdout
--dawn-validation -- SPIRV outputs are validated with the same flags
@@ -688,6 +689,8 @@
} else if (name == "first_index_offset") {
transform_manager.append(
std::make_unique<tint::transform::FirstIndexOffset>(0, 0));
+ } else if (name == "renamer") {
+ transform_manager.append(std::make_unique<tint::transform::Renamer>());
} else {
std::cerr << "Unknown transform name: " << name << std::endl;
return 1;
@@ -702,14 +705,24 @@
break;
#endif // TINT_BUILD_SPV_WRITER
#if TINT_BUILD_MSL_WRITER
- case Format::kMsl:
+ case Format::kMsl: {
+ tint::transform::Renamer::Config renamer_config{
+ tint::transform::Renamer::Target::kMslKeywords};
+ transform_manager.append(
+ std::make_unique<tint::transform::Renamer>(renamer_config));
transform_manager.append(std::make_unique<tint::transform::Msl>());
break;
+ }
#endif // TINT_BUILD_MSL_WRITER
#if TINT_BUILD_HLSL_WRITER
- case Format::kHlsl:
+ case Format::kHlsl: {
+ tint::transform::Renamer::Config renamer_config{
+ tint::transform::Renamer::Target::kHlslKeywords};
+ transform_manager.append(
+ std::make_unique<tint::transform::Renamer>(renamer_config));
transform_manager.append(std::make_unique<tint::transform::Hlsl>());
break;
+ }
#endif // TINT_BUILD_HLSL_WRITER
default:
break;
diff --git a/src/transform/hlsl.cc b/src/transform/hlsl.cc
index 5972a82..3b4bb80 100644
--- a/src/transform/hlsl.cc
+++ b/src/transform/hlsl.cc
@@ -30,575 +30,6 @@
namespace tint {
namespace transform {
-namespace {
-
-// This list is used for a binary search and must be kept in sorted order.
-const char* kReservedKeywords[] = {"AddressU",
- "AddressV",
- "AddressW",
- "AllMemoryBarrier",
- "AllMemoryBarrierWithGroupSync",
- "AppendStructuredBuffer",
- "BINORMAL",
- "BLENDINDICES",
- "BLENDWEIGHT",
- "BlendState",
- "BorderColor",
- "Buffer",
- "ByteAddressBuffer",
- "COLOR",
- "CheckAccessFullyMapped",
- "ComparisonFunc",
- "CompileShader",
- "ComputeShader",
- "ConsumeStructuredBuffer",
- "D3DCOLORtoUBYTE4",
- "DEPTH",
- "DepthStencilState",
- "DepthStencilView",
- "DeviceMemoryBarrier",
- "DeviceMemroyBarrierWithGroupSync",
- "DomainShader",
- "EvaluateAttributeAtCentroid",
- "EvaluateAttributeAtSample",
- "EvaluateAttributeSnapped",
- "FOG",
- "Filter",
- "GeometryShader",
- "GetRenderTargetSampleCount",
- "GetRenderTargetSamplePosition",
- "GroupMemoryBarrier",
- "GroupMemroyBarrierWithGroupSync",
- "Hullshader",
- "InputPatch",
- "InterlockedAdd",
- "InterlockedAnd",
- "InterlockedCompareExchange",
- "InterlockedCompareStore",
- "InterlockedExchange",
- "InterlockedMax",
- "InterlockedMin",
- "InterlockedOr",
- "InterlockedXor",
- "LineStream",
- "MaxAnisotropy",
- "MaxLOD",
- "MinLOD",
- "MipLODBias",
- "NORMAL",
- "NULL",
- "Normal",
- "OutputPatch",
- "POSITION",
- "POSITIONT",
- "PSIZE",
- "PixelShader",
- "PointStream",
- "Process2DQuadTessFactorsAvg",
- "Process2DQuadTessFactorsMax",
- "Process2DQuadTessFactorsMin",
- "ProcessIsolineTessFactors",
- "ProcessQuadTessFactorsAvg",
- "ProcessQuadTessFactorsMax",
- "ProcessQuadTessFactorsMin",
- "ProcessTriTessFactorsAvg",
- "ProcessTriTessFactorsMax",
- "ProcessTriTessFactorsMin",
- "RWBuffer",
- "RWByteAddressBuffer",
- "RWStructuredBuffer",
- "RWTexture1D",
- "RWTexture2D",
- "RWTexture2DArray",
- "RWTexture3D",
- "RasterizerState",
- "RenderTargetView",
- "SV_ClipDistance",
- "SV_Coverage",
- "SV_CullDistance",
- "SV_Depth",
- "SV_DepthGreaterEqual",
- "SV_DepthLessEqual",
- "SV_DispatchThreadID",
- "SV_DomainLocation",
- "SV_GSInstanceID",
- "SV_GroupID",
- "SV_GroupIndex",
- "SV_GroupThreadID",
- "SV_InnerCoverage",
- "SV_InsideTessFactor",
- "SV_InstanceID",
- "SV_IsFrontFace",
- "SV_OutputControlPointID",
- "SV_Position",
- "SV_PrimitiveID",
- "SV_RenderTargetArrayIndex",
- "SV_SampleIndex",
- "SV_StencilRef",
- "SV_Target",
- "SV_TessFactor",
- "SV_VertexArrayIndex",
- "SV_VertexID",
- "Sampler",
- "Sampler1D",
- "Sampler2D",
- "Sampler3D",
- "SamplerCUBE",
- "StructuredBuffer",
- "TANGENT",
- "TESSFACTOR",
- "TEXCOORD",
- "Texcoord",
- "Texture",
- "Texture1D",
- "Texture2D",
- "Texture2DArray",
- "Texture2DMS",
- "Texture2DMSArray",
- "Texture3D",
- "TextureCube",
- "TextureCubeArray",
- "TriangleStream",
- "VFACE",
- "VPOS",
- "VertexShader",
- "abort",
- "allow_uav_condition",
- "asdouble",
- "asfloat",
- "asint",
- "asm",
- "asm_fragment",
- "asuint",
- "auto",
- "bool",
- "bool1",
- "bool1x1",
- "bool1x2",
- "bool1x3",
- "bool1x4",
- "bool2",
- "bool2x1",
- "bool2x2",
- "bool2x3",
- "bool2x4",
- "bool3",
- "bool3x1",
- "bool3x2",
- "bool3x3",
- "bool3x4",
- "bool4",
- "bool4x1",
- "bool4x2",
- "bool4x3",
- "bool4x4",
- "branch",
- "break",
- "call",
- "case",
- "catch",
- "cbuffer",
- "centroid",
- "char",
- "class",
- "clip",
- "column_major",
- "compile_fragment",
- "const",
- "const_cast",
- "continue",
- "countbits",
- "ddx",
- "ddx_coarse",
- "ddx_fine",
- "ddy",
- "ddy_coarse",
- "ddy_fine",
- "degrees",
- "delete",
- "discard",
- "do",
- "double",
- "double1",
- "double1x1",
- "double1x2",
- "double1x3",
- "double1x4",
- "double2",
- "double2x1",
- "double2x2",
- "double2x3",
- "double2x4",
- "double3",
- "double3x1",
- "double3x2",
- "double3x3",
- "double3x4",
- "double4",
- "double4x1",
- "double4x2",
- "double4x3",
- "double4x4",
- "dst",
- "dword",
- "dword1",
- "dword1x1",
- "dword1x2",
- "dword1x3",
- "dword1x4",
- "dword2",
- "dword2x1",
- "dword2x2",
- "dword2x3",
- "dword2x4",
- "dword3",
- "dword3x1",
- "dword3x2",
- "dword3x3",
- "dword3x4",
- "dword4",
- "dword4x1",
- "dword4x2",
- "dword4x3",
- "dword4x4",
- "dynamic_cast",
- "else",
- "enum",
- "errorf",
- "explicit",
- "export",
- "extern",
- "f16to32",
- "f32tof16",
- "false",
- "fastopt",
- "firstbithigh",
- "firstbitlow",
- "flatten",
- "float",
- "float1",
- "float1x1",
- "float1x2",
- "float1x3",
- "float1x4",
- "float2",
- "float2x1",
- "float2x2",
- "float2x3",
- "float2x4",
- "float3",
- "float3x1",
- "float3x2",
- "float3x3",
- "float3x4",
- "float4",
- "float4x1",
- "float4x2",
- "float4x3",
- "float4x4",
- "fmod",
- "for",
- "forcecase",
- "frac",
- "friend",
- "fxgroup",
- "goto",
- "groupshared",
- "half",
- "half1",
- "half1x1",
- "half1x2",
- "half1x3",
- "half1x4",
- "half2",
- "half2x1",
- "half2x2",
- "half2x3",
- "half2x4",
- "half3",
- "half3x1",
- "half3x2",
- "half3x3",
- "half3x4",
- "half4",
- "half4x1",
- "half4x2",
- "half4x3",
- "half4x4",
- "if",
- "in",
- "inline",
- "inout",
- "int",
- "int1",
- "int1x1",
- "int1x2",
- "int1x3",
- "int1x4",
- "int2",
- "int2x1",
- "int2x2",
- "int2x3",
- "int2x4",
- "int3",
- "int3x1",
- "int3x2",
- "int3x3",
- "int3x4",
- "int4",
- "int4x1",
- "int4x2",
- "int4x3",
- "int4x4",
- "interface",
- "isfinite",
- "isinf",
- "isnan",
- "lerp",
- "lineadj",
- "linear",
- "lit",
- "log10",
- "long",
- "loop",
- "mad",
- "matrix",
- "min10float",
- "min10float1",
- "min10float1x1",
- "min10float1x2",
- "min10float1x3",
- "min10float1x4",
- "min10float2",
- "min10float2x1",
- "min10float2x2",
- "min10float2x3",
- "min10float2x4",
- "min10float3",
- "min10float3x1",
- "min10float3x2",
- "min10float3x3",
- "min10float3x4",
- "min10float4",
- "min10float4x1",
- "min10float4x2",
- "min10float4x3",
- "min10float4x4",
- "min12int",
- "min12int1",
- "min12int1x1",
- "min12int1x2",
- "min12int1x3",
- "min12int1x4",
- "min12int2",
- "min12int2x1",
- "min12int2x2",
- "min12int2x3",
- "min12int2x4",
- "min12int3",
- "min12int3x1",
- "min12int3x2",
- "min12int3x3",
- "min12int3x4",
- "min12int4",
- "min12int4x1",
- "min12int4x2",
- "min12int4x3",
- "min12int4x4",
- "min16float",
- "min16float1",
- "min16float1x1",
- "min16float1x2",
- "min16float1x3",
- "min16float1x4",
- "min16float2",
- "min16float2x1",
- "min16float2x2",
- "min16float2x3",
- "min16float2x4",
- "min16float3",
- "min16float3x1",
- "min16float3x2",
- "min16float3x3",
- "min16float3x4",
- "min16float4",
- "min16float4x1",
- "min16float4x2",
- "min16float4x3",
- "min16float4x4",
- "min16int",
- "min16int1",
- "min16int1x1",
- "min16int1x2",
- "min16int1x3",
- "min16int1x4",
- "min16int2",
- "min16int2x1",
- "min16int2x2",
- "min16int2x3",
- "min16int2x4",
- "min16int3",
- "min16int3x1",
- "min16int3x2",
- "min16int3x3",
- "min16int3x4",
- "min16int4",
- "min16int4x1",
- "min16int4x2",
- "min16int4x3",
- "min16int4x4",
- "min16uint",
- "min16uint1",
- "min16uint1x1",
- "min16uint1x2",
- "min16uint1x3",
- "min16uint1x4",
- "min16uint2",
- "min16uint2x1",
- "min16uint2x2",
- "min16uint2x3",
- "min16uint2x4",
- "min16uint3",
- "min16uint3x1",
- "min16uint3x2",
- "min16uint3x3",
- "min16uint3x4",
- "min16uint4",
- "min16uint4x1",
- "min16uint4x2",
- "min16uint4x3",
- "min16uint4x4",
- "msad4",
- "mul",
- "mutable",
- "namespace",
- "new",
- "nointerpolation",
- "noise",
- "noperspective",
- "numthreads",
- "operator",
- "out",
- "packoffset",
- "pass",
- "pixelfragment",
- "pixelshader",
- "point",
- "precise",
- "printf",
- "private",
- "protected",
- "public",
- "radians",
- "rcp",
- "refract",
- "register",
- "reinterpret_cast",
- "return",
- "row_major",
- "rsqrt",
- "sample",
- "sampler",
- "sampler1D",
- "sampler2D",
- "sampler3D",
- "samplerCUBE",
- "sampler_state",
- "saturate",
- "shared",
- "short",
- "signed",
- "sincos",
- "sizeof",
- "snorm",
- "stateblock",
- "stateblock_state",
- "static",
- "static_cast",
- "string",
- "struct",
- "switch",
- "tbuffer",
- "technique",
- "technique10",
- "technique11",
- "template",
- "tex1D",
- "tex1Dbias",
- "tex1Dgrad",
- "tex1Dlod",
- "tex1Dproj",
- "tex2D",
- "tex2Dbias",
- "tex2Dgrad",
- "tex2Dlod",
- "tex2Dproj",
- "tex3D",
- "tex3Dbias",
- "tex3Dgrad",
- "tex3Dlod",
- "tex3Dproj",
- "texCUBE",
- "texCUBEbias",
- "texCUBEgrad",
- "texCUBElod",
- "texCUBEproj",
- "texture",
- "texture1D",
- "texture1DArray",
- "texture2D",
- "texture2DArray",
- "texture2DMS",
- "texture2DMSArray",
- "texture3D",
- "textureCube",
- "textureCubeArray",
- "this",
- "throw",
- "transpose",
- "triangle",
- "triangleadj",
- "true",
- "try",
- "typedef",
- "typename",
- "uint",
- "uint1",
- "uint1x1",
- "uint1x2",
- "uint1x3",
- "uint1x4",
- "uint2",
- "uint2x1",
- "uint2x2",
- "uint2x3",
- "uint2x4",
- "uint3",
- "uint3x1",
- "uint3x2",
- "uint3x3",
- "uint3x4",
- "uint4",
- "uint4x1",
- "uint4x2",
- "uint4x3",
- "uint4x4",
- "uniform",
- "union",
- "unorm",
- "unroll",
- "unsigned",
- "using",
- "vector",
- "vertexfragment",
- "vertexshader",
- "virtual",
- "void",
- "volatile",
- "while"};
-
-} // namespace
-
Hlsl::Hlsl() = default;
Hlsl::~Hlsl() = default;
@@ -616,7 +47,6 @@
CloneContext ctx(&builder, &out.program);
PromoteInitializersToConstVar(ctx);
AddEmptyEntryPoint(ctx);
- RenameReservedKeywords(&ctx, kReservedKeywords);
ctx.Clone();
return Output{Program(std::move(builder))};
}
diff --git a/src/transform/hlsl_test.cc b/src/transform/hlsl_test.cc
index 1f1515b..1f97e46 100644
--- a/src/transform/hlsl_test.cc
+++ b/src/transform/hlsl_test.cc
@@ -14,8 +14,6 @@
#include "src/transform/hlsl.h"
-#include <string>
-
#include "src/transform/test_helper.h"
namespace tint {
@@ -291,686 +289,8 @@
auto got = Run<Hlsl>(src);
EXPECT_EQ(expect, str(got));
+
}
-
-using HlslReservedKeywordTest = TransformTestWithParam<std::string>;
-
-TEST_P(HlslReservedKeywordTest, Keywords) {
- auto keyword = GetParam();
-
- auto src = R"(
-[[stage(fragment)]]
-fn main() {
- var )" + keyword +
- R"( : i32;
-}
-)";
-
- auto expect = R"(
-[[stage(fragment)]]
-fn main() {
- var tint_)" + keyword +
- R"( : i32;
-}
-)";
-
- auto got = Run<Hlsl>(src);
-
- EXPECT_EQ(expect, str(got));
-}
-
-TEST_P(HlslReservedKeywordTest, AttemptSymbolCollision) {
- auto keyword = GetParam();
-
- auto src = R"(
-[[stage(fragment)]]
-fn main() {
- var tint_)" +
- keyword +
- R"( : i32;
- var tint_)" +
- keyword +
- R"(_1 : i32;
- var )" + keyword +
- R"( : i32;
- var tint_)" +
- keyword +
- R"(_2 : i32;
- var tint_)" +
- keyword +
- R"(_3 : i32;
-}
-)";
-
- auto expect = R"(
-[[stage(fragment)]]
-fn main() {
- var tint_)" + keyword +
- R"( : i32;
- var tint_)" + keyword +
- R"(_1 : i32;
- var tint_)" + keyword +
- R"(_2 : i32;
- var tint_)" + keyword +
- R"(_2_1 : i32;
- var tint_)" + keyword +
- R"(_3 : i32;
-}
-)";
-
- auto got = Run<Hlsl>(src);
-
- EXPECT_EQ(expect, str(got));
-}
-
-INSTANTIATE_TEST_SUITE_P(HlslReservedKeywordTest,
- HlslReservedKeywordTest,
- testing::Values("AddressU",
- "AddressV",
- "AddressW",
- "AllMemoryBarrier",
- "AllMemoryBarrierWithGroupSync",
- "AppendStructuredBuffer",
- "BINORMAL",
- "BLENDINDICES",
- "BLENDWEIGHT",
- "BlendState",
- "BorderColor",
- "Buffer",
- "ByteAddressBuffer",
- "COLOR",
- "CheckAccessFullyMapped",
- "ComparisonFunc",
- "CompileShader",
- "ComputeShader",
- "ConsumeStructuredBuffer",
- "D3DCOLORtoUBYTE4",
- "DEPTH",
- "DepthStencilState",
- "DepthStencilView",
- "DeviceMemoryBarrier",
- "DeviceMemroyBarrierWithGroupSync",
- "DomainShader",
- "EvaluateAttributeAtCentroid",
- "EvaluateAttributeAtSample",
- "EvaluateAttributeSnapped",
- "FOG",
- "Filter",
- "GeometryShader",
- "GetRenderTargetSampleCount",
- "GetRenderTargetSamplePosition",
- "GroupMemoryBarrier",
- "GroupMemroyBarrierWithGroupSync",
- "Hullshader",
- "InputPatch",
- "InterlockedAdd",
- "InterlockedAnd",
- "InterlockedCompareExchange",
- "InterlockedCompareStore",
- "InterlockedExchange",
- "InterlockedMax",
- "InterlockedMin",
- "InterlockedOr",
- "InterlockedXor",
- "LineStream",
- "MaxAnisotropy",
- "MaxLOD",
- "MinLOD",
- "MipLODBias",
- "NORMAL",
- "NULL",
- "Normal",
- "OutputPatch",
- "POSITION",
- "POSITIONT",
- "PSIZE",
- "PixelShader",
- "PointStream",
- "Process2DQuadTessFactorsAvg",
- "Process2DQuadTessFactorsMax",
- "Process2DQuadTessFactorsMin",
- "ProcessIsolineTessFactors",
- "ProcessQuadTessFactorsAvg",
- "ProcessQuadTessFactorsMax",
- "ProcessQuadTessFactorsMin",
- "ProcessTriTessFactorsAvg",
- "ProcessTriTessFactorsMax",
- "ProcessTriTessFactorsMin",
- "RWBuffer",
- "RWByteAddressBuffer",
- "RWStructuredBuffer",
- "RWTexture1D",
- "RWTexture2D",
- "RWTexture2DArray",
- "RWTexture3D",
- "RasterizerState",
- "RenderTargetView",
- "SV_ClipDistance",
- "SV_Coverage",
- "SV_CullDistance",
- "SV_Depth",
- "SV_DepthGreaterEqual",
- "SV_DepthLessEqual",
- "SV_DispatchThreadID",
- "SV_DomainLocation",
- "SV_GSInstanceID",
- "SV_GroupID",
- "SV_GroupIndex",
- "SV_GroupThreadID",
- "SV_InnerCoverage",
- "SV_InsideTessFactor",
- "SV_InstanceID",
- "SV_IsFrontFace",
- "SV_OutputControlPointID",
- "SV_Position",
- "SV_PrimitiveID",
- "SV_RenderTargetArrayIndex",
- "SV_SampleIndex",
- "SV_StencilRef",
- "SV_Target",
- "SV_TessFactor",
- "SV_VertexArrayIndex",
- "SV_VertexID",
- "Sampler",
- "Sampler1D",
- "Sampler2D",
- "Sampler3D",
- "SamplerCUBE",
- "StructuredBuffer",
- "TANGENT",
- "TESSFACTOR",
- "TEXCOORD",
- "Texcoord",
- "Texture",
- "Texture1D",
- "Texture2D",
- "Texture2DArray",
- "Texture2DMS",
- "Texture2DMSArray",
- "Texture3D",
- "TextureCube",
- "TextureCubeArray",
- "TriangleStream",
- "VFACE",
- "VPOS",
- "VertexShader",
- "abort",
- // "abs", // WGSL intrinsic
- // "acos", // WGSL intrinsic
- // "all", // WGSL intrinsic
- "allow_uav_condition",
- // "any", // WGSL intrinsic
- "asdouble",
- "asfloat",
- // "asin", // WGSL intrinsic
- "asint",
- // "asm", // WGSL keyword
- "asm_fragment",
- "asuint",
- // "atan", // WGSL intrinsic
- // "atan2", // WGSL intrinsic
- "auto",
- // "bool", // WGSL keyword
- "bool1",
- "bool1x1",
- "bool1x2",
- "bool1x3",
- "bool1x4",
- "bool2",
- "bool2x1",
- "bool2x2",
- "bool2x3",
- "bool2x4",
- "bool3",
- "bool3x1",
- "bool3x2",
- "bool3x3",
- "bool3x4",
- "bool4",
- "bool4x1",
- "bool4x2",
- "bool4x3",
- "bool4x4",
- "branch",
- // "break", // WGSL keyword
- // "call", // WGSL intrinsic
- // "case", // WGSL keyword
- "catch",
- "cbuffer",
- // "ceil", // WGSL intrinsic
- "centroid",
- "char",
- // "clamp", // WGSL intrinsic
- "class",
- "clip",
- "column_major",
- "compile_fragment",
- // "const", // WGSL keyword
- "const_cast",
- // "continue", // WGSL keyword
- // "cos", // WGSL intrinsic
- // "cosh", // WGSL intrinsic
- "countbits",
- // "cross", // WGSL intrinsic
- "ddx",
- "ddx_coarse",
- "ddx_fine",
- "ddy",
- "ddy_coarse",
- "ddy_fine",
- "degrees",
- "delete",
- // "determinant", // WGSL intrinsic
- // "discard", // WGSL keyword
- // "distance", // WGSL intrinsic
- // "do", // WGSL keyword
- // "dot", // WGSL intrinsic
- "double",
- "double1",
- "double1x1",
- "double1x2",
- "double1x3",
- "double1x4",
- "double2",
- "double2x1",
- "double2x2",
- "double2x3",
- "double2x4",
- "double3",
- "double3x1",
- "double3x2",
- "double3x3",
- "double3x4",
- "double4",
- "double4x1",
- "double4x2",
- "double4x3",
- "double4x4",
- "dst",
- "dword",
- "dword1",
- "dword1x1",
- "dword1x2",
- "dword1x3",
- "dword1x4",
- "dword2",
- "dword2x1",
- "dword2x2",
- "dword2x3",
- "dword2x4",
- "dword3",
- "dword3x1",
- "dword3x2",
- "dword3x3",
- "dword3x4",
- "dword4",
- "dword4x1",
- "dword4x2",
- "dword4x3",
- "dword4x4",
- "dynamic_cast",
- // "else", // WGSL keyword
- // "enum", // WGSL keyword
- "errorf",
- // "exp", // WGSL intrinsic
- // "exp2", // WGSL intrinsic
- "explicit",
- "export",
- "extern",
- "f16to32",
- "f32tof16",
- // "faceforward", // WGSL intrinsic
- // "false", // WGSL keyword
- "fastopt",
- "firstbithigh",
- "firstbitlow",
- "flatten",
- "float",
- "float1",
- "float1x1",
- "float1x2",
- "float1x3",
- "float1x4",
- "float2",
- "float2x1",
- "float2x2",
- "float2x3",
- "float2x4",
- "float3",
- "float3x1",
- "float3x2",
- "float3x3",
- "float3x4",
- "float4",
- "float4x1",
- "float4x2",
- "float4x3",
- "float4x4",
- // "floor", // WGSL intrinsic
- // "fma", // WGSL intrinsic
- "fmod",
- // "for", // WGSL keyword
- "forcecase",
- "frac",
- // "frexp", // WGSL intrinsic
- "friend",
- // "fwidth", // WGSL intrinsic
- "fxgroup",
- "goto",
- "groupshared",
- "half",
- "half1",
- "half1x1",
- "half1x2",
- "half1x3",
- "half1x4",
- "half2",
- "half2x1",
- "half2x2",
- "half2x3",
- "half2x4",
- "half3",
- "half3x1",
- "half3x2",
- "half3x3",
- "half3x4",
- "half4",
- "half4x1",
- "half4x2",
- "half4x3",
- "half4x4",
- // "if", // WGSL keyword
- // "in", // WGSL keyword
- "inline",
- "inout",
- "int",
- "int1",
- "int1x1",
- "int1x2",
- "int1x3",
- "int1x4",
- "int2",
- "int2x1",
- "int2x2",
- "int2x3",
- "int2x4",
- "int3",
- "int3x1",
- "int3x2",
- "int3x3",
- "int3x4",
- "int4",
- "int4x1",
- "int4x2",
- "int4x3",
- "int4x4",
- "interface",
- "isfinite",
- "isinf",
- "isnan",
- // "ldexp", // WGSL intrinsic
- // "length", // WGSL intrinsic
- "lerp",
- "lineadj",
- "linear",
- "lit",
- // "log", // WGSL intrinsic
- "log10",
- // "log2", // WGSL intrinsic
- "long",
- // "loop", // WGSL keyword
- "mad",
- "matrix",
- // "max", // WGSL intrinsic
- // "min", // WGSL intrinsic
- "min10float",
- "min10float1",
- "min10float1x1",
- "min10float1x2",
- "min10float1x3",
- "min10float1x4",
- "min10float2",
- "min10float2x1",
- "min10float2x2",
- "min10float2x3",
- "min10float2x4",
- "min10float3",
- "min10float3x1",
- "min10float3x2",
- "min10float3x3",
- "min10float3x4",
- "min10float4",
- "min10float4x1",
- "min10float4x2",
- "min10float4x3",
- "min10float4x4",
- "min12int",
- "min12int1",
- "min12int1x1",
- "min12int1x2",
- "min12int1x3",
- "min12int1x4",
- "min12int2",
- "min12int2x1",
- "min12int2x2",
- "min12int2x3",
- "min12int2x4",
- "min12int3",
- "min12int3x1",
- "min12int3x2",
- "min12int3x3",
- "min12int3x4",
- "min12int4",
- "min12int4x1",
- "min12int4x2",
- "min12int4x3",
- "min12int4x4",
- "min16float",
- "min16float1",
- "min16float1x1",
- "min16float1x2",
- "min16float1x3",
- "min16float1x4",
- "min16float2",
- "min16float2x1",
- "min16float2x2",
- "min16float2x3",
- "min16float2x4",
- "min16float3",
- "min16float3x1",
- "min16float3x2",
- "min16float3x3",
- "min16float3x4",
- "min16float4",
- "min16float4x1",
- "min16float4x2",
- "min16float4x3",
- "min16float4x4",
- "min16int",
- "min16int1",
- "min16int1x1",
- "min16int1x2",
- "min16int1x3",
- "min16int1x4",
- "min16int2",
- "min16int2x1",
- "min16int2x2",
- "min16int2x3",
- "min16int2x4",
- "min16int3",
- "min16int3x1",
- "min16int3x2",
- "min16int3x3",
- "min16int3x4",
- "min16int4",
- "min16int4x1",
- "min16int4x2",
- "min16int4x3",
- "min16int4x4",
- "min16uint",
- "min16uint1",
- "min16uint1x1",
- "min16uint1x2",
- "min16uint1x3",
- "min16uint1x4",
- "min16uint2",
- "min16uint2x1",
- "min16uint2x2",
- "min16uint2x3",
- "min16uint2x4",
- "min16uint3",
- "min16uint3x1",
- "min16uint3x2",
- "min16uint3x3",
- "min16uint3x4",
- "min16uint4",
- "min16uint4x1",
- "min16uint4x2",
- "min16uint4x3",
- "min16uint4x4",
- // "modf", // WGSL intrinsic
- "msad4",
- "mul",
- "mutable",
- "namespace",
- "new",
- "nointerpolation",
- "noise",
- "noperspective",
- // "normalize", // WGSL intrinsic
- "numthreads",
- "operator",
- // "out", // WGSL keyword
- "packoffset",
- "pass",
- "pixelfragment",
- "pixelshader",
- "point",
- // "pow", // WGSL intrinsic
- "precise",
- "printf",
- // "private", // WGSL keyword
- "protected",
- "public",
- "radians",
- "rcp",
- // "reflect", // WGSL intrinsic
- "refract",
- "register",
- "reinterpret_cast",
- // "return", // WGSL keyword
- // "reversebits", // WGSL intrinsic
- // "round", // WGSL intrinsic
- "row_major",
- "rsqrt",
- "sample",
- "sampler1D",
- "sampler2D",
- "sampler3D",
- "samplerCUBE",
- "sampler_state",
- "saturate",
- "shared",
- "short",
- // "sign", // WGSL intrinsic
- "signed",
- // "sin", // WGSL intrinsic
- "sincos",
- // "sinh", // WGSL intrinsic
- "sizeof",
- // "smoothstep", // WGSL intrinsic
- "snorm",
- // "sqrt", // WGSL intrinsic
- "stateblock",
- "stateblock_state",
- "static",
- "static_cast",
- // "step", // WGSL intrinsic
- "string",
- // "struct", // WGSL keyword
- // "switch", // WGSL keyword
- // "tan", // WGSL intrinsic
- // "tanh", // WGSL intrinsic
- "tbuffer",
- "technique",
- "technique10",
- "technique11",
- "template",
- "tex1D",
- "tex1Dbias",
- "tex1Dgrad",
- "tex1Dlod",
- "tex1Dproj",
- "tex2D",
- "tex2Dbias",
- "tex2Dgrad",
- "tex2Dlod",
- "tex2Dproj",
- "tex3D",
- "tex3Dbias",
- "tex3Dgrad",
- "tex3Dlod",
- "tex3Dproj",
- "texCUBE",
- "texCUBEbias",
- "texCUBEgrad",
- "texCUBElod",
- "texCUBEproj",
- "texture",
- "texture1D",
- "texture1DArray",
- "texture2D",
- "texture2DArray",
- "texture2DMS",
- "texture2DMSArray",
- "texture3D",
- "textureCube",
- "textureCubeArray",
- "this",
- "throw",
- "transpose",
- "triangle",
- "triangleadj",
- // "true", // WGSL keyword
- // "trunc", // WGSL intrinsic
- "try",
- // "typedef", // WGSL keyword
- "typename",
- "uint",
- "uint1",
- "uint1x1",
- "uint1x2",
- "uint1x3",
- "uint1x4",
- "uint2",
- "uint2x1",
- "uint2x2",
- "uint2x3",
- "uint2x4",
- "uint3",
- "uint3x1",
- "uint3x2",
- "uint3x3",
- "uint3x4",
- "uint4",
- "uint4x1",
- "uint4x2",
- "uint4x3",
- "uint4x4",
- // "uniform", // WGSL keyword
- "union",
- "unorm",
- "unroll",
- "unsigned",
- "using",
- "vector",
- "vertexfragment",
- "vertexshader",
- "virtual",
- // "void", // WGSL keyword
- "volatile",
- "while"));
-
} // namespace
} // namespace transform
} // namespace tint
diff --git a/src/transform/msl.cc b/src/transform/msl.cc
index 3624b5d..5f01358 100644
--- a/src/transform/msl.cc
+++ b/src/transform/msl.cc
@@ -16,251 +16,11 @@
#include <utility>
-#include "src/program_builder.h"
#include "src/transform/canonicalize_entry_point_io.h"
#include "src/transform/manager.h"
namespace tint {
namespace transform {
-namespace {
-// This list is used for a binary search and must be kept in sorted order.
-const char* kReservedKeywords[] = {"access",
- "alignas",
- "alignof",
- "and",
- "and_eq",
- "array",
- "array_ref",
- "as_type",
- "asm",
- "atomic",
- "atomic_bool",
- "atomic_int",
- "atomic_uint",
- "auto",
- "bitand",
- "bitor",
- "bool",
- "bool2",
- "bool3",
- "bool4",
- "break",
- "buffer",
- "case",
- "catch",
- "char",
- "char16_t",
- "char2",
- "char3",
- "char32_t",
- "char4",
- "class",
- "compl",
- "const",
- "const_cast",
- "const_reference",
- "constant",
- "constexpr",
- "continue",
- "decltype",
- "default",
- "delete",
- "depth2d",
- "depth2d_array",
- "depth2d_ms",
- "depth2d_ms_array",
- "depthcube",
- "depthcube_array",
- "device",
- "discard_fragment",
- "do",
- "double",
- "dynamic_cast",
- "else",
- "enum",
- "explicit",
- "extern",
- "false",
- "final",
- "float",
- "float2",
- "float2x2",
- "float2x3",
- "float2x4",
- "float3",
- "float3x2",
- "float3x3",
- "float3x4",
- "float4",
- "float4x2",
- "float4x3",
- "float4x4",
- "for",
- "fragment",
- "friend",
- "goto",
- "half",
- "half2",
- "half2x2",
- "half2x3",
- "half2x4",
- "half3",
- "half3x2",
- "half3x3",
- "half3x4",
- "half4",
- "half4x2",
- "half4x3",
- "half4x4",
- "if",
- "imageblock",
- "inline",
- "int",
- "int16_t",
- "int2",
- "int3",
- "int32_t",
- "int4",
- "int64_t",
- "int8_t",
- "kernel",
- "long",
- "long2",
- "long3",
- "long4",
- "main",
- "metal",
- "mutable",
- "namespace",
- "new",
- "noexcept",
- "not",
- "not_eq",
- "nullptr",
- "operator",
- "or",
- "or_eq",
- "override",
- "packed_bool2",
- "packed_bool3",
- "packed_bool4",
- "packed_char2",
- "packed_char3",
- "packed_char4",
- "packed_float2",
- "packed_float3",
- "packed_float4",
- "packed_half2",
- "packed_half3",
- "packed_half4",
- "packed_int2",
- "packed_int3",
- "packed_int4",
- "packed_short2",
- "packed_short3",
- "packed_short4",
- "packed_uchar2",
- "packed_uchar3",
- "packed_uchar4",
- "packed_uint2",
- "packed_uint3",
- "packed_uint4",
- "packed_ushort2",
- "packed_ushort3",
- "packed_ushort4",
- "patch_control_point",
- "private",
- "protected",
- "ptrdiff_t",
- "public",
- "r16snorm",
- "r16unorm",
- "r8unorm",
- "reference",
- "register",
- "reinterpret_cast",
- "return",
- "rg11b10f",
- "rg16snorm",
- "rg16unorm",
- "rg8snorm",
- "rg8unorm",
- "rgb10a2",
- "rgb9e5",
- "rgba16snorm",
- "rgba16unorm",
- "rgba8snorm",
- "rgba8unorm",
- "sampler",
- "short",
- "short2",
- "short3",
- "short4",
- "signed",
- "size_t",
- "sizeof",
- "srgba8unorm",
- "static",
- "static_assert",
- "static_cast",
- "struct",
- "switch",
- "template",
- "texture",
- "texture1d",
- "texture1d_array",
- "texture2d",
- "texture2d_array",
- "texture2d_ms",
- "texture2d_ms_array",
- "texture3d",
- "texture_buffer",
- "texturecube",
- "texturecube_array",
- "this",
- "thread",
- "thread_local",
- "threadgroup",
- "threadgroup_imageblock",
- "throw",
- "true",
- "try",
- "typedef",
- "typeid",
- "typename",
- "uchar",
- "uchar2",
- "uchar3",
- "uchar4",
- "uint",
- "uint16_t",
- "uint2",
- "uint3",
- "uint32_t",
- "uint4",
- "uint64_t",
- "uint8_t",
- "ulong2",
- "ulong3",
- "ulong4",
- "uniform",
- "union",
- "unsigned",
- "ushort",
- "ushort2",
- "ushort3",
- "ushort4",
- "using",
- "vec",
- "vertex",
- "virtual",
- "void",
- "volatile",
- "wchar_t",
- "while",
- "xor",
- "xor_eq"};
-} // namespace
Msl::Msl() = default;
Msl::~Msl() = default;
@@ -272,12 +32,7 @@
if (!out.program.IsValid()) {
return out;
}
-
- ProgramBuilder builder;
- CloneContext ctx(&builder, &out.program);
- RenameReservedKeywords(&ctx, kReservedKeywords);
- ctx.Clone();
- return Output{Program(std::move(builder))};
+ return Output{Program(std::move(out.program))};
}
} // namespace transform
diff --git a/src/transform/msl_test.cc b/src/transform/msl_test.cc
index a93df30..d257b2b 100644
--- a/src/transform/msl_test.cc
+++ b/src/transform/msl_test.cc
@@ -14,363 +14,12 @@
#include "src/transform/msl.h"
-#include <string>
-
#include "src/transform/test_helper.h"
namespace tint {
namespace transform {
namespace {
-using MslReservedKeywordTest = TransformTestWithParam<std::string>;
-
-TEST_F(MslReservedKeywordTest, Basic) {
- auto* src = R"(
-struct class {
- delete : i32;
-};
-
-[[stage(fragment)]]
-fn main() {
- var foo : i32;
- var half : f32;
- var half1 : f32;
- var half2 : f32;
- var tint_half2 : f32;
-}
-)";
-
- auto* expect = R"(
-struct tint_class {
- tint_delete : i32;
-};
-
-[[stage(fragment)]]
-fn tint_main() {
- var foo : i32;
- var tint_half : f32;
- var half1 : f32;
- var tint_half2 : f32;
- var tint_half2_1 : f32;
-}
-)";
-
- auto got = Run<Msl>(src);
-
- EXPECT_EQ(expect, str(got));
-}
-
-TEST_P(MslReservedKeywordTest, Keywords) {
- auto keyword = GetParam();
-
- auto src = R"(
-[[stage(fragment)]]
-fn main() {
- var )" + keyword +
- R"( : i32;
-}
-)";
-
- auto expect = R"(
-[[stage(fragment)]]
-fn tint_main() {
- var tint_)" + keyword +
- R"( : i32;
-}
-)";
-
- auto got = Run<Msl>(src);
-
- EXPECT_EQ(expect, str(got));
-}
-
-TEST_P(MslReservedKeywordTest, AttemptSymbolCollision) {
- auto keyword = GetParam();
-
- auto src = R"(
-[[stage(fragment)]]
-fn frag_main() {
- var tint_)" +
- keyword +
- R"( : i32;
- var tint_)" +
- keyword +
- R"(_1 : i32;
- var )" + keyword +
- R"( : i32;
- var tint_)" +
- keyword +
- R"(_2 : i32;
- var tint_)" +
- keyword +
- R"(_3 : i32;
-}
-)";
-
- auto expect = R"(
-[[stage(fragment)]]
-fn frag_main() {
- var tint_)" + keyword +
- R"( : i32;
- var tint_)" + keyword +
- R"(_1 : i32;
- var tint_)" + keyword +
- R"(_2 : i32;
- var tint_)" + keyword +
- R"(_2_1 : i32;
- var tint_)" + keyword +
- R"(_3 : i32;
-}
-)";
-
- auto got = Run<Msl>(src);
-
- EXPECT_EQ(expect, str(got));
-}
-
-INSTANTIATE_TEST_SUITE_P(MslReservedKeywordTest,
- MslReservedKeywordTest,
- testing::Values(
- // c++14 spec
- "alignas",
- "alignof",
- "and",
- "and_eq",
- // "asm", // Also reserved in WGSL
- "auto",
- "bitand",
- "bitor",
- // "bool", // Also used in WGSL
- // "break", // Also used in WGSL
- // "case", // Also used in WGSL
- "catch",
- "char",
- "char16_t",
- "char32_t",
- "class",
- "compl",
- // "const", // Also used in WGSL
- "const_cast",
- "constexpr",
- // "continue", // Also used in WGSL
- "decltype",
- // "default", // Also used in WGSL
- "delete",
- // "do", // Also used in WGSL
- "double",
- "dynamic_cast",
- // "else", // Also used in WGSL
- // "enum", // Also used in WGSL
- "explicit",
- "extern",
- // "false", // Also used in WGSL
- "final",
- "float",
- // "for", // Also used in WGSL
- "friend",
- "goto",
- // "if", // Also used in WGSL
- "inline",
- "int",
- "long",
- "mutable",
- "namespace",
- "new",
- "noexcept",
- "not",
- "not_eq",
- "nullptr",
- "operator",
- "or",
- "or_eq",
- "override",
- // "private", // Also used in WGSL
- "protected",
- "public",
- "register",
- "reinterpret_cast",
- // "return", // Also used in WGSL
- "short",
- "signed",
- "sizeof",
- "static",
- "static_assert",
- "static_cast",
- // "struct", // Also used in WGSL
- // "switch", // Also used in WGSL
- "template",
- "this",
- "thread_local",
- "throw",
- // "true", // Also used in WGSL
- "try",
- // "typedef", // Also used in WGSL
- "typeid",
- "typename",
- "union",
- "unsigned",
- "using",
- "virtual",
- // "void", // Also used in WGSL
- "volatile",
- "wchar_t",
- "while",
- "xor",
- "xor_eq",
-
- // Metal Spec
- "access",
- // "array", // Also used in WGSL
- "array_ref",
- "as_type",
- "atomic",
- "atomic_bool",
- "atomic_int",
- "atomic_uint",
- "bool2",
- "bool3",
- "bool4",
- "buffer",
- "char2",
- "char3",
- "char4",
- "const_reference",
- "constant",
- "depth2d",
- "depth2d_array",
- "depth2d_ms",
- "depth2d_ms_array",
- "depthcube",
- "depthcube_array",
- "device",
- "discard_fragment",
- "float2",
- "float2x2",
- "float2x3",
- "float2x4",
- "float3",
- "float3x2",
- "float3x3",
- "float3x4",
- "float4",
- "float4x2",
- "float4x3",
- "float4x4",
- "fragment",
- "half",
- "half2",
- "half2x2",
- "half2x3",
- "half2x4",
- "half3",
- "half3x2",
- "half3x3",
- "half3x4",
- "half4",
- "half4x2",
- "half4x3",
- "half4x4",
- "imageblock",
- "int16_t",
- "int2",
- "int3",
- "int32_t",
- "int4",
- "int64_t",
- "int8_t",
- "kernel",
- "long2",
- "long3",
- "long4",
- "main", // No functions called main
- "metal", // The namespace
- "packed_bool2",
- "packed_bool3",
- "packed_bool4",
- "packed_char2",
- "packed_char3",
- "packed_char4",
- "packed_float2",
- "packed_float3",
- "packed_float4",
- "packed_half2",
- "packed_half3",
- "packed_half4",
- "packed_int2",
- "packed_int3",
- "packed_int4",
- "packed_short2",
- "packed_short3",
- "packed_short4",
- "packed_uchar2",
- "packed_uchar3",
- "packed_uchar4",
- "packed_uint2",
- "packed_uint3",
- "packed_uint4",
- "packed_ushort2",
- "packed_ushort3",
- "packed_ushort4",
- "patch_control_point",
- "ptrdiff_t",
- "r16snorm",
- "r16unorm",
- // "r8unorm", // Also used in WGSL
- "reference",
- "rg11b10f",
- "rg16snorm",
- "rg16unorm",
- // "rg8snorm", // Also used in WGSL
- // "rg8unorm", // Also used in WGSL
- "rgb10a2",
- "rgb9e5",
- "rgba16snorm",
- "rgba16unorm",
- // "rgba8snorm", // Also used in WGSL
- // "rgba8unorm", // Also used in WGSL
- // "sampler", // Also used in WGSL
- "short2",
- "short3",
- "short4",
- "size_t",
- "srgba8unorm",
- "texture",
- "texture1d",
- "texture1d_array",
- "texture2d",
- "texture2d_array",
- "texture2d_ms",
- "texture2d_ms_array",
- "texture3d",
- "texture_buffer",
- "texturecube",
- "texturecube_array",
- "thread",
- "threadgroup",
- "threadgroup_imageblock",
- "uchar",
- "uchar2",
- "uchar3",
- "uchar4",
- "uint",
- "uint16_t",
- "uint2",
- "uint3",
- "uint32_t",
- "uint4",
- "uint64_t",
- "uint8_t",
- "ulong2",
- "ulong3",
- "ulong4",
- // "uniform", // Also used in WGSL
- "ushort",
- "ushort2",
- "ushort3",
- "ushort4",
- "vec",
- "vertex"));
-
} // namespace
} // namespace transform
} // namespace tint
diff --git a/src/transform/renamer.cc b/src/transform/renamer.cc
index b707010..07f773d 100644
--- a/src/transform/renamer.cc
+++ b/src/transform/renamer.cc
@@ -27,6 +27,813 @@
namespace tint {
namespace transform {
+namespace {
+
+// This list is used for a binary search and must be kept in sorted order.
+const char* kReservedKeywordsHLSL[] = {"AddressU",
+ "AddressV",
+ "AddressW",
+ "AllMemoryBarrier",
+ "AllMemoryBarrierWithGroupSync",
+ "AppendStructuredBuffer",
+ "BINORMAL",
+ "BLENDINDICES",
+ "BLENDWEIGHT",
+ "BlendState",
+ "BorderColor",
+ "Buffer",
+ "ByteAddressBuffer",
+ "COLOR",
+ "CheckAccessFullyMapped",
+ "ComparisonFunc",
+ "CompileShader",
+ "ComputeShader",
+ "ConsumeStructuredBuffer",
+ "D3DCOLORtoUBYTE4",
+ "DEPTH",
+ "DepthStencilState",
+ "DepthStencilView",
+ "DeviceMemoryBarrier",
+ "DeviceMemroyBarrierWithGroupSync",
+ "DomainShader",
+ "EvaluateAttributeAtCentroid",
+ "EvaluateAttributeAtSample",
+ "EvaluateAttributeSnapped",
+ "FOG",
+ "Filter",
+ "GeometryShader",
+ "GetRenderTargetSampleCount",
+ "GetRenderTargetSamplePosition",
+ "GroupMemoryBarrier",
+ "GroupMemroyBarrierWithGroupSync",
+ "Hullshader",
+ "InputPatch",
+ "InterlockedAdd",
+ "InterlockedAnd",
+ "InterlockedCompareExchange",
+ "InterlockedCompareStore",
+ "InterlockedExchange",
+ "InterlockedMax",
+ "InterlockedMin",
+ "InterlockedOr",
+ "InterlockedXor",
+ "LineStream",
+ "MaxAnisotropy",
+ "MaxLOD",
+ "MinLOD",
+ "MipLODBias",
+ "NORMAL",
+ "NULL",
+ "Normal",
+ "OutputPatch",
+ "POSITION",
+ "POSITIONT",
+ "PSIZE",
+ "PixelShader",
+ "PointStream",
+ "Process2DQuadTessFactorsAvg",
+ "Process2DQuadTessFactorsMax",
+ "Process2DQuadTessFactorsMin",
+ "ProcessIsolineTessFactors",
+ "ProcessQuadTessFactorsAvg",
+ "ProcessQuadTessFactorsMax",
+ "ProcessQuadTessFactorsMin",
+ "ProcessTriTessFactorsAvg",
+ "ProcessTriTessFactorsMax",
+ "ProcessTriTessFactorsMin",
+ "RWBuffer",
+ "RWByteAddressBuffer",
+ "RWStructuredBuffer",
+ "RWTexture1D",
+ "RWTexture2D",
+ "RWTexture2DArray",
+ "RWTexture3D",
+ "RasterizerState",
+ "RenderTargetView",
+ "SV_ClipDistance",
+ "SV_Coverage",
+ "SV_CullDistance",
+ "SV_Depth",
+ "SV_DepthGreaterEqual",
+ "SV_DepthLessEqual",
+ "SV_DispatchThreadID",
+ "SV_DomainLocation",
+ "SV_GSInstanceID",
+ "SV_GroupID",
+ "SV_GroupIndex",
+ "SV_GroupThreadID",
+ "SV_InnerCoverage",
+ "SV_InsideTessFactor",
+ "SV_InstanceID",
+ "SV_IsFrontFace",
+ "SV_OutputControlPointID",
+ "SV_Position",
+ "SV_PrimitiveID",
+ "SV_RenderTargetArrayIndex",
+ "SV_SampleIndex",
+ "SV_StencilRef",
+ "SV_Target",
+ "SV_TessFactor",
+ "SV_VertexArrayIndex",
+ "SV_VertexID",
+ "Sampler",
+ "Sampler1D",
+ "Sampler2D",
+ "Sampler3D",
+ "SamplerCUBE",
+ "StructuredBuffer",
+ "TANGENT",
+ "TESSFACTOR",
+ "TEXCOORD",
+ "Texcoord",
+ "Texture",
+ "Texture1D",
+ "Texture2D",
+ "Texture2DArray",
+ "Texture2DMS",
+ "Texture2DMSArray",
+ "Texture3D",
+ "TextureCube",
+ "TextureCubeArray",
+ "TriangleStream",
+ "VFACE",
+ "VPOS",
+ "VertexShader",
+ "abort",
+ "allow_uav_condition",
+ "asdouble",
+ "asfloat",
+ "asint",
+ "asm",
+ "asm_fragment",
+ "asuint",
+ "auto",
+ "bool",
+ "bool1",
+ "bool1x1",
+ "bool1x2",
+ "bool1x3",
+ "bool1x4",
+ "bool2",
+ "bool2x1",
+ "bool2x2",
+ "bool2x3",
+ "bool2x4",
+ "bool3",
+ "bool3x1",
+ "bool3x2",
+ "bool3x3",
+ "bool3x4",
+ "bool4",
+ "bool4x1",
+ "bool4x2",
+ "bool4x3",
+ "bool4x4",
+ "branch",
+ "break",
+ "call",
+ "case",
+ "catch",
+ "cbuffer",
+ "centroid",
+ "char",
+ "class",
+ "clip",
+ "column_major",
+ "compile_fragment",
+ "const",
+ "const_cast",
+ "continue",
+ "countbits",
+ "ddx",
+ "ddx_coarse",
+ "ddx_fine",
+ "ddy",
+ "ddy_coarse",
+ "ddy_fine",
+ "degrees",
+ "delete",
+ "discard",
+ "do",
+ "double",
+ "double1",
+ "double1x1",
+ "double1x2",
+ "double1x3",
+ "double1x4",
+ "double2",
+ "double2x1",
+ "double2x2",
+ "double2x3",
+ "double2x4",
+ "double3",
+ "double3x1",
+ "double3x2",
+ "double3x3",
+ "double3x4",
+ "double4",
+ "double4x1",
+ "double4x2",
+ "double4x3",
+ "double4x4",
+ "dst",
+ "dword",
+ "dword1",
+ "dword1x1",
+ "dword1x2",
+ "dword1x3",
+ "dword1x4",
+ "dword2",
+ "dword2x1",
+ "dword2x2",
+ "dword2x3",
+ "dword2x4",
+ "dword3",
+ "dword3x1",
+ "dword3x2",
+ "dword3x3",
+ "dword3x4",
+ "dword4",
+ "dword4x1",
+ "dword4x2",
+ "dword4x3",
+ "dword4x4",
+ "dynamic_cast",
+ "else",
+ "enum",
+ "errorf",
+ "explicit",
+ "export",
+ "extern",
+ "f16to32",
+ "f32tof16",
+ "false",
+ "fastopt",
+ "firstbithigh",
+ "firstbitlow",
+ "flatten",
+ "float",
+ "float1",
+ "float1x1",
+ "float1x2",
+ "float1x3",
+ "float1x4",
+ "float2",
+ "float2x1",
+ "float2x2",
+ "float2x3",
+ "float2x4",
+ "float3",
+ "float3x1",
+ "float3x2",
+ "float3x3",
+ "float3x4",
+ "float4",
+ "float4x1",
+ "float4x2",
+ "float4x3",
+ "float4x4",
+ "fmod",
+ "for",
+ "forcecase",
+ "frac",
+ "friend",
+ "fxgroup",
+ "goto",
+ "groupshared",
+ "half",
+ "half1",
+ "half1x1",
+ "half1x2",
+ "half1x3",
+ "half1x4",
+ "half2",
+ "half2x1",
+ "half2x2",
+ "half2x3",
+ "half2x4",
+ "half3",
+ "half3x1",
+ "half3x2",
+ "half3x3",
+ "half3x4",
+ "half4",
+ "half4x1",
+ "half4x2",
+ "half4x3",
+ "half4x4",
+ "if",
+ "in",
+ "inline",
+ "inout",
+ "int",
+ "int1",
+ "int1x1",
+ "int1x2",
+ "int1x3",
+ "int1x4",
+ "int2",
+ "int2x1",
+ "int2x2",
+ "int2x3",
+ "int2x4",
+ "int3",
+ "int3x1",
+ "int3x2",
+ "int3x3",
+ "int3x4",
+ "int4",
+ "int4x1",
+ "int4x2",
+ "int4x3",
+ "int4x4",
+ "interface",
+ "isfinite",
+ "isinf",
+ "isnan",
+ "lerp",
+ "lineadj",
+ "linear",
+ "lit",
+ "log10",
+ "long",
+ "loop",
+ "mad",
+ "matrix",
+ "min10float",
+ "min10float1",
+ "min10float1x1",
+ "min10float1x2",
+ "min10float1x3",
+ "min10float1x4",
+ "min10float2",
+ "min10float2x1",
+ "min10float2x2",
+ "min10float2x3",
+ "min10float2x4",
+ "min10float3",
+ "min10float3x1",
+ "min10float3x2",
+ "min10float3x3",
+ "min10float3x4",
+ "min10float4",
+ "min10float4x1",
+ "min10float4x2",
+ "min10float4x3",
+ "min10float4x4",
+ "min12int",
+ "min12int1",
+ "min12int1x1",
+ "min12int1x2",
+ "min12int1x3",
+ "min12int1x4",
+ "min12int2",
+ "min12int2x1",
+ "min12int2x2",
+ "min12int2x3",
+ "min12int2x4",
+ "min12int3",
+ "min12int3x1",
+ "min12int3x2",
+ "min12int3x3",
+ "min12int3x4",
+ "min12int4",
+ "min12int4x1",
+ "min12int4x2",
+ "min12int4x3",
+ "min12int4x4",
+ "min16float",
+ "min16float1",
+ "min16float1x1",
+ "min16float1x2",
+ "min16float1x3",
+ "min16float1x4",
+ "min16float2",
+ "min16float2x1",
+ "min16float2x2",
+ "min16float2x3",
+ "min16float2x4",
+ "min16float3",
+ "min16float3x1",
+ "min16float3x2",
+ "min16float3x3",
+ "min16float3x4",
+ "min16float4",
+ "min16float4x1",
+ "min16float4x2",
+ "min16float4x3",
+ "min16float4x4",
+ "min16int",
+ "min16int1",
+ "min16int1x1",
+ "min16int1x2",
+ "min16int1x3",
+ "min16int1x4",
+ "min16int2",
+ "min16int2x1",
+ "min16int2x2",
+ "min16int2x3",
+ "min16int2x4",
+ "min16int3",
+ "min16int3x1",
+ "min16int3x2",
+ "min16int3x3",
+ "min16int3x4",
+ "min16int4",
+ "min16int4x1",
+ "min16int4x2",
+ "min16int4x3",
+ "min16int4x4",
+ "min16uint",
+ "min16uint1",
+ "min16uint1x1",
+ "min16uint1x2",
+ "min16uint1x3",
+ "min16uint1x4",
+ "min16uint2",
+ "min16uint2x1",
+ "min16uint2x2",
+ "min16uint2x3",
+ "min16uint2x4",
+ "min16uint3",
+ "min16uint3x1",
+ "min16uint3x2",
+ "min16uint3x3",
+ "min16uint3x4",
+ "min16uint4",
+ "min16uint4x1",
+ "min16uint4x2",
+ "min16uint4x3",
+ "min16uint4x4",
+ "msad4",
+ "mul",
+ "mutable",
+ "namespace",
+ "new",
+ "nointerpolation",
+ "noise",
+ "noperspective",
+ "numthreads",
+ "operator",
+ "out",
+ "packoffset",
+ "pass",
+ "pixelfragment",
+ "pixelshader",
+ "point",
+ "precise",
+ "printf",
+ "private",
+ "protected",
+ "public",
+ "radians",
+ "rcp",
+ "refract",
+ "register",
+ "reinterpret_cast",
+ "return",
+ "row_major",
+ "rsqrt",
+ "sample",
+ "sampler",
+ "sampler1D",
+ "sampler2D",
+ "sampler3D",
+ "samplerCUBE",
+ "sampler_state",
+ "saturate",
+ "shared",
+ "short",
+ "signed",
+ "sincos",
+ "sizeof",
+ "snorm",
+ "stateblock",
+ "stateblock_state",
+ "static",
+ "static_cast",
+ "string",
+ "struct",
+ "switch",
+ "tbuffer",
+ "technique",
+ "technique10",
+ "technique11",
+ "template",
+ "tex1D",
+ "tex1Dbias",
+ "tex1Dgrad",
+ "tex1Dlod",
+ "tex1Dproj",
+ "tex2D",
+ "tex2Dbias",
+ "tex2Dgrad",
+ "tex2Dlod",
+ "tex2Dproj",
+ "tex3D",
+ "tex3Dbias",
+ "tex3Dgrad",
+ "tex3Dlod",
+ "tex3Dproj",
+ "texCUBE",
+ "texCUBEbias",
+ "texCUBEgrad",
+ "texCUBElod",
+ "texCUBEproj",
+ "texture",
+ "texture1D",
+ "texture1DArray",
+ "texture2D",
+ "texture2DArray",
+ "texture2DMS",
+ "texture2DMSArray",
+ "texture3D",
+ "textureCube",
+ "textureCubeArray",
+ "this",
+ "throw",
+ "transpose",
+ "triangle",
+ "triangleadj",
+ "true",
+ "try",
+ "typedef",
+ "typename",
+ "uint",
+ "uint1",
+ "uint1x1",
+ "uint1x2",
+ "uint1x3",
+ "uint1x4",
+ "uint2",
+ "uint2x1",
+ "uint2x2",
+ "uint2x3",
+ "uint2x4",
+ "uint3",
+ "uint3x1",
+ "uint3x2",
+ "uint3x3",
+ "uint3x4",
+ "uint4",
+ "uint4x1",
+ "uint4x2",
+ "uint4x3",
+ "uint4x4",
+ "uniform",
+ "union",
+ "unorm",
+ "unroll",
+ "unsigned",
+ "using",
+ "vector",
+ "vertexfragment",
+ "vertexshader",
+ "virtual",
+ "void",
+ "volatile",
+ "while"};
+
+// This list is used for a binary search and must be kept in sorted order.
+const char* kReservedKeywordsMSL[] = {"access",
+ "alignas",
+ "alignof",
+ "and",
+ "and_eq",
+ "array",
+ "array_ref",
+ "as_type",
+ "asm",
+ "atomic",
+ "atomic_bool",
+ "atomic_int",
+ "atomic_uint",
+ "auto",
+ "bitand",
+ "bitor",
+ "bool",
+ "bool2",
+ "bool3",
+ "bool4",
+ "break",
+ "buffer",
+ "case",
+ "catch",
+ "char",
+ "char16_t",
+ "char2",
+ "char3",
+ "char32_t",
+ "char4",
+ "class",
+ "compl",
+ "const",
+ "const_cast",
+ "const_reference",
+ "constant",
+ "constexpr",
+ "continue",
+ "decltype",
+ "default",
+ "delete",
+ "depth2d",
+ "depth2d_array",
+ "depth2d_ms",
+ "depth2d_ms_array",
+ "depthcube",
+ "depthcube_array",
+ "device",
+ "discard_fragment",
+ "do",
+ "double",
+ "dynamic_cast",
+ "else",
+ "enum",
+ "explicit",
+ "extern",
+ "false",
+ "final",
+ "float",
+ "float2",
+ "float2x2",
+ "float2x3",
+ "float2x4",
+ "float3",
+ "float3x2",
+ "float3x3",
+ "float3x4",
+ "float4",
+ "float4x2",
+ "float4x3",
+ "float4x4",
+ "for",
+ "fragment",
+ "friend",
+ "goto",
+ "half",
+ "half2",
+ "half2x2",
+ "half2x3",
+ "half2x4",
+ "half3",
+ "half3x2",
+ "half3x3",
+ "half3x4",
+ "half4",
+ "half4x2",
+ "half4x3",
+ "half4x4",
+ "if",
+ "imageblock",
+ "inline",
+ "int",
+ "int16_t",
+ "int2",
+ "int3",
+ "int32_t",
+ "int4",
+ "int64_t",
+ "int8_t",
+ "kernel",
+ "long",
+ "long2",
+ "long3",
+ "long4",
+ "main",
+ "metal",
+ "mutable",
+ "namespace",
+ "new",
+ "noexcept",
+ "not",
+ "not_eq",
+ "nullptr",
+ "operator",
+ "or",
+ "or_eq",
+ "override",
+ "packed_bool2",
+ "packed_bool3",
+ "packed_bool4",
+ "packed_char2",
+ "packed_char3",
+ "packed_char4",
+ "packed_float2",
+ "packed_float3",
+ "packed_float4",
+ "packed_half2",
+ "packed_half3",
+ "packed_half4",
+ "packed_int2",
+ "packed_int3",
+ "packed_int4",
+ "packed_short2",
+ "packed_short3",
+ "packed_short4",
+ "packed_uchar2",
+ "packed_uchar3",
+ "packed_uchar4",
+ "packed_uint2",
+ "packed_uint3",
+ "packed_uint4",
+ "packed_ushort2",
+ "packed_ushort3",
+ "packed_ushort4",
+ "patch_control_point",
+ "private",
+ "protected",
+ "ptrdiff_t",
+ "public",
+ "r16snorm",
+ "r16unorm",
+ "r8unorm",
+ "reference",
+ "register",
+ "reinterpret_cast",
+ "return",
+ "rg11b10f",
+ "rg16snorm",
+ "rg16unorm",
+ "rg8snorm",
+ "rg8unorm",
+ "rgb10a2",
+ "rgb9e5",
+ "rgba16snorm",
+ "rgba16unorm",
+ "rgba8snorm",
+ "rgba8unorm",
+ "sampler",
+ "short",
+ "short2",
+ "short3",
+ "short4",
+ "signed",
+ "size_t",
+ "sizeof",
+ "srgba8unorm",
+ "static",
+ "static_assert",
+ "static_cast",
+ "struct",
+ "switch",
+ "template",
+ "texture",
+ "texture1d",
+ "texture1d_array",
+ "texture2d",
+ "texture2d_array",
+ "texture2d_ms",
+ "texture2d_ms_array",
+ "texture3d",
+ "texture_buffer",
+ "texturecube",
+ "texturecube_array",
+ "this",
+ "thread",
+ "thread_local",
+ "threadgroup",
+ "threadgroup_imageblock",
+ "throw",
+ "true",
+ "try",
+ "typedef",
+ "typeid",
+ "typename",
+ "uchar",
+ "uchar2",
+ "uchar3",
+ "uchar4",
+ "uint",
+ "uint16_t",
+ "uint2",
+ "uint3",
+ "uint32_t",
+ "uint4",
+ "uint64_t",
+ "uint8_t",
+ "ulong2",
+ "ulong3",
+ "ulong4",
+ "uniform",
+ "union",
+ "unsigned",
+ "ushort",
+ "ushort2",
+ "ushort3",
+ "ushort4",
+ "using",
+ "vec",
+ "vertex",
+ "virtual",
+ "void",
+ "volatile",
+ "wchar_t",
+ "while",
+ "xor",
+ "xor_eq"};
+
+} // namespace
+
Renamer::Data::Data(Remappings&& r) : remappings(std::move(r)) {}
Renamer::Data::Data(const Data&) = default;
@@ -70,28 +877,50 @@
Data::Remappings remappings;
- switch (cfg_.method) {
- case Method::kMonotonic:
- ctx.ReplaceAll([&](Symbol sym_in) {
- auto sym_out = ctx.dst->Symbols().New();
- remappings.emplace(ctx.src->Symbols().NameFor(sym_in),
- ctx.dst->Symbols().NameFor(sym_out));
- return sym_out;
- });
+ ctx.ReplaceAll([&](Symbol sym_in) {
+ auto name_in = ctx.src->Symbols().NameFor(sym_in);
+ switch (cfg_.target) {
+ case Target::kAll:
+ // Always rename.
+ break;
+ case Target::kHlslKeywords:
+ if (!std::binary_search(
+ kReservedKeywordsHLSL,
+ kReservedKeywordsHLSL +
+ sizeof(kReservedKeywordsHLSL) / sizeof(const char*),
+ name_in)) {
+ // No match, just reuse the original name.
+ return ctx.dst->Symbols().New(name_in);
+ }
+ break;
+ case Target::kMslKeywords:
+ if (!std::binary_search(
+ kReservedKeywordsMSL,
+ kReservedKeywordsMSL +
+ sizeof(kReservedKeywordsMSL) / sizeof(const char*),
+ name_in)) {
+ // No match, just reuse the original name.
+ return ctx.dst->Symbols().New(name_in);
+ }
+ break;
+ }
- ctx.ReplaceAll(
- [&](ast::IdentifierExpression* ident) -> ast::IdentifierExpression* {
- if (preserve.count(ident)) {
- auto sym_in = ident->symbol();
- auto str = in->Symbols().NameFor(sym_in);
- auto sym_out = out.Symbols().Register(str);
- return ctx.dst->create<ast::IdentifierExpression>(
- ctx.Clone(ident->source()), sym_out);
- }
- return nullptr; // Clone ident. Uses the symbol remapping above.
- });
- break;
- }
+ auto sym_out = ctx.dst->Symbols().New();
+ remappings.emplace(name_in, ctx.dst->Symbols().NameFor(sym_out));
+ return sym_out;
+ });
+
+ ctx.ReplaceAll(
+ [&](ast::IdentifierExpression* ident) -> ast::IdentifierExpression* {
+ if (preserve.count(ident)) {
+ auto sym_in = ident->symbol();
+ auto str = in->Symbols().NameFor(sym_in);
+ auto sym_out = out.Symbols().Register(str);
+ return ctx.dst->create<ast::IdentifierExpression>(
+ ctx.Clone(ident->source()), sym_out);
+ }
+ return nullptr; // Clone ident. Uses the symbol remapping above.
+ });
ctx.Clone();
return Output(Program(std::move(out)),
diff --git a/src/transform/renamer.h b/src/transform/renamer.h
index 4670482..55cf5dc 100644
--- a/src/transform/renamer.h
+++ b/src/transform/renamer.h
@@ -46,17 +46,20 @@
Remappings const remappings;
};
- /// Method is an enumerator of renaming methods that can be used
- enum class Method {
- /// Every symbol will be replaced with an identifier containing a
- /// monotonically incrementing integer.
- kMonotonic,
+ /// Target is an enumerator of rename targets that can be used
+ enum class Target {
+ /// Rename every symbol.
+ kAll,
+ /// Only rename symbols that are reserved keywords in HLSL.
+ kHlslKeywords,
+ /// Only rename symbols that are reserved keywords in MSL.
+ kMslKeywords,
};
/// Configuration options for the transform
struct Config {
- /// The method used for renaming symbols
- Method method = Method::kMonotonic;
+ /// The targets to rename
+ Target target = Target::kAll;
};
/// Constructor using a default configuration
diff --git a/src/transform/renamer_test.cc b/src/transform/renamer_test.cc
index 02f6378..e840e87 100644
--- a/src/transform/renamer_test.cc
+++ b/src/transform/renamer_test.cc
@@ -14,6 +14,8 @@
#include "src/transform/renamer.h"
+#include <memory>
+
#include "gmock/gmock.h"
#include "src/transform/test_helper.h"
@@ -185,6 +187,908 @@
EXPECT_THAT(data->remappings, ContainerEq(expected_remappings));
}
+using RenamerTestHlsl = TransformTestWithParam<std::string>;
+using RenamerTestMsl = TransformTestWithParam<std::string>;
+
+TEST_P(RenamerTestHlsl, Keywords) {
+ auto keyword = GetParam();
+
+ auto src = R"(
+[[stage(fragment)]]
+fn frag_main() {
+ var )" + keyword +
+ R"( : i32;
+}
+)";
+
+ auto* expect = R"(
+[[stage(fragment)]]
+fn frag_main() {
+ var tint_symbol : i32;
+}
+)";
+
+ Renamer::Config config{Renamer::Target::kHlslKeywords};
+ auto got = Run(src, std::make_unique<Renamer>(config));
+
+ EXPECT_EQ(expect, str(got));
+}
+
+TEST_P(RenamerTestMsl, Keywords) {
+ auto keyword = GetParam();
+
+ auto src = R"(
+[[stage(fragment)]]
+fn frag_main() {
+ var )" + keyword +
+ R"( : i32;
+}
+)";
+
+ auto* expect = R"(
+[[stage(fragment)]]
+fn frag_main() {
+ var tint_symbol : i32;
+}
+)";
+
+ Renamer::Config config{Renamer::Target::kMslKeywords};
+ auto got = Run(src, std::make_unique<Renamer>(config));
+
+ EXPECT_EQ(expect, str(got));
+}
+
+INSTANTIATE_TEST_SUITE_P(RenamerTestHlsl,
+ RenamerTestHlsl,
+ testing::Values("AddressU",
+ "AddressV",
+ "AddressW",
+ "AllMemoryBarrier",
+ "AllMemoryBarrierWithGroupSync",
+ "AppendStructuredBuffer",
+ "BINORMAL",
+ "BLENDINDICES",
+ "BLENDWEIGHT",
+ "BlendState",
+ "BorderColor",
+ "Buffer",
+ "ByteAddressBuffer",
+ "COLOR",
+ "CheckAccessFullyMapped",
+ "ComparisonFunc",
+ "CompileShader",
+ "ComputeShader",
+ "ConsumeStructuredBuffer",
+ "D3DCOLORtoUBYTE4",
+ "DEPTH",
+ "DepthStencilState",
+ "DepthStencilView",
+ "DeviceMemoryBarrier",
+ "DeviceMemroyBarrierWithGroupSync",
+ "DomainShader",
+ "EvaluateAttributeAtCentroid",
+ "EvaluateAttributeAtSample",
+ "EvaluateAttributeSnapped",
+ "FOG",
+ "Filter",
+ "GeometryShader",
+ "GetRenderTargetSampleCount",
+ "GetRenderTargetSamplePosition",
+ "GroupMemoryBarrier",
+ "GroupMemroyBarrierWithGroupSync",
+ "Hullshader",
+ "InputPatch",
+ "InterlockedAdd",
+ "InterlockedAnd",
+ "InterlockedCompareExchange",
+ "InterlockedCompareStore",
+ "InterlockedExchange",
+ "InterlockedMax",
+ "InterlockedMin",
+ "InterlockedOr",
+ "InterlockedXor",
+ "LineStream",
+ "MaxAnisotropy",
+ "MaxLOD",
+ "MinLOD",
+ "MipLODBias",
+ "NORMAL",
+ "NULL",
+ "Normal",
+ "OutputPatch",
+ "POSITION",
+ "POSITIONT",
+ "PSIZE",
+ "PixelShader",
+ "PointStream",
+ "Process2DQuadTessFactorsAvg",
+ "Process2DQuadTessFactorsMax",
+ "Process2DQuadTessFactorsMin",
+ "ProcessIsolineTessFactors",
+ "ProcessQuadTessFactorsAvg",
+ "ProcessQuadTessFactorsMax",
+ "ProcessQuadTessFactorsMin",
+ "ProcessTriTessFactorsAvg",
+ "ProcessTriTessFactorsMax",
+ "ProcessTriTessFactorsMin",
+ "RWBuffer",
+ "RWByteAddressBuffer",
+ "RWStructuredBuffer",
+ "RWTexture1D",
+ "RWTexture2D",
+ "RWTexture2DArray",
+ "RWTexture3D",
+ "RasterizerState",
+ "RenderTargetView",
+ "SV_ClipDistance",
+ "SV_Coverage",
+ "SV_CullDistance",
+ "SV_Depth",
+ "SV_DepthGreaterEqual",
+ "SV_DepthLessEqual",
+ "SV_DispatchThreadID",
+ "SV_DomainLocation",
+ "SV_GSInstanceID",
+ "SV_GroupID",
+ "SV_GroupIndex",
+ "SV_GroupThreadID",
+ "SV_InnerCoverage",
+ "SV_InsideTessFactor",
+ "SV_InstanceID",
+ "SV_IsFrontFace",
+ "SV_OutputControlPointID",
+ "SV_Position",
+ "SV_PrimitiveID",
+ "SV_RenderTargetArrayIndex",
+ "SV_SampleIndex",
+ "SV_StencilRef",
+ "SV_Target",
+ "SV_TessFactor",
+ "SV_VertexArrayIndex",
+ "SV_VertexID",
+ "Sampler",
+ "Sampler1D",
+ "Sampler2D",
+ "Sampler3D",
+ "SamplerCUBE",
+ "StructuredBuffer",
+ "TANGENT",
+ "TESSFACTOR",
+ "TEXCOORD",
+ "Texcoord",
+ "Texture",
+ "Texture1D",
+ "Texture2D",
+ "Texture2DArray",
+ "Texture2DMS",
+ "Texture2DMSArray",
+ "Texture3D",
+ "TextureCube",
+ "TextureCubeArray",
+ "TriangleStream",
+ "VFACE",
+ "VPOS",
+ "VertexShader",
+ "abort",
+ // "abs", // WGSL intrinsic
+ // "acos", // WGSL intrinsic
+ // "all", // WGSL intrinsic
+ "allow_uav_condition",
+ // "any", // WGSL intrinsic
+ "asdouble",
+ "asfloat",
+ // "asin", // WGSL intrinsic
+ "asint",
+ // "asm", // WGSL keyword
+ "asm_fragment",
+ "asuint",
+ // "atan", // WGSL intrinsic
+ // "atan2", // WGSL intrinsic
+ "auto",
+ // "bool", // WGSL keyword
+ "bool1",
+ "bool1x1",
+ "bool1x2",
+ "bool1x3",
+ "bool1x4",
+ "bool2",
+ "bool2x1",
+ "bool2x2",
+ "bool2x3",
+ "bool2x4",
+ "bool3",
+ "bool3x1",
+ "bool3x2",
+ "bool3x3",
+ "bool3x4",
+ "bool4",
+ "bool4x1",
+ "bool4x2",
+ "bool4x3",
+ "bool4x4",
+ "branch",
+ // "break", // WGSL keyword
+ // "call", // WGSL intrinsic
+ // "case", // WGSL keyword
+ "catch",
+ "cbuffer",
+ // "ceil", // WGSL intrinsic
+ "centroid",
+ "char",
+ // "clamp", // WGSL intrinsic
+ "class",
+ "clip",
+ "column_major",
+ "compile_fragment",
+ // "const", // WGSL keyword
+ "const_cast",
+ // "continue", // WGSL keyword
+ // "cos", // WGSL intrinsic
+ // "cosh", // WGSL intrinsic
+ "countbits",
+ // "cross", // WGSL intrinsic
+ "ddx",
+ "ddx_coarse",
+ "ddx_fine",
+ "ddy",
+ "ddy_coarse",
+ "ddy_fine",
+ "degrees",
+ "delete",
+ // "determinant", // WGSL intrinsic
+ // "discard", // WGSL keyword
+ // "distance", // WGSL intrinsic
+ // "do", // WGSL keyword
+ // "dot", // WGSL intrinsic
+ "double",
+ "double1",
+ "double1x1",
+ "double1x2",
+ "double1x3",
+ "double1x4",
+ "double2",
+ "double2x1",
+ "double2x2",
+ "double2x3",
+ "double2x4",
+ "double3",
+ "double3x1",
+ "double3x2",
+ "double3x3",
+ "double3x4",
+ "double4",
+ "double4x1",
+ "double4x2",
+ "double4x3",
+ "double4x4",
+ "dst",
+ "dword",
+ "dword1",
+ "dword1x1",
+ "dword1x2",
+ "dword1x3",
+ "dword1x4",
+ "dword2",
+ "dword2x1",
+ "dword2x2",
+ "dword2x3",
+ "dword2x4",
+ "dword3",
+ "dword3x1",
+ "dword3x2",
+ "dword3x3",
+ "dword3x4",
+ "dword4",
+ "dword4x1",
+ "dword4x2",
+ "dword4x3",
+ "dword4x4",
+ "dynamic_cast",
+ // "else", // WGSL keyword
+ // "enum", // WGSL keyword
+ "errorf",
+ // "exp", // WGSL intrinsic
+ // "exp2", // WGSL intrinsic
+ "explicit",
+ "export",
+ "extern",
+ "f16to32",
+ "f32tof16",
+ // "faceforward", // WGSL intrinsic
+ // "false", // WGSL keyword
+ "fastopt",
+ "firstbithigh",
+ "firstbitlow",
+ "flatten",
+ "float",
+ "float1",
+ "float1x1",
+ "float1x2",
+ "float1x3",
+ "float1x4",
+ "float2",
+ "float2x1",
+ "float2x2",
+ "float2x3",
+ "float2x4",
+ "float3",
+ "float3x1",
+ "float3x2",
+ "float3x3",
+ "float3x4",
+ "float4",
+ "float4x1",
+ "float4x2",
+ "float4x3",
+ "float4x4",
+ // "floor", // WGSL intrinsic
+ // "fma", // WGSL intrinsic
+ "fmod",
+ // "for", // WGSL keyword
+ "forcecase",
+ "frac",
+ // "frexp", // WGSL intrinsic
+ "friend",
+ // "fwidth", // WGSL intrinsic
+ "fxgroup",
+ "goto",
+ "groupshared",
+ "half",
+ "half1",
+ "half1x1",
+ "half1x2",
+ "half1x3",
+ "half1x4",
+ "half2",
+ "half2x1",
+ "half2x2",
+ "half2x3",
+ "half2x4",
+ "half3",
+ "half3x1",
+ "half3x2",
+ "half3x3",
+ "half3x4",
+ "half4",
+ "half4x1",
+ "half4x2",
+ "half4x3",
+ "half4x4",
+ // "if", // WGSL keyword
+ // "in", // WGSL keyword
+ "inline",
+ "inout",
+ "int",
+ "int1",
+ "int1x1",
+ "int1x2",
+ "int1x3",
+ "int1x4",
+ "int2",
+ "int2x1",
+ "int2x2",
+ "int2x3",
+ "int2x4",
+ "int3",
+ "int3x1",
+ "int3x2",
+ "int3x3",
+ "int3x4",
+ "int4",
+ "int4x1",
+ "int4x2",
+ "int4x3",
+ "int4x4",
+ "interface",
+ "isfinite",
+ "isinf",
+ "isnan",
+ // "ldexp", // WGSL intrinsic
+ // "length", // WGSL intrinsic
+ "lerp",
+ "lineadj",
+ "linear",
+ "lit",
+ // "log", // WGSL intrinsic
+ "log10",
+ // "log2", // WGSL intrinsic
+ "long",
+ // "loop", // WGSL keyword
+ "mad",
+ "matrix",
+ // "max", // WGSL intrinsic
+ // "min", // WGSL intrinsic
+ "min10float",
+ "min10float1",
+ "min10float1x1",
+ "min10float1x2",
+ "min10float1x3",
+ "min10float1x4",
+ "min10float2",
+ "min10float2x1",
+ "min10float2x2",
+ "min10float2x3",
+ "min10float2x4",
+ "min10float3",
+ "min10float3x1",
+ "min10float3x2",
+ "min10float3x3",
+ "min10float3x4",
+ "min10float4",
+ "min10float4x1",
+ "min10float4x2",
+ "min10float4x3",
+ "min10float4x4",
+ "min12int",
+ "min12int1",
+ "min12int1x1",
+ "min12int1x2",
+ "min12int1x3",
+ "min12int1x4",
+ "min12int2",
+ "min12int2x1",
+ "min12int2x2",
+ "min12int2x3",
+ "min12int2x4",
+ "min12int3",
+ "min12int3x1",
+ "min12int3x2",
+ "min12int3x3",
+ "min12int3x4",
+ "min12int4",
+ "min12int4x1",
+ "min12int4x2",
+ "min12int4x3",
+ "min12int4x4",
+ "min16float",
+ "min16float1",
+ "min16float1x1",
+ "min16float1x2",
+ "min16float1x3",
+ "min16float1x4",
+ "min16float2",
+ "min16float2x1",
+ "min16float2x2",
+ "min16float2x3",
+ "min16float2x4",
+ "min16float3",
+ "min16float3x1",
+ "min16float3x2",
+ "min16float3x3",
+ "min16float3x4",
+ "min16float4",
+ "min16float4x1",
+ "min16float4x2",
+ "min16float4x3",
+ "min16float4x4",
+ "min16int",
+ "min16int1",
+ "min16int1x1",
+ "min16int1x2",
+ "min16int1x3",
+ "min16int1x4",
+ "min16int2",
+ "min16int2x1",
+ "min16int2x2",
+ "min16int2x3",
+ "min16int2x4",
+ "min16int3",
+ "min16int3x1",
+ "min16int3x2",
+ "min16int3x3",
+ "min16int3x4",
+ "min16int4",
+ "min16int4x1",
+ "min16int4x2",
+ "min16int4x3",
+ "min16int4x4",
+ "min16uint",
+ "min16uint1",
+ "min16uint1x1",
+ "min16uint1x2",
+ "min16uint1x3",
+ "min16uint1x4",
+ "min16uint2",
+ "min16uint2x1",
+ "min16uint2x2",
+ "min16uint2x3",
+ "min16uint2x4",
+ "min16uint3",
+ "min16uint3x1",
+ "min16uint3x2",
+ "min16uint3x3",
+ "min16uint3x4",
+ "min16uint4",
+ "min16uint4x1",
+ "min16uint4x2",
+ "min16uint4x3",
+ "min16uint4x4",
+ // "modf", // WGSL intrinsic
+ "msad4",
+ "mul",
+ "mutable",
+ "namespace",
+ "new",
+ "nointerpolation",
+ "noise",
+ "noperspective",
+ // "normalize", // WGSL intrinsic
+ "numthreads",
+ "operator",
+ // "out", // WGSL keyword
+ "packoffset",
+ "pass",
+ "pixelfragment",
+ "pixelshader",
+ "point",
+ // "pow", // WGSL intrinsic
+ "precise",
+ "printf",
+ // "private", // WGSL keyword
+ "protected",
+ "public",
+ "radians",
+ "rcp",
+ // "reflect", // WGSL intrinsic
+ "refract",
+ "register",
+ "reinterpret_cast",
+ // "return", // WGSL keyword
+ // "reversebits", // WGSL intrinsic
+ // "round", // WGSL intrinsic
+ "row_major",
+ "rsqrt",
+ "sample",
+ "sampler1D",
+ "sampler2D",
+ "sampler3D",
+ "samplerCUBE",
+ "sampler_state",
+ "saturate",
+ "shared",
+ "short",
+ // "sign", // WGSL intrinsic
+ "signed",
+ // "sin", // WGSL intrinsic
+ "sincos",
+ // "sinh", // WGSL intrinsic
+ "sizeof",
+ // "smoothstep", // WGSL intrinsic
+ "snorm",
+ // "sqrt", // WGSL intrinsic
+ "stateblock",
+ "stateblock_state",
+ "static",
+ "static_cast",
+ // "step", // WGSL intrinsic
+ "string",
+ // "struct", // WGSL keyword
+ // "switch", // WGSL keyword
+ // "tan", // WGSL intrinsic
+ // "tanh", // WGSL intrinsic
+ "tbuffer",
+ "technique",
+ "technique10",
+ "technique11",
+ "template",
+ "tex1D",
+ "tex1Dbias",
+ "tex1Dgrad",
+ "tex1Dlod",
+ "tex1Dproj",
+ "tex2D",
+ "tex2Dbias",
+ "tex2Dgrad",
+ "tex2Dlod",
+ "tex2Dproj",
+ "tex3D",
+ "tex3Dbias",
+ "tex3Dgrad",
+ "tex3Dlod",
+ "tex3Dproj",
+ "texCUBE",
+ "texCUBEbias",
+ "texCUBEgrad",
+ "texCUBElod",
+ "texCUBEproj",
+ "texture",
+ "texture1D",
+ "texture1DArray",
+ "texture2D",
+ "texture2DArray",
+ "texture2DMS",
+ "texture2DMSArray",
+ "texture3D",
+ "textureCube",
+ "textureCubeArray",
+ "this",
+ "throw",
+ "transpose",
+ "triangle",
+ "triangleadj",
+ // "true", // WGSL keyword
+ // "trunc", // WGSL intrinsic
+ "try",
+ // "typedef", // WGSL keyword
+ "typename",
+ "uint",
+ "uint1",
+ "uint1x1",
+ "uint1x2",
+ "uint1x3",
+ "uint1x4",
+ "uint2",
+ "uint2x1",
+ "uint2x2",
+ "uint2x3",
+ "uint2x4",
+ "uint3",
+ "uint3x1",
+ "uint3x2",
+ "uint3x3",
+ "uint3x4",
+ "uint4",
+ "uint4x1",
+ "uint4x2",
+ "uint4x3",
+ "uint4x4",
+ // "uniform", // WGSL keyword
+ "union",
+ "unorm",
+ "unroll",
+ "unsigned",
+ "using",
+ "vector",
+ "vertexfragment",
+ "vertexshader",
+ "virtual",
+ // "void", // WGSL keyword
+ "volatile",
+ "while"));
+
+INSTANTIATE_TEST_SUITE_P(RenamerTestMsl,
+ RenamerTestMsl,
+ testing::Values(
+ // c++14 spec
+ "alignas",
+ "alignof",
+ "and",
+ "and_eq",
+ // "asm", // Also reserved in WGSL
+ "auto",
+ "bitand",
+ "bitor",
+ // "bool", // Also used in WGSL
+ // "break", // Also used in WGSL
+ // "case", // Also used in WGSL
+ "catch",
+ "char",
+ "char16_t",
+ "char32_t",
+ "class",
+ "compl",
+ // "const", // Also used in WGSL
+ "const_cast",
+ "constexpr",
+ // "continue", // Also used in WGSL
+ "decltype",
+ // "default", // Also used in WGSL
+ "delete",
+ // "do", // Also used in WGSL
+ "double",
+ "dynamic_cast",
+ // "else", // Also used in WGSL
+ // "enum", // Also used in WGSL
+ "explicit",
+ "extern",
+ // "false", // Also used in WGSL
+ "final",
+ "float",
+ // "for", // Also used in WGSL
+ "friend",
+ "goto",
+ // "if", // Also used in WGSL
+ "inline",
+ "int",
+ "long",
+ "mutable",
+ "namespace",
+ "new",
+ "noexcept",
+ "not",
+ "not_eq",
+ "nullptr",
+ "operator",
+ "or",
+ "or_eq",
+ "override",
+ // "private", // Also used in WGSL
+ "protected",
+ "public",
+ "register",
+ "reinterpret_cast",
+ // "return", // Also used in WGSL
+ "short",
+ "signed",
+ "sizeof",
+ "static",
+ "static_assert",
+ "static_cast",
+ // "struct", // Also used in WGSL
+ // "switch", // Also used in WGSL
+ "template",
+ "this",
+ "thread_local",
+ "throw",
+ // "true", // Also used in WGSL
+ "try",
+ // "typedef", // Also used in WGSL
+ "typeid",
+ "typename",
+ "union",
+ "unsigned",
+ "using",
+ "virtual",
+ // "void", // Also used in WGSL
+ "volatile",
+ "wchar_t",
+ "while",
+ "xor",
+ "xor_eq",
+
+ // Metal Spec
+ "access",
+ // "array", // Also used in WGSL
+ "array_ref",
+ "as_type",
+ "atomic",
+ "atomic_bool",
+ "atomic_int",
+ "atomic_uint",
+ "bool2",
+ "bool3",
+ "bool4",
+ "buffer",
+ "char2",
+ "char3",
+ "char4",
+ "const_reference",
+ "constant",
+ "depth2d",
+ "depth2d_array",
+ "depth2d_ms",
+ "depth2d_ms_array",
+ "depthcube",
+ "depthcube_array",
+ "device",
+ "discard_fragment",
+ "float2",
+ "float2x2",
+ "float2x3",
+ "float2x4",
+ "float3",
+ "float3x2",
+ "float3x3",
+ "float3x4",
+ "float4",
+ "float4x2",
+ "float4x3",
+ "float4x4",
+ "fragment",
+ "half",
+ "half2",
+ "half2x2",
+ "half2x3",
+ "half2x4",
+ "half3",
+ "half3x2",
+ "half3x3",
+ "half3x4",
+ "half4",
+ "half4x2",
+ "half4x3",
+ "half4x4",
+ "imageblock",
+ "int16_t",
+ "int2",
+ "int3",
+ "int32_t",
+ "int4",
+ "int64_t",
+ "int8_t",
+ "kernel",
+ "long2",
+ "long3",
+ "long4",
+ "main", // No functions called main
+ "metal", // The namespace
+ "packed_bool2",
+ "packed_bool3",
+ "packed_bool4",
+ "packed_char2",
+ "packed_char3",
+ "packed_char4",
+ "packed_float2",
+ "packed_float3",
+ "packed_float4",
+ "packed_half2",
+ "packed_half3",
+ "packed_half4",
+ "packed_int2",
+ "packed_int3",
+ "packed_int4",
+ "packed_short2",
+ "packed_short3",
+ "packed_short4",
+ "packed_uchar2",
+ "packed_uchar3",
+ "packed_uchar4",
+ "packed_uint2",
+ "packed_uint3",
+ "packed_uint4",
+ "packed_ushort2",
+ "packed_ushort3",
+ "packed_ushort4",
+ "patch_control_point",
+ "ptrdiff_t",
+ "r16snorm",
+ "r16unorm",
+ // "r8unorm", // Also used in WGSL
+ "reference",
+ "rg11b10f",
+ "rg16snorm",
+ "rg16unorm",
+ // "rg8snorm", // Also used in WGSL
+ // "rg8unorm", // Also used in WGSL
+ "rgb10a2",
+ "rgb9e5",
+ "rgba16snorm",
+ "rgba16unorm",
+ // "rgba8snorm", // Also used in WGSL
+ // "rgba8unorm", // Also used in WGSL
+ // "sampler", // Also used in WGSL
+ "short2",
+ "short3",
+ "short4",
+ "size_t",
+ "srgba8unorm",
+ "texture",
+ "texture1d",
+ "texture1d_array",
+ "texture2d",
+ "texture2d_array",
+ "texture2d_ms",
+ "texture2d_ms_array",
+ "texture3d",
+ "texture_buffer",
+ "texturecube",
+ "texturecube_array",
+ "thread",
+ "threadgroup",
+ "threadgroup_imageblock",
+ "uchar",
+ "uchar2",
+ "uchar3",
+ "uchar4",
+ "uint",
+ "uint16_t",
+ "uint2",
+ "uint3",
+ "uint32_t",
+ "uint4",
+ "uint64_t",
+ "uint8_t",
+ "ulong2",
+ "ulong3",
+ "ulong4",
+ // "uniform", // Also used in WGSL
+ "ushort",
+ "ushort2",
+ "ushort3",
+ "ushort4",
+ "vec",
+ "vertex"));
+
} // namespace
} // namespace transform
} // namespace tint
diff --git a/src/transform/transform.cc b/src/transform/transform.cc
index 04bac75..a9c3816 100644
--- a/src/transform/transform.cc
+++ b/src/transform/transform.cc
@@ -57,18 +57,6 @@
body, decos, ret_decos);
}
-void Transform::RenameReservedKeywords(CloneContext* ctx,
- const char* names[],
- size_t count) {
- ctx->ReplaceAll([=](Symbol in) {
- auto name_in = ctx->src->Symbols().NameFor(in);
- if (std::binary_search(names, names + count, name_in)) {
- return ctx->dst->Symbols().New("tint_" + name_in);
- }
- return ctx->dst->Symbols().New(name_in);
- });
-}
-
ast::DecorationList Transform::RemoveDecorations(
CloneContext* ctx,
const ast::DecorationList& in,
diff --git a/src/transform/transform.h b/src/transform/transform.h
index 2c96b27..21e9f10 100644
--- a/src/transform/transform.h
+++ b/src/transform/transform.h
@@ -165,25 +165,6 @@
ast::Function* in,
ast::StatementList statements);
- /// Registers a symbol renamer on `ctx` for any symbol that is found in the
- /// list of reserved identifiers.
- /// @param ctx the clone context
- /// @param names the lexicographically sorted list of reserved identifiers
- /// @param count the number of identifiers in the array `names`
- static void RenameReservedKeywords(CloneContext* ctx,
- const char* names[],
- size_t count);
-
- /// Registers a symbol renamer on `ctx` for any symbol that is found in the
- /// list of reserved identifiers.
- /// @param ctx the clone context
- /// @param names the lexicographically sorted list of reserved identifiers
- template <size_t N>
- static void RenameReservedKeywords(CloneContext* ctx,
- const char* (&names)[N]) {
- RenameReservedKeywords(ctx, names, N);
- }
-
/// Clones the decoration list `in`, removing decorations based on a filter.
/// @param ctx the clone context
/// @param in the decorations to clone
diff --git a/src/writer/hlsl/generator_impl_alias_type_test.cc b/src/writer/hlsl/generator_impl_alias_type_test.cc
index cc17869..3837cde 100644
--- a/src/writer/hlsl/generator_impl_alias_type_test.cc
+++ b/src/writer/hlsl/generator_impl_alias_type_test.cc
@@ -40,7 +40,7 @@
GeneratorImpl& gen = SanitizeAndBuild();
ASSERT_TRUE(gen.Generate(out)) << gen.error();
- EXPECT_THAT(result(), HasSubstr(R"(typedef float tint_float;
+ EXPECT_THAT(result(), HasSubstr(R"(typedef float tint_symbol;
)"));
}
diff --git a/src/writer/hlsl/generator_impl_function_test.cc b/src/writer/hlsl/generator_impl_function_test.cc
index 37af244..0bbd402 100644
--- a/src/writer/hlsl/generator_impl_function_test.cc
+++ b/src/writer/hlsl/generator_impl_function_test.cc
@@ -60,7 +60,7 @@
gen.increment_indent();
ASSERT_TRUE(gen.Generate(out)) << gen.error();
- EXPECT_THAT(result(), HasSubstr(R"( void tint_GeometryShader() {
+ EXPECT_THAT(result(), HasSubstr(R"( void tint_symbol() {
return;
})"));
}
@@ -877,7 +877,7 @@
GeneratorImpl& gen = SanitizeAndBuild();
ASSERT_TRUE(gen.Generate(out)) << gen.error();
- EXPECT_EQ(result(), R"(void tint_GeometryShader() {
+ EXPECT_EQ(result(), R"(void tint_symbol() {
return;
}
diff --git a/src/writer/hlsl/generator_impl_intrinsic_texture_test.cc b/src/writer/hlsl/generator_impl_intrinsic_texture_test.cc
index 0633929..88d9eed 100644
--- a/src/writer/hlsl/generator_impl_intrinsic_texture_test.cc
+++ b/src/writer/hlsl/generator_impl_intrinsic_texture_test.cc
@@ -42,7 +42,7 @@
case ValidTextureOverload::kDimensionsStorageWO1d:
return {
R"(int tint_tmp;
- tint_texture.GetDimensions(tint_tmp);
+ tint_symbol.GetDimensions(tint_tmp);
)",
"tint_tmp",
};
@@ -52,14 +52,14 @@
case ValidTextureOverload::kDimensionsStorageWO2d:
return {
R"(int2 tint_tmp;
- tint_texture.GetDimensions(tint_tmp.x, tint_tmp.y);
+ tint_symbol.GetDimensions(tint_tmp.x, tint_tmp.y);
)",
"tint_tmp",
};
case ValidTextureOverload::kDimensionsMultisampled2d:
return {
R"(int3 tint_tmp;
- tint_texture.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
+ tint_symbol.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
)",
"tint_tmp.xy",
};
@@ -70,14 +70,14 @@
case ValidTextureOverload::kDimensionsStorageWO2dArray:
return {
R"(int3 tint_tmp;
- tint_texture.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
+ tint_symbol.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
)",
"tint_tmp.xy",
};
case ValidTextureOverload::kDimensionsMultisampled2dArray:
return {
R"(int4 tint_tmp;
- tint_texture.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
+ tint_symbol.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
)",
"tint_tmp.xy",
};
@@ -86,7 +86,7 @@
case ValidTextureOverload::kDimensionsStorageWO3d:
return {
R"(int3 tint_tmp;
- tint_texture.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
+ tint_symbol.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
)",
"tint_tmp",
};
@@ -94,7 +94,7 @@
case ValidTextureOverload::kDimensionsDepthCube:
return {
R"(int2 tint_tmp;
- tint_texture.GetDimensions(tint_tmp.x, tint_tmp.y);
+ tint_symbol.GetDimensions(tint_tmp.x, tint_tmp.y);
)",
"tint_tmp.xyy",
};
@@ -102,7 +102,7 @@
case ValidTextureOverload::kDimensionsDepthCubeArray:
return {
R"(int3 tint_tmp;
- tint_texture.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
+ tint_symbol.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
)",
"tint_tmp.xyy",
};
@@ -110,7 +110,7 @@
case ValidTextureOverload::kDimensionsDepth2dLevel:
return {
R"(int3 tint_tmp;
- tint_texture.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z);
+ tint_symbol.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z);
)",
"tint_tmp.xy",
};
@@ -118,14 +118,14 @@
case ValidTextureOverload::kDimensionsDepth2dArrayLevel:
return {
R"(int4 tint_tmp;
- tint_texture.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
+ tint_symbol.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
)",
"tint_tmp.xy",
};
case ValidTextureOverload::kDimensions3dLevel:
return {
R"(int4 tint_tmp;
- tint_texture.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
+ tint_symbol.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
)",
"tint_tmp.xyz",
};
@@ -133,7 +133,7 @@
case ValidTextureOverload::kDimensionsDepthCubeLevel:
return {
R"(int3 tint_tmp;
- tint_texture.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z);
+ tint_symbol.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z);
)",
"tint_tmp.xyy",
};
@@ -141,7 +141,7 @@
case ValidTextureOverload::kDimensionsDepthCubeArrayLevel:
return {
R"(int4 tint_tmp;
- tint_texture.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
+ tint_symbol.GetDimensions(1, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
)",
"tint_tmp.xyy",
};
@@ -152,14 +152,14 @@
case ValidTextureOverload::kNumLayersStorageWO2dArray:
return {
R"(int3 tint_tmp;
- tint_texture.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
+ tint_symbol.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
)",
"tint_tmp.z",
};
case ValidTextureOverload::kNumLayersMultisampled2dArray:
return {
R"(int4 tint_tmp;
- tint_texture.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
+ tint_symbol.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
)",
"tint_tmp.z",
};
@@ -170,7 +170,7 @@
case ValidTextureOverload::kNumLevelsDepthCube:
return {
R"(int3 tint_tmp;
- tint_texture.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z);
+ tint_symbol.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z);
)",
"tint_tmp.z",
};
@@ -181,168 +181,168 @@
case ValidTextureOverload::kNumLevelsDepthCubeArray:
return {
R"(int4 tint_tmp;
- tint_texture.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
+ tint_symbol.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
)",
"tint_tmp.w",
};
case ValidTextureOverload::kNumSamplesMultisampled2d:
return {
R"(int3 tint_tmp;
- tint_texture.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
+ tint_symbol.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
)",
"tint_tmp.z",
};
case ValidTextureOverload::kNumSamplesMultisampled2dArray:
return {
R"(int4 tint_tmp;
- tint_texture.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
+ tint_symbol.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
)",
"tint_tmp.w",
};
case ValidTextureOverload::kSample1dF32:
- return R"(tint_texture.Sample(tint_sampler, 1.0f))";
+ return R"(tint_symbol.Sample(tint_symbol_1, 1.0f))";
case ValidTextureOverload::kSample2dF32:
- return R"(tint_texture.Sample(tint_sampler, float2(1.0f, 2.0f)))";
+ return R"(tint_symbol.Sample(tint_symbol_1, float2(1.0f, 2.0f)))";
case ValidTextureOverload::kSample2dOffsetF32:
- return R"(tint_texture.Sample(tint_sampler, float2(1.0f, 2.0f), int2(3, 4)))";
+ return R"(tint_symbol.Sample(tint_symbol_1, float2(1.0f, 2.0f), int2(3, 4)))";
case ValidTextureOverload::kSample2dArrayF32:
- return R"(tint_texture.Sample(tint_sampler, float3(1.0f, 2.0f, float(3))))";
+ return R"(tint_symbol.Sample(tint_symbol_1, float3(1.0f, 2.0f, float(3))))";
case ValidTextureOverload::kSample2dArrayOffsetF32:
- return R"(tint_texture.Sample(tint_sampler, float3(1.0f, 2.0f, float(3)), int2(4, 5)))";
+ return R"(tint_symbol.Sample(tint_symbol_1, float3(1.0f, 2.0f, float(3)), int2(4, 5)))";
case ValidTextureOverload::kSample3dF32:
- return R"(tint_texture.Sample(tint_sampler, float3(1.0f, 2.0f, 3.0f)))";
+ return R"(tint_symbol.Sample(tint_symbol_1, float3(1.0f, 2.0f, 3.0f)))";
case ValidTextureOverload::kSample3dOffsetF32:
- return R"(tint_texture.Sample(tint_sampler, float3(1.0f, 2.0f, 3.0f), int3(4, 5, 6)))";
+ return R"(tint_symbol.Sample(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), int3(4, 5, 6)))";
case ValidTextureOverload::kSampleCubeF32:
- return R"(tint_texture.Sample(tint_sampler, float3(1.0f, 2.0f, 3.0f)))";
+ return R"(tint_symbol.Sample(tint_symbol_1, float3(1.0f, 2.0f, 3.0f)))";
case ValidTextureOverload::kSampleCubeArrayF32:
- return R"(tint_texture.Sample(tint_sampler, float4(1.0f, 2.0f, 3.0f, float(4))))";
+ return R"(tint_symbol.Sample(tint_symbol_1, float4(1.0f, 2.0f, 3.0f, float(4))))";
case ValidTextureOverload::kSampleDepth2dF32:
- return R"(tint_texture.Sample(tint_sampler, float2(1.0f, 2.0f)))";
+ return R"(tint_symbol.Sample(tint_symbol_1, float2(1.0f, 2.0f)))";
case ValidTextureOverload::kSampleDepth2dOffsetF32:
- return R"(tint_texture.Sample(tint_sampler, float2(1.0f, 2.0f), int2(3, 4)))";
+ return R"(tint_symbol.Sample(tint_symbol_1, float2(1.0f, 2.0f), int2(3, 4)))";
case ValidTextureOverload::kSampleDepth2dArrayF32:
- return R"(tint_texture.Sample(tint_sampler, float3(1.0f, 2.0f, float(3))))";
+ return R"(tint_symbol.Sample(tint_symbol_1, float3(1.0f, 2.0f, float(3))))";
case ValidTextureOverload::kSampleDepth2dArrayOffsetF32:
- return R"(tint_texture.Sample(tint_sampler, float3(1.0f, 2.0f, float(3)), int2(4, 5)))";
+ return R"(tint_symbol.Sample(tint_symbol_1, float3(1.0f, 2.0f, float(3)), int2(4, 5)))";
case ValidTextureOverload::kSampleDepthCubeF32:
- return R"(tint_texture.Sample(tint_sampler, float3(1.0f, 2.0f, 3.0f)))";
+ return R"(tint_symbol.Sample(tint_symbol_1, float3(1.0f, 2.0f, 3.0f)))";
case ValidTextureOverload::kSampleDepthCubeArrayF32:
- return R"(tint_texture.Sample(tint_sampler, float4(1.0f, 2.0f, 3.0f, float(4))))";
+ return R"(tint_symbol.Sample(tint_symbol_1, float4(1.0f, 2.0f, 3.0f, float(4))))";
case ValidTextureOverload::kSampleBias2dF32:
- return R"(tint_texture.SampleBias(tint_sampler, float2(1.0f, 2.0f), 3.0f))";
+ return R"(tint_symbol.SampleBias(tint_symbol_1, float2(1.0f, 2.0f), 3.0f))";
case ValidTextureOverload::kSampleBias2dOffsetF32:
- return R"(tint_texture.SampleBias(tint_sampler, float2(1.0f, 2.0f), 3.0f, int2(4, 5)))";
+ return R"(tint_symbol.SampleBias(tint_symbol_1, float2(1.0f, 2.0f), 3.0f, int2(4, 5)))";
case ValidTextureOverload::kSampleBias2dArrayF32:
- return R"(tint_texture.SampleBias(tint_sampler, float3(1.0f, 2.0f, float(4)), 3.0f))";
+ return R"(tint_symbol.SampleBias(tint_symbol_1, float3(1.0f, 2.0f, float(4)), 3.0f))";
case ValidTextureOverload::kSampleBias2dArrayOffsetF32:
- return R"(tint_texture.SampleBias(tint_sampler, float3(1.0f, 2.0f, float(3)), 4.0f, int2(5, 6)))";
+ return R"(tint_symbol.SampleBias(tint_symbol_1, float3(1.0f, 2.0f, float(3)), 4.0f, int2(5, 6)))";
case ValidTextureOverload::kSampleBias3dF32:
- return R"(tint_texture.SampleBias(tint_sampler, float3(1.0f, 2.0f, 3.0f), 4.0f))";
+ return R"(tint_symbol.SampleBias(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), 4.0f))";
case ValidTextureOverload::kSampleBias3dOffsetF32:
- return R"(tint_texture.SampleBias(tint_sampler, float3(1.0f, 2.0f, 3.0f), 4.0f, int3(5, 6, 7)))";
+ return R"(tint_symbol.SampleBias(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), 4.0f, int3(5, 6, 7)))";
case ValidTextureOverload::kSampleBiasCubeF32:
- return R"(tint_texture.SampleBias(tint_sampler, float3(1.0f, 2.0f, 3.0f), 4.0f))";
+ return R"(tint_symbol.SampleBias(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), 4.0f))";
case ValidTextureOverload::kSampleBiasCubeArrayF32:
- return R"(tint_texture.SampleBias(tint_sampler, float4(1.0f, 2.0f, 3.0f, float(3)), 4.0f))";
+ return R"(tint_symbol.SampleBias(tint_symbol_1, float4(1.0f, 2.0f, 3.0f, float(3)), 4.0f))";
case ValidTextureOverload::kSampleLevel2dF32:
- return R"(tint_texture.SampleLevel(tint_sampler, float2(1.0f, 2.0f), 3.0f))";
+ return R"(tint_symbol.SampleLevel(tint_symbol_1, float2(1.0f, 2.0f), 3.0f))";
case ValidTextureOverload::kSampleLevel2dOffsetF32:
- return R"(tint_texture.SampleLevel(tint_sampler, float2(1.0f, 2.0f), 3.0f, int2(4, 5)))";
+ return R"(tint_symbol.SampleLevel(tint_symbol_1, float2(1.0f, 2.0f), 3.0f, int2(4, 5)))";
case ValidTextureOverload::kSampleLevel2dArrayF32:
- return R"(tint_texture.SampleLevel(tint_sampler, float3(1.0f, 2.0f, float(3)), 4.0f))";
+ return R"(tint_symbol.SampleLevel(tint_symbol_1, float3(1.0f, 2.0f, float(3)), 4.0f))";
case ValidTextureOverload::kSampleLevel2dArrayOffsetF32:
- return R"(tint_texture.SampleLevel(tint_sampler, float3(1.0f, 2.0f, float(3)), 4.0f, int2(5, 6)))";
+ return R"(tint_symbol.SampleLevel(tint_symbol_1, float3(1.0f, 2.0f, float(3)), 4.0f, int2(5, 6)))";
case ValidTextureOverload::kSampleLevel3dF32:
- return R"(tint_texture.SampleLevel(tint_sampler, float3(1.0f, 2.0f, 3.0f), 4.0f))";
+ return R"(tint_symbol.SampleLevel(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), 4.0f))";
case ValidTextureOverload::kSampleLevel3dOffsetF32:
- return R"(tint_texture.SampleLevel(tint_sampler, float3(1.0f, 2.0f, 3.0f), 4.0f, int3(5, 6, 7)))";
+ return R"(tint_symbol.SampleLevel(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), 4.0f, int3(5, 6, 7)))";
case ValidTextureOverload::kSampleLevelCubeF32:
- return R"(tint_texture.SampleLevel(tint_sampler, float3(1.0f, 2.0f, 3.0f), 4.0f))";
+ return R"(tint_symbol.SampleLevel(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), 4.0f))";
case ValidTextureOverload::kSampleLevelCubeArrayF32:
- return R"(tint_texture.SampleLevel(tint_sampler, float4(1.0f, 2.0f, 3.0f, float(4)), 5.0f))";
+ return R"(tint_symbol.SampleLevel(tint_symbol_1, float4(1.0f, 2.0f, 3.0f, float(4)), 5.0f))";
case ValidTextureOverload::kSampleLevelDepth2dF32:
- return R"(tint_texture.SampleLevel(tint_sampler, float2(1.0f, 2.0f), 3))";
+ return R"(tint_symbol.SampleLevel(tint_symbol_1, float2(1.0f, 2.0f), 3))";
case ValidTextureOverload::kSampleLevelDepth2dOffsetF32:
- return R"(tint_texture.SampleLevel(tint_sampler, float2(1.0f, 2.0f), 3, int2(4, 5)))";
+ return R"(tint_symbol.SampleLevel(tint_symbol_1, float2(1.0f, 2.0f), 3, int2(4, 5)))";
case ValidTextureOverload::kSampleLevelDepth2dArrayF32:
- return R"(tint_texture.SampleLevel(tint_sampler, float3(1.0f, 2.0f, float(3)), 4))";
+ return R"(tint_symbol.SampleLevel(tint_symbol_1, float3(1.0f, 2.0f, float(3)), 4))";
case ValidTextureOverload::kSampleLevelDepth2dArrayOffsetF32:
- return R"(tint_texture.SampleLevel(tint_sampler, float3(1.0f, 2.0f, float(3)), 4, int2(5, 6)))";
+ return R"(tint_symbol.SampleLevel(tint_symbol_1, float3(1.0f, 2.0f, float(3)), 4, int2(5, 6)))";
case ValidTextureOverload::kSampleLevelDepthCubeF32:
- return R"(tint_texture.SampleLevel(tint_sampler, float3(1.0f, 2.0f, 3.0f), 4))";
+ return R"(tint_symbol.SampleLevel(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), 4))";
case ValidTextureOverload::kSampleLevelDepthCubeArrayF32:
- return R"(tint_texture.SampleLevel(tint_sampler, float4(1.0f, 2.0f, 3.0f, float(4)), 5))";
+ return R"(tint_symbol.SampleLevel(tint_symbol_1, float4(1.0f, 2.0f, 3.0f, float(4)), 5))";
case ValidTextureOverload::kSampleGrad2dF32:
- return R"(tint_texture.SampleGrad(tint_sampler, float2(1.0f, 2.0f), float2(3.0f, 4.0f), float2(5.0f, 6.0f)))";
+ return R"(tint_symbol.SampleGrad(tint_symbol_1, float2(1.0f, 2.0f), float2(3.0f, 4.0f), float2(5.0f, 6.0f)))";
case ValidTextureOverload::kSampleGrad2dOffsetF32:
- return R"(tint_texture.SampleGrad(tint_sampler, float2(1.0f, 2.0f), float2(3.0f, 4.0f), float2(5.0f, 6.0f), int2(7, 8)))";
+ return R"(tint_symbol.SampleGrad(tint_symbol_1, float2(1.0f, 2.0f), float2(3.0f, 4.0f), float2(5.0f, 6.0f), int2(7, 8)))";
case ValidTextureOverload::kSampleGrad2dArrayF32:
- return R"(tint_texture.SampleGrad(tint_sampler, float3(1.0f, 2.0f, float(3)), float2(4.0f, 5.0f), float2(6.0f, 7.0f)))";
+ return R"(tint_symbol.SampleGrad(tint_symbol_1, float3(1.0f, 2.0f, float(3)), float2(4.0f, 5.0f), float2(6.0f, 7.0f)))";
case ValidTextureOverload::kSampleGrad2dArrayOffsetF32:
- return R"(tint_texture.SampleGrad(tint_sampler, float3(1.0f, 2.0f, float(3)), float2(4.0f, 5.0f), float2(6.0f, 7.0f), int2(8, 9)))";
+ return R"(tint_symbol.SampleGrad(tint_symbol_1, float3(1.0f, 2.0f, float(3)), float2(4.0f, 5.0f), float2(6.0f, 7.0f), int2(8, 9)))";
case ValidTextureOverload::kSampleGrad3dF32:
- return R"(tint_texture.SampleGrad(tint_sampler, float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f)))";
+ return R"(tint_symbol.SampleGrad(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f)))";
case ValidTextureOverload::kSampleGrad3dOffsetF32:
- return R"(tint_texture.SampleGrad(tint_sampler, float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f), int3(10, 11, 12)))";
+ return R"(tint_symbol.SampleGrad(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f), int3(10, 11, 12)))";
case ValidTextureOverload::kSampleGradCubeF32:
- return R"(tint_texture.SampleGrad(tint_sampler, float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f)))";
+ return R"(tint_symbol.SampleGrad(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f)))";
case ValidTextureOverload::kSampleGradCubeArrayF32:
- return R"(tint_texture.SampleGrad(tint_sampler, float4(1.0f, 2.0f, 3.0f, float(4)), float3(5.0f, 6.0f, 7.0f), float3(8.0f, 9.0f, 10.0f)))";
+ return R"(tint_symbol.SampleGrad(tint_symbol_1, float4(1.0f, 2.0f, 3.0f, float(4)), float3(5.0f, 6.0f, 7.0f), float3(8.0f, 9.0f, 10.0f)))";
case ValidTextureOverload::kSampleCompareDepth2dF32:
- return R"(tint_texture.SampleCmpLevelZero(tint_sampler, float2(1.0f, 2.0f), 3.0f))";
+ return R"(tint_symbol.SampleCmpLevelZero(tint_symbol_1, float2(1.0f, 2.0f), 3.0f))";
case ValidTextureOverload::kSampleCompareDepth2dOffsetF32:
- return R"(tint_texture.SampleCmpLevelZero(tint_sampler, float2(1.0f, 2.0f), 3.0f, int2(4, 5)))";
+ return R"(tint_symbol.SampleCmpLevelZero(tint_symbol_1, float2(1.0f, 2.0f), 3.0f, int2(4, 5)))";
case ValidTextureOverload::kSampleCompareDepth2dArrayF32:
- return R"(tint_texture.SampleCmpLevelZero(tint_sampler, float3(1.0f, 2.0f, float(4)), 3.0f))";
+ return R"(tint_symbol.SampleCmpLevelZero(tint_symbol_1, float3(1.0f, 2.0f, float(4)), 3.0f))";
case ValidTextureOverload::kSampleCompareDepth2dArrayOffsetF32:
- return R"(tint_texture.SampleCmpLevelZero(tint_sampler, float3(1.0f, 2.0f, float(4)), 3.0f, int2(5, 6)))";
+ return R"(tint_symbol.SampleCmpLevelZero(tint_symbol_1, float3(1.0f, 2.0f, float(4)), 3.0f, int2(5, 6)))";
case ValidTextureOverload::kSampleCompareDepthCubeF32:
- return R"(tint_texture.SampleCmpLevelZero(tint_sampler, float3(1.0f, 2.0f, 3.0f), 4.0f))";
+ return R"(tint_symbol.SampleCmpLevelZero(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), 4.0f))";
case ValidTextureOverload::kSampleCompareDepthCubeArrayF32:
- return R"(tint_texture.SampleCmpLevelZero(tint_sampler, float4(1.0f, 2.0f, 3.0f, float(4)), 5.0f))";
+ return R"(tint_symbol.SampleCmpLevelZero(tint_symbol_1, float4(1.0f, 2.0f, 3.0f, float(4)), 5.0f))";
case ValidTextureOverload::kLoad1dLevelF32:
- return R"(tint_texture.Load(int2(1, 0), 3))";
+ return R"(tint_symbol.Load(int2(1, 0), 3))";
case ValidTextureOverload::kLoad1dLevelU32:
- return R"(tint_texture.Load(int2(1, 0), 3))";
+ return R"(tint_symbol.Load(int2(1, 0), 3))";
case ValidTextureOverload::kLoad1dLevelI32:
- return R"(tint_texture.Load(int2(1, 0), 3))";
+ return R"(tint_symbol.Load(int2(1, 0), 3))";
case ValidTextureOverload::kLoad2dLevelF32:
- return R"(tint_texture.Load(int3(1, 2, 0), 3))";
+ return R"(tint_symbol.Load(int3(1, 2, 0), 3))";
case ValidTextureOverload::kLoad2dLevelU32:
- return R"(tint_texture.Load(int3(1, 2, 0), 3))";
+ return R"(tint_symbol.Load(int3(1, 2, 0), 3))";
case ValidTextureOverload::kLoad2dLevelI32:
- return R"(tint_texture.Load(int3(1, 2, 0), 3))";
+ return R"(tint_symbol.Load(int3(1, 2, 0), 3))";
case ValidTextureOverload::kLoad2dArrayLevelF32:
- return R"(tint_texture.Load(int4(1, 2, 3, 0), 4))";
+ return R"(tint_symbol.Load(int4(1, 2, 3, 0), 4))";
case ValidTextureOverload::kLoad2dArrayLevelU32:
- return R"(tint_texture.Load(int4(1, 2, 3, 0), 4))";
+ return R"(tint_symbol.Load(int4(1, 2, 3, 0), 4))";
case ValidTextureOverload::kLoad2dArrayLevelI32:
- return R"(tint_texture.Load(int4(1, 2, 3, 0), 4))";
+ return R"(tint_symbol.Load(int4(1, 2, 3, 0), 4))";
case ValidTextureOverload::kLoad3dLevelF32:
- return R"(tint_texture.Load(int4(1, 2, 3, 0), 4))";
+ return R"(tint_symbol.Load(int4(1, 2, 3, 0), 4))";
case ValidTextureOverload::kLoad3dLevelU32:
- return R"(tint_texture.Load(int4(1, 2, 3, 0), 4))";
+ return R"(tint_symbol.Load(int4(1, 2, 3, 0), 4))";
case ValidTextureOverload::kLoad3dLevelI32:
- return R"(tint_texture.Load(int4(1, 2, 3, 0), 4))";
+ return R"(tint_symbol.Load(int4(1, 2, 3, 0), 4))";
case ValidTextureOverload::kLoadMultisampled2dF32:
- return R"(tint_texture.Load(int3(1, 2, 0), 3))";
+ return R"(tint_symbol.Load(int3(1, 2, 0), 3))";
case ValidTextureOverload::kLoadMultisampled2dU32:
- return R"(tint_texture.Load(int3(1, 2, 0), 3))";
+ return R"(tint_symbol.Load(int3(1, 2, 0), 3))";
case ValidTextureOverload::kLoadMultisampled2dI32:
- return R"(tint_texture.Load(int3(1, 2, 0), 3))";
+ return R"(tint_symbol.Load(int3(1, 2, 0), 3))";
case ValidTextureOverload::kLoadMultisampled2dArrayF32:
- return R"(tint_texture.Load(int4(1, 2, 3, 0), 4))";
+ return R"(tint_symbol.Load(int4(1, 2, 3, 0), 4))";
case ValidTextureOverload::kLoadMultisampled2dArrayU32:
- return R"(tint_texture.Load(int4(1, 2, 3, 0), 4))";
+ return R"(tint_symbol.Load(int4(1, 2, 3, 0), 4))";
case ValidTextureOverload::kLoadMultisampled2dArrayI32:
- return R"(tint_texture.Load(int4(1, 2, 3, 0), 4))";
+ return R"(tint_symbol.Load(int4(1, 2, 3, 0), 4))";
case ValidTextureOverload::kLoadDepth2dLevelF32:
- return R"(tint_texture.Load(int3(1, 2, 0), 3))";
+ return R"(tint_symbol.Load(int3(1, 2, 0), 3))";
case ValidTextureOverload::kLoadDepth2dArrayLevelF32:
- return R"(tint_texture.Load(int4(1, 2, 3, 0), 4))";
+ return R"(tint_symbol.Load(int4(1, 2, 3, 0), 4))";
case ValidTextureOverload::kLoadStorageRO1dRgba32float:
- return R"(tint_texture.Load(int2(1, 0)))";
+ return R"(tint_symbol.Load(int2(1, 0)))";
case ValidTextureOverload::kLoadStorageRO2dRgba8unorm:
case ValidTextureOverload::kLoadStorageRO2dRgba8snorm:
case ValidTextureOverload::kLoadStorageRO2dRgba8uint:
@@ -359,19 +359,19 @@
case ValidTextureOverload::kLoadStorageRO2dRgba32uint:
case ValidTextureOverload::kLoadStorageRO2dRgba32sint:
case ValidTextureOverload::kLoadStorageRO2dRgba32float:
- return R"(tint_texture.Load(int3(1, 2, 0)))";
+ return R"(tint_symbol.Load(int3(1, 2, 0)))";
case ValidTextureOverload::kLoadStorageRO2dArrayRgba32float:
- return R"(tint_texture.Load(int4(1, 2, 3, 0)))";
+ return R"(tint_symbol.Load(int4(1, 2, 3, 0)))";
case ValidTextureOverload::kLoadStorageRO3dRgba32float:
- return R"(tint_texture.Load(int4(1, 2, 3, 0)))";
+ return R"(tint_symbol.Load(int4(1, 2, 3, 0)))";
case ValidTextureOverload::kStoreWO1dRgba32float:
- return R"(tint_texture[1] = float4(2.0f, 3.0f, 4.0f, 5.0f))";
+ return R"(tint_symbol[1] = float4(2.0f, 3.0f, 4.0f, 5.0f))";
case ValidTextureOverload::kStoreWO2dRgba32float:
- return R"(tint_texture[int2(1, 2)] = float4(3.0f, 4.0f, 5.0f, 6.0f))";
+ return R"(tint_symbol[int2(1, 2)] = float4(3.0f, 4.0f, 5.0f, 6.0f))";
case ValidTextureOverload::kStoreWO2dArrayRgba32float:
- return R"(tint_texture[int3(1, 2, 3)] = float4(4.0f, 5.0f, 6.0f, 7.0f))";
+ return R"(tint_symbol[int3(1, 2, 3)] = float4(4.0f, 5.0f, 6.0f, 7.0f))";
case ValidTextureOverload::kStoreWO3dRgba32float:
- return R"(tint_texture[int3(1, 2, 3)] = float4(4.0f, 5.0f, 6.0f, 7.0f))";
+ return R"(tint_symbol[int3(1, 2, 3)] = float4(4.0f, 5.0f, 6.0f, 7.0f))";
}
return "<unmatched texture overload>";
} // NOLINT - Ignore the length of this function
diff --git a/src/writer/hlsl/generator_impl_type_test.cc b/src/writer/hlsl/generator_impl_type_test.cc
index d46ec56..920434f 100644
--- a/src/writer/hlsl/generator_impl_type_test.cc
+++ b/src/writer/hlsl/generator_impl_type_test.cc
@@ -236,8 +236,8 @@
ASSERT_TRUE(gen.Generate(out)) << gen.error();
EXPECT_THAT(result(), HasSubstr(R"(struct S {
- int tint_double;
- float tint_float;
+ int tint_symbol;
+ float tint_symbol_1;
};
)"));
}
diff --git a/src/writer/hlsl/test_helper.h b/src/writer/hlsl/test_helper.h
index de6611c..8b3604e 100644
--- a/src/writer/hlsl/test_helper.h
+++ b/src/writer/hlsl/test_helper.h
@@ -21,6 +21,8 @@
#include "gtest/gtest.h"
#include "src/transform/hlsl.h"
+#include "src/transform/manager.h"
+#include "src/transform/renamer.h"
#include "src/writer/hlsl/generator_impl.h"
namespace tint {
@@ -99,7 +101,13 @@
<< formatter.format(program->Diagnostics());
}();
- auto result = transform::Hlsl().Run(program.get());
+ transform::Manager transform_manager;
+ transform::Renamer::Config renamer_config{
+ transform::Renamer::Target::kHlslKeywords};
+ transform_manager.append(
+ std::make_unique<tint::transform::Renamer>(renamer_config));
+ transform_manager.append(std::make_unique<tint::transform::Hlsl>());
+ auto result = transform_manager.Run(program.get());
[&]() {
ASSERT_TRUE(result.program.IsValid())
<< formatter.format(result.program.Diagnostics());