[tint] Move ParameterUsage from sem to core
Change-Id: Ide9d785bfbb52d45933406a953da490f3aaf2a70
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/144127
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: James Price <jrprice@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
diff --git a/src/tint/BUILD.gn b/src/tint/BUILD.gn
index d353821..794d8ab 100644
--- a/src/tint/BUILD.gn
+++ b/src/tint/BUILD.gn
@@ -699,6 +699,8 @@
libtint_source_set("libtint_sem_src") {
sources = [
"lang/core/evaluation_stage.h",
+ "lang/core/parameter_usage.cc",
+ "lang/core/parameter_usage.h",
"lang/wgsl/sem/accessor_expression.cc",
"lang/wgsl/sem/accessor_expression.h",
"lang/wgsl/sem/array_count.cc",
@@ -744,8 +746,6 @@
"lang/wgsl/sem/module.h",
"lang/wgsl/sem/node.cc",
"lang/wgsl/sem/node.h",
- "lang/wgsl/sem/parameter_usage.cc",
- "lang/wgsl/sem/parameter_usage.h",
"lang/wgsl/sem/pipeline_stage_set.h",
"lang/wgsl/sem/sampler_texture_pair.h",
"lang/wgsl/sem/statement.cc",
diff --git a/src/tint/CMakeLists.txt b/src/tint/CMakeLists.txt
index ac00ecd..52f39e1 100644
--- a/src/tint/CMakeLists.txt
+++ b/src/tint/CMakeLists.txt
@@ -593,7 +593,7 @@
tint_generated(lang/core/texel_format BENCH TEST)
tint_generated(lang/core/intrinsic/ctor_conv)
-tint_generated(lang/wgsl/sem/parameter_usage)
+tint_generated(lang/core/parameter_usage)
if(UNIX)
list(APPEND TINT_LIB_SRCS utils/diagnostic/printer_posix.cc)
diff --git a/src/tint/lang/core/intrinsic/table.cc b/src/tint/lang/core/intrinsic/table.cc
index f6bd2dd..778db1a 100644
--- a/src/tint/lang/core/intrinsic/table.cc
+++ b/src/tint/lang/core/intrinsic/table.cc
@@ -334,10 +334,6 @@
// TODO(bclayton): See if we can move more of this hand-rolled code to the
// template
////////////////////////////////////////////////////////////////////////////////
-using TexelFormat = core::TexelFormat;
-using Access = core::Access;
-using AddressSpace = core::AddressSpace;
-using ParameterUsage = sem::ParameterUsage;
using PipelineStage = ast::PipelineStage;
/// Unique flag bits for overloads
@@ -1659,7 +1655,7 @@
ss << ", ";
}
if (parameter.usage != ParameterUsage::kNone) {
- ss << sem::str(parameter.usage) << ": ";
+ ss << ToString(parameter.usage) << ": ";
}
auto* indices = parameter.matcher_indices;
ss << Match(templates, overload, indices, earliest_eval_stage).TypeName();
diff --git a/src/tint/lang/core/intrinsic/table.h b/src/tint/lang/core/intrinsic/table.h
index 1d7b68f..f5a5d1e 100644
--- a/src/tint/lang/core/intrinsic/table.h
+++ b/src/tint/lang/core/intrinsic/table.h
@@ -18,10 +18,10 @@
#include <memory>
#include <string>
+#include "src/tint/lang/core/binary_op.h"
#include "src/tint/lang/core/constant/eval.h"
#include "src/tint/lang/core/intrinsic/ctor_conv.h"
#include "src/tint/lang/core/unary_op.h"
-#include "src/tint/lang/wgsl/ast/binary_expression.h"
#include "src/tint/lang/wgsl/sem/builtin.h"
#include "src/tint/utils/containers/vector.h"
diff --git a/src/tint/lang/core/intrinsic/table_test.cc b/src/tint/lang/core/intrinsic/table_test.cc
index 537de18..3bf47da 100644
--- a/src/tint/lang/core/intrinsic/table_test.cc
+++ b/src/tint/lang/core/intrinsic/table_test.cc
@@ -39,7 +39,7 @@
using namespace tint::core::fluent_types; // NOLINT
using Parameter = sem::Parameter;
-using ParameterUsage = sem::ParameterUsage;
+using ParameterUsage = core::ParameterUsage;
using AFloatV = vec3<AFloat>;
using AIntV = vec3<AInt>;
diff --git a/src/tint/lang/wgsl/sem/parameter_usage.cc b/src/tint/lang/core/parameter_usage.cc
similarity index 92%
rename from src/tint/lang/wgsl/sem/parameter_usage.cc
rename to src/tint/lang/core/parameter_usage.cc
index d60f30b..7eb0f07 100644
--- a/src/tint/lang/wgsl/sem/parameter_usage.cc
+++ b/src/tint/lang/core/parameter_usage.cc
@@ -15,16 +15,16 @@
////////////////////////////////////////////////////////////////////////////////
// File generated by tools/src/cmd/gen
// using the template:
-// src/tint/lang/wgsl/sem/parameter_usage.cc.tmpl
+// src/tint/lang/core/parameter_usage.cc.tmpl
//
// Do not modify this file directly
////////////////////////////////////////////////////////////////////////////////
-#include "src/tint/lang/wgsl/sem/parameter_usage.h"
+#include "src/tint/lang/core/parameter_usage.h"
-namespace tint::sem {
+namespace tint::core {
-const char* str(ParameterUsage usage) {
+std::string_view ToString(ParameterUsage usage) {
switch (usage) {
case ParameterUsage::kNone:
return "none";
@@ -76,4 +76,4 @@
return "<unknown>";
}
-} // namespace tint::sem
+} // namespace tint::core
diff --git a/src/tint/lang/wgsl/sem/parameter_usage.cc.tmpl b/src/tint/lang/core/parameter_usage.cc.tmpl
similarity index 83%
rename from src/tint/lang/wgsl/sem/parameter_usage.cc.tmpl
rename to src/tint/lang/core/parameter_usage.cc.tmpl
index 1a3981c..be27105 100644
--- a/src/tint/lang/wgsl/sem/parameter_usage.cc.tmpl
+++ b/src/tint/lang/core/parameter_usage.cc.tmpl
@@ -13,11 +13,11 @@
{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
-#include "src/tint/lang/wgsl/sem/parameter_usage.h"
+#include "src/tint/lang/core/parameter_usage.h"
-namespace tint::sem {
+namespace tint::core {
-const char* str(ParameterUsage usage) {
+std::string_view ToString(ParameterUsage usage) {
switch (usage) {
case ParameterUsage::kNone:
return "none";
@@ -29,4 +29,4 @@
return "<unknown>";
}
-} // namespace tint::sem
+} // namespace tint::core
diff --git a/src/tint/lang/wgsl/sem/parameter_usage.h b/src/tint/lang/core/parameter_usage.h
similarity index 63%
rename from src/tint/lang/wgsl/sem/parameter_usage.h
rename to src/tint/lang/core/parameter_usage.h
index 1f10df2..53c2604 100644
--- a/src/tint/lang/wgsl/sem/parameter_usage.h
+++ b/src/tint/lang/core/parameter_usage.h
@@ -15,15 +15,19 @@
////////////////////////////////////////////////////////////////////////////////
// File generated by tools/src/cmd/gen
// using the template:
-// src/tint/lang/wgsl/sem/parameter_usage.h.tmpl
+// src/tint/lang/core/parameter_usage.h.tmpl
//
// Do not modify this file directly
////////////////////////////////////////////////////////////////////////////////
-#ifndef SRC_TINT_LANG_WGSL_SEM_PARAMETER_USAGE_H_
-#define SRC_TINT_LANG_WGSL_SEM_PARAMETER_USAGE_H_
+#ifndef SRC_TINT_LANG_CORE_PARAMETER_USAGE_H_
+#define SRC_TINT_LANG_CORE_PARAMETER_USAGE_H_
-namespace tint::sem {
+#include <string>
+
+#include "src/tint/utils/traits/traits.h"
+
+namespace tint::core {
/// ParameterUsage is extra metadata for identifying a parameter based on its
/// overload position
@@ -53,9 +57,18 @@
kZyw,
};
-/// @returns a string representation of the given parameter usage.
-const char* str(ParameterUsage usage);
+/// @param value the enum value
+/// @returns the string for the given enum value
+std::string_view ToString(ParameterUsage value);
-} // namespace tint::sem
+/// @param out the stream to write to
+/// @param value the ParameterUsage
+/// @returns @p out so calls can be chained
+template <typename STREAM, typename = traits::EnableIfIsOStream<STREAM>>
+auto& operator<<(STREAM& out, ParameterUsage value) {
+ return out << ToString(value);
+}
-#endif // SRC_TINT_LANG_WGSL_SEM_PARAMETER_USAGE_H_
+} // namespace tint::core
+
+#endif // SRC_TINT_LANG_CORE_PARAMETER_USAGE_H_
diff --git a/src/tint/lang/core/parameter_usage.h.tmpl b/src/tint/lang/core/parameter_usage.h.tmpl
new file mode 100644
index 0000000..7c3af98
--- /dev/null
+++ b/src/tint/lang/core/parameter_usage.h.tmpl
@@ -0,0 +1,48 @@
+{{- /*
+--------------------------------------------------------------------------------
+Template file for use with tools/src/cmd/gen to generate parameter_usage.h
+
+To update the generated file, run:
+ ./tools/run gen
+
+See:
+* tools/src/cmd/gen for structures used by this template
+* https://golang.org/pkg/text/template/ for documentation on the template syntax
+--------------------------------------------------------------------------------
+*/ -}}
+
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
+
+#ifndef SRC_TINT_LANG_CORE_PARAMETER_USAGE_H_
+#define SRC_TINT_LANG_CORE_PARAMETER_USAGE_H_
+
+#include <string>
+
+#include "src/tint/utils/traits/traits.h"
+
+namespace tint::core {
+
+/// ParameterUsage is extra metadata for identifying a parameter based on its
+/// overload position
+enum class ParameterUsage {
+ kNone = -1,
+{{- range $I.Sem.UniqueParameterNames }}
+ k{{PascalCase .}},
+{{- end }}
+};
+
+/// @param value the enum value
+/// @returns the string for the given enum value
+std::string_view ToString(ParameterUsage value);
+
+/// @param out the stream to write to
+/// @param value the ParameterUsage
+/// @returns @p out so calls can be chained
+template <typename STREAM, typename = traits::EnableIfIsOStream<STREAM>>
+auto& operator<<(STREAM& out, ParameterUsage value) {
+ return out << ToString(value);
+}
+
+} // namespace tint::core
+
+#endif // SRC_TINT_LANG_CORE_PARAMETER_USAGE_H_
diff --git a/src/tint/lang/glsl/writer/ast_printer/ast_printer.cc b/src/tint/lang/glsl/writer/ast_printer/ast_printer.cc
index 25f32a8..b768d00 100644
--- a/src/tint/lang/glsl/writer/ast_printer/ast_printer.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/ast_printer.cc
@@ -1281,7 +1281,7 @@
void ASTPrinter::EmitTextureCall(StringStream& out,
const sem::Call* call,
const sem::Builtin* builtin) {
- using Usage = sem::ParameterUsage;
+ using Usage = core::ParameterUsage;
auto& signature = builtin->Signature();
auto* expr = call->Declaration();
@@ -1470,7 +1470,7 @@
return;
}
- if (builtin->Signature().IndexOf(sem::ParameterUsage::kOffset) >= 0) {
+ if (builtin->Signature().IndexOf(core::ParameterUsage::kOffset) >= 0) {
out << "Offset";
}
diff --git a/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc b/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc
index 89eb49e..d3a8c26 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc
@@ -2514,7 +2514,7 @@
bool ASTPrinter::EmitTextureCall(StringStream& out,
const sem::Call* call,
const sem::Builtin* builtin) {
- using Usage = sem::ParameterUsage;
+ using Usage = core::ParameterUsage;
auto& signature = builtin->Signature();
auto* expr = call->Declaration();
@@ -2749,7 +2749,7 @@
break;
case core::Function::kTextureGather:
out << ".Gather";
- if (builtin->Parameters()[0]->Usage() == sem::ParameterUsage::kComponent) {
+ if (builtin->Parameters()[0]->Usage() == core::ParameterUsage::kComponent) {
switch (call->Arguments()[0]->ConstantValue()->ValueAs<AInt>()) {
case 0:
out << "Red";
diff --git a/src/tint/lang/msl/writer/ast_printer/ast_printer.cc b/src/tint/lang/msl/writer/ast_printer/ast_printer.cc
index c835c6c..5154bc6 100644
--- a/src/tint/lang/msl/writer/ast_printer/ast_printer.cc
+++ b/src/tint/lang/msl/writer/ast_printer/ast_printer.cc
@@ -950,7 +950,7 @@
bool ASTPrinter::EmitTextureCall(StringStream& out,
const sem::Call* call,
const sem::Builtin* builtin) {
- using Usage = sem::ParameterUsage;
+ using Usage = core::ParameterUsage;
auto& signature = builtin->Signature();
auto* expr = call->Declaration();
diff --git a/src/tint/lang/spirv/writer/ast_printer/builder.cc b/src/tint/lang/spirv/writer/ast_printer/builder.cc
index 54038c5..971ee76 100644
--- a/src/tint/lang/spirv/writer/ast_printer/builder.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/builder.cc
@@ -2578,7 +2578,7 @@
const sem::Builtin* builtin,
Operand result_type,
Operand result_id) {
- using Usage = sem::ParameterUsage;
+ using Usage = core::ParameterUsage;
auto& signature = builtin->Signature();
auto& arguments = call->Arguments();
diff --git a/src/tint/lang/wgsl/ast/transform/builtin_polyfill.cc b/src/tint/lang/wgsl/ast/transform/builtin_polyfill.cc
index a2ff9e1..63716fa 100644
--- a/src/tint/lang/wgsl/ast/transform/builtin_polyfill.cc
+++ b/src/tint/lang/wgsl/ast/transform/builtin_polyfill.cc
@@ -1184,7 +1184,7 @@
case core::Function::kTextureSampleBaseClampToEdge:
if (cfg.builtins.texture_sample_base_clamp_to_edge_2d_f32) {
auto& sig = builtin->Signature();
- auto* tex = sig.Parameter(sem::ParameterUsage::kTexture);
+ auto* tex = sig.Parameter(core::ParameterUsage::kTexture);
if (auto* stex = tex->Type()->As<type::SampledTexture>()) {
if (stex->type()->Is<type::F32>()) {
return builtin_polyfills.GetOrCreate(builtin, [&] {
@@ -1198,11 +1198,11 @@
case core::Function::kTextureStore:
if (cfg.builtins.bgra8unorm) {
auto& sig = builtin->Signature();
- auto* tex = sig.Parameter(sem::ParameterUsage::kTexture);
+ auto* tex = sig.Parameter(core::ParameterUsage::kTexture);
if (auto* stex = tex->Type()->As<type::StorageTexture>()) {
if (stex->texel_format() == core::TexelFormat::kBgra8Unorm) {
size_t value_idx = static_cast<size_t>(
- sig.IndexOf(sem::ParameterUsage::kValue));
+ sig.IndexOf(core::ParameterUsage::kValue));
ctx.Replace(expr, [this, expr, value_idx] {
tint::Vector<const Expression*, 3> args;
for (auto* arg : expr->args) {
diff --git a/src/tint/lang/wgsl/ast/transform/combine_samplers.cc b/src/tint/lang/wgsl/ast/transform/combine_samplers.cc
index 2a66dd0..404f872 100644
--- a/src/tint/lang/wgsl/ast/transform/combine_samplers.cc
+++ b/src/tint/lang/wgsl/ast/transform/combine_samplers.cc
@@ -227,8 +227,8 @@
// Replace all texture builtin calls.
if (auto* builtin = call->Target()->As<sem::Builtin>()) {
const auto& signature = builtin->Signature();
- auto sampler_index = signature.IndexOf(sem::ParameterUsage::kSampler);
- auto texture_index = signature.IndexOf(sem::ParameterUsage::kTexture);
+ auto sampler_index = signature.IndexOf(core::ParameterUsage::kSampler);
+ auto texture_index = signature.IndexOf(core::ParameterUsage::kTexture);
if (texture_index == -1) {
return nullptr;
}
diff --git a/src/tint/lang/wgsl/ast/transform/multiplanar_external_texture.cc b/src/tint/lang/wgsl/ast/transform/multiplanar_external_texture.cc
index cefd907..a454d7c 100644
--- a/src/tint/lang/wgsl/ast/transform/multiplanar_external_texture.cc
+++ b/src/tint/lang/wgsl/ast/transform/multiplanar_external_texture.cc
@@ -462,7 +462,7 @@
auto texture_load_external_sym = texture_load_external_fns.GetOrCreate(call->Target(), [&] {
auto& sig = call->Target()->Signature();
- auto* coord_ty = sig.Parameter(sem::ParameterUsage::kCoords)->Type();
+ auto* coord_ty = sig.Parameter(core::ParameterUsage::kCoords)->Type();
auto name = b.Symbols().New("textureLoadExternal");
diff --git a/src/tint/lang/wgsl/ast/transform/robustness.cc b/src/tint/lang/wgsl/ast/transform/robustness.cc
index 9c688d1..2f7b5a5 100644
--- a/src/tint/lang/wgsl/ast/transform/robustness.cc
+++ b/src/tint/lang/wgsl/ast/transform/robustness.cc
@@ -394,10 +394,10 @@
// Indices of the mandatory texture and coords parameters, and the optional
// array and level parameters.
auto& signature = builtin->Signature();
- auto texture_arg_idx = signature.IndexOf(sem::ParameterUsage::kTexture);
- auto coords_arg_idx = signature.IndexOf(sem::ParameterUsage::kCoords);
- auto array_arg_idx = signature.IndexOf(sem::ParameterUsage::kArrayIndex);
- auto level_arg_idx = signature.IndexOf(sem::ParameterUsage::kLevel);
+ auto texture_arg_idx = signature.IndexOf(core::ParameterUsage::kTexture);
+ auto coords_arg_idx = signature.IndexOf(core::ParameterUsage::kCoords);
+ auto array_arg_idx = signature.IndexOf(core::ParameterUsage::kArrayIndex);
+ auto level_arg_idx = signature.IndexOf(core::ParameterUsage::kLevel);
auto* texture_arg = expr->args[static_cast<size_t>(texture_arg_idx)];
@@ -486,10 +486,10 @@
// Indices of the mandatory texture and coords parameters, and the optional
// array and level parameters.
auto& signature = builtin->Signature();
- auto texture_arg_idx = signature.IndexOf(sem::ParameterUsage::kTexture);
- auto coords_arg_idx = signature.IndexOf(sem::ParameterUsage::kCoords);
- auto array_arg_idx = signature.IndexOf(sem::ParameterUsage::kArrayIndex);
- auto level_arg_idx = signature.IndexOf(sem::ParameterUsage::kLevel);
+ auto texture_arg_idx = signature.IndexOf(core::ParameterUsage::kTexture);
+ auto coords_arg_idx = signature.IndexOf(core::ParameterUsage::kCoords);
+ auto array_arg_idx = signature.IndexOf(core::ParameterUsage::kArrayIndex);
+ auto level_arg_idx = signature.IndexOf(core::ParameterUsage::kLevel);
auto* texture_arg = expr->args[static_cast<size_t>(texture_arg_idx)];
diff --git a/src/tint/lang/wgsl/ast/transform/texture_1d_to_2d.cc b/src/tint/lang/wgsl/ast/transform/texture_1d_to_2d.cc
index f5d372a..e038ba1 100644
--- a/src/tint/lang/wgsl/ast/transform/texture_1d_to_2d.cc
+++ b/src/tint/lang/wgsl/ast/transform/texture_1d_to_2d.cc
@@ -38,7 +38,7 @@
if (auto* sem_fn = program->Sem().Get(fn)) {
for (auto* builtin : sem_fn->DirectlyCalledBuiltins()) {
const auto& signature = builtin->Signature();
- auto texture = signature.Parameter(sem::ParameterUsage::kTexture);
+ auto texture = signature.Parameter(core::ParameterUsage::kTexture);
if (texture) {
auto* tex = texture->Type()->As<type::Texture>();
if (tex->dim() == type::TextureDimension::k1d) {
@@ -131,7 +131,7 @@
return nullptr;
}
const auto& signature = builtin->Signature();
- auto* texture = signature.Parameter(sem::ParameterUsage::kTexture);
+ auto* texture = signature.Parameter(core::ParameterUsage::kTexture);
if (!texture) {
return nullptr;
}
@@ -150,7 +150,7 @@
return ctx.dst->MemberAccessor(new_call, "x");
}
- auto coords_index = signature.IndexOf(sem::ParameterUsage::kCoords);
+ auto coords_index = signature.IndexOf(core::ParameterUsage::kCoords);
if (coords_index == -1) {
return nullptr;
}
diff --git a/src/tint/lang/wgsl/inspector/inspector.cc b/src/tint/lang/wgsl/inspector/inspector.cc
index 809d346..3163a3d 100644
--- a/src/tint/lang/wgsl/inspector/inspector.cc
+++ b/src/tint/lang/wgsl/inspector/inspector.cc
@@ -804,12 +804,12 @@
}
const auto& signature = i->Signature();
- int sampler_index = signature.IndexOf(sem::ParameterUsage::kSampler);
+ int sampler_index = signature.IndexOf(core::ParameterUsage::kSampler);
if (sampler_index == -1) {
continue;
}
- int texture_index = signature.IndexOf(sem::ParameterUsage::kTexture);
+ int texture_index = signature.IndexOf(core::ParameterUsage::kTexture);
if (texture_index == -1) {
continue;
}
diff --git a/src/tint/lang/wgsl/resolver/builtin_test.cc b/src/tint/lang/wgsl/resolver/builtin_test.cc
index 1f9e9ad..d9c0a96 100644
--- a/src/tint/lang/wgsl/resolver/builtin_test.cc
+++ b/src/tint/lang/wgsl/resolver/builtin_test.cc
@@ -2200,7 +2200,7 @@
if (!first) {
out << ", ";
}
- out << sem::str(param->Usage());
+ out << param->Usage();
first = false;
}
out << ")";
diff --git a/src/tint/lang/wgsl/resolver/resolver.cc b/src/tint/lang/wgsl/resolver/resolver.cc
index 404e73c..82d745e 100644
--- a/src/tint/lang/wgsl/resolver/resolver.cc
+++ b/src/tint/lang/wgsl/resolver/resolver.cc
@@ -804,7 +804,7 @@
auto* sem = builder_->create<sem::Parameter>(
param, index, ty, core::AddressSpace::kUndefined, core::Access::kUndefined,
- sem::ParameterUsage::kNone, binding_point, location);
+ core::ParameterUsage::kNone, binding_point, location);
builder_->Sem().Add(param, sem);
if (!validator_.Parameter(sem)) {
@@ -2925,7 +2925,7 @@
VectorRef<const sem::ValueExpression*> args) const {
// Collect a texture/sampler pair for this builtin.
const auto& signature = builtin->Signature();
- int texture_index = signature.IndexOf(sem::ParameterUsage::kTexture);
+ int texture_index = signature.IndexOf(core::ParameterUsage::kTexture);
if (TINT_UNLIKELY(texture_index == -1)) {
StringStream err;
err << "texture builtin without texture parameter";
@@ -2936,7 +2936,7 @@
args[static_cast<size_t>(texture_index)]->UnwrapLoad()->As<sem::VariableUser>()) {
auto* texture = user->Variable();
if (!texture->Type()->UnwrapRef()->Is<type::StorageTexture>()) {
- int sampler_index = signature.IndexOf(sem::ParameterUsage::kSampler);
+ int sampler_index = signature.IndexOf(core::ParameterUsage::kSampler);
const sem::Variable* sampler = sampler_index != -1
? args[static_cast<size_t>(sampler_index)]
->UnwrapLoad()
diff --git a/src/tint/lang/wgsl/resolver/validator.cc b/src/tint/lang/wgsl/resolver/validator.cc
index c1b7772..c91d2fc 100644
--- a/src/tint/lang/wgsl/resolver/validator.cc
+++ b/src/tint/lang/wgsl/resolver/validator.cc
@@ -1628,13 +1628,13 @@
std::string func_name = builtin->str();
auto& signature = builtin->Signature();
- auto check_arg_is_constexpr = [&](sem::ParameterUsage usage, int min, int max) {
+ auto check_arg_is_constexpr = [&](core::ParameterUsage usage, int min, int max) {
auto signed_index = signature.IndexOf(usage);
if (signed_index < 0) {
return true;
}
auto index = static_cast<size_t>(signed_index);
- std::string name = sem::str(usage);
+ std::string name{core::ToString(usage)};
auto* arg = call->Arguments()[index];
if (auto values = arg->ConstantValue()) {
if (auto* vector = values->Type()->As<type::Vector>()) {
@@ -1666,8 +1666,8 @@
return false;
};
- return check_arg_is_constexpr(sem::ParameterUsage::kOffset, -8, 7) &&
- check_arg_is_constexpr(sem::ParameterUsage::kComponent, 0, 3);
+ return check_arg_is_constexpr(core::ParameterUsage::kOffset, -8, 7) &&
+ check_arg_is_constexpr(core::ParameterUsage::kComponent, 0, 3);
}
bool Validator::WorkgroupUniformLoad(const sem::Call* call) const {
diff --git a/src/tint/lang/wgsl/sem/call_target.cc b/src/tint/lang/wgsl/sem/call_target.cc
index 1ffc602..08f709a 100644
--- a/src/tint/lang/wgsl/sem/call_target.cc
+++ b/src/tint/lang/wgsl/sem/call_target.cc
@@ -49,7 +49,7 @@
CallTargetSignature::CallTargetSignature(const CallTargetSignature&) = default;
CallTargetSignature::~CallTargetSignature() = default;
-int CallTargetSignature::IndexOf(ParameterUsage usage) const {
+int CallTargetSignature::IndexOf(core::ParameterUsage usage) const {
for (size_t i = 0; i < parameters.Length(); i++) {
if (parameters[i]->Usage() == usage) {
return static_cast<int>(i);
diff --git a/src/tint/lang/wgsl/sem/call_target.h b/src/tint/lang/wgsl/sem/call_target.h
index 7edf10b..075b644 100644
--- a/src/tint/lang/wgsl/sem/call_target.h
+++ b/src/tint/lang/wgsl/sem/call_target.h
@@ -54,12 +54,12 @@
/// @param usage the parameter usage to find
/// @returns the index of the parameter with the given usage, or -1 if no
/// parameter with the given usage exists.
- int IndexOf(ParameterUsage usage) const;
+ int IndexOf(core::ParameterUsage usage) const;
/// @param usage the parameter usage to find
/// @returns the the parameter with the given usage, or nullptr if no parameter with the given
/// usage exists.
- inline const sem::Parameter* Parameter(ParameterUsage usage) const {
+ inline const sem::Parameter* Parameter(core::ParameterUsage usage) const {
auto idx = IndexOf(usage);
return (idx >= 0) ? parameters[static_cast<size_t>(idx)] : nullptr;
}
diff --git a/src/tint/lang/wgsl/sem/parameter_usage.h.tmpl b/src/tint/lang/wgsl/sem/parameter_usage.h.tmpl
deleted file mode 100644
index a13e1c4..0000000
--- a/src/tint/lang/wgsl/sem/parameter_usage.h.tmpl
+++ /dev/null
@@ -1,35 +0,0 @@
-{{- /*
---------------------------------------------------------------------------------
-Template file for use with tools/src/cmd/gen to generate parameter_usage.h
-
-To update the generated file, run:
- ./tools/run gen
-
-See:
-* tools/src/cmd/gen for structures used by this template
-* https://golang.org/pkg/text/template/ for documentation on the template syntax
---------------------------------------------------------------------------------
-*/ -}}
-
-{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
-
-#ifndef SRC_TINT_LANG_WGSL_SEM_PARAMETER_USAGE_H_
-#define SRC_TINT_LANG_WGSL_SEM_PARAMETER_USAGE_H_
-
-namespace tint::sem {
-
-/// ParameterUsage is extra metadata for identifying a parameter based on its
-/// overload position
-enum class ParameterUsage {
- kNone = -1,
-{{- range $I.Sem.UniqueParameterNames }}
- k{{PascalCase .}},
-{{- end }}
-};
-
-/// @returns a string representation of the given parameter usage.
-const char* str(ParameterUsage usage);
-
-} // namespace tint::sem
-
-#endif // SRC_TINT_LANG_WGSL_SEM_PARAMETER_USAGE_H_
diff --git a/src/tint/lang/wgsl/sem/variable.cc b/src/tint/lang/wgsl/sem/variable.cc
index e234659..223cc5f 100644
--- a/src/tint/lang/wgsl/sem/variable.cc
+++ b/src/tint/lang/wgsl/sem/variable.cc
@@ -76,7 +76,7 @@
const type::Type* type,
core::AddressSpace address_space,
core::Access access,
- const ParameterUsage usage /* = ParameterUsage::kNone */,
+ const core::ParameterUsage usage /* = ParameterUsage::kNone */,
std::optional<tint::BindingPoint> binding_point /* = {} */,
std::optional<uint32_t> location /* = std::nullopt */)
: Base(declaration, type, core::EvaluationStage::kRuntime, address_space, access, nullptr),
diff --git a/src/tint/lang/wgsl/sem/variable.h b/src/tint/lang/wgsl/sem/variable.h
index ce8f4d2..e3ef281 100644
--- a/src/tint/lang/wgsl/sem/variable.h
+++ b/src/tint/lang/wgsl/sem/variable.h
@@ -23,9 +23,9 @@
#include "src/tint/lang/core/access.h"
#include "src/tint/lang/core/address_space.h"
+#include "src/tint/lang/core/parameter_usage.h"
#include "src/tint/lang/core/type/type.h"
#include "src/tint/lang/wgsl/ast/parameter.h"
-#include "src/tint/lang/wgsl/sem/parameter_usage.h"
#include "src/tint/lang/wgsl/sem/value_expression.h"
#include "src/tint/utils/containers/unique_vector.h"
#include "tint/binding_point.h"
@@ -213,7 +213,7 @@
const type::Type* type,
core::AddressSpace address_space,
core::Access access,
- const ParameterUsage usage = ParameterUsage::kNone,
+ const core::ParameterUsage usage = core::ParameterUsage::kNone,
std::optional<tint::BindingPoint> binding_point = {},
std::optional<uint32_t> location = std::nullopt);
@@ -229,7 +229,7 @@
uint32_t Index() const { return index_; }
/// @returns the semantic usage for the parameter
- ParameterUsage Usage() const { return usage_; }
+ core::ParameterUsage Usage() const { return usage_; }
/// @returns the CallTarget owner of this parameter
CallTarget const* Owner() const { return owner_; }
@@ -252,7 +252,7 @@
private:
const uint32_t index_;
- const ParameterUsage usage_;
+ const core::ParameterUsage usage_;
CallTarget const* owner_ = nullptr;
const CastableBase* shadows_ = nullptr;
const std::optional<tint::BindingPoint> binding_point_;