[tint] Rename spirv::ir::Function to spirv::BuiltinFn
To match core::BuiltinFn.
This also moves the class down to the tint::spirv namespace to match
other languages.
Change-Id: Ide6f6b241b19f19bc6a7e372fa8d876435187d45
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/152543
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
diff --git a/src/tint/lang/spirv/BUILD.bazel b/src/tint/lang/spirv/BUILD.bazel
index 9f81589..a2906a0 100644
--- a/src/tint/lang/spirv/BUILD.bazel
+++ b/src/tint/lang/spirv/BUILD.bazel
@@ -23,4 +23,18 @@
load("//src/tint:flags.bzl", "COPTS")
load("@bazel_skylib//lib:selects.bzl", "selects")
+cc_library(
+ name = "spirv",
+ srcs = [
+ "builtin_fn.cc",
+ ],
+ hdrs = [
+ "builtin_fn.h",
+ ],
+ deps = [
+ "//src/tint/utils/traits",
+ ],
+ copts = COPTS,
+ visibility = ["//visibility:public"],
+)
diff --git a/src/tint/lang/spirv/BUILD.cmake b/src/tint/lang/spirv/BUILD.cmake
index c6fc438..1a2be15 100644
--- a/src/tint/lang/spirv/BUILD.cmake
+++ b/src/tint/lang/spirv/BUILD.cmake
@@ -26,3 +26,16 @@
include(lang/spirv/reader/BUILD.cmake)
include(lang/spirv/type/BUILD.cmake)
include(lang/spirv/writer/BUILD.cmake)
+
+################################################################################
+# Target: tint_lang_spirv
+# Kind: lib
+################################################################################
+tint_add_target(tint_lang_spirv lib
+ lang/spirv/builtin_fn.cc
+ lang/spirv/builtin_fn.h
+)
+
+tint_target_add_dependencies(tint_lang_spirv lib
+ tint_utils_traits
+)
diff --git a/src/tint/lang/spirv/BUILD.gn b/src/tint/lang/spirv/BUILD.gn
index b8a448e..0bfa460 100644
--- a/src/tint/lang/spirv/BUILD.gn
+++ b/src/tint/lang/spirv/BUILD.gn
@@ -24,3 +24,11 @@
import("../../../../scripts/tint_overrides_with_defaults.gni")
import("${tint_src_dir}/tint.gni")
+
+libtint_source_set("spirv") {
+ sources = [
+ "builtin_fn.cc",
+ "builtin_fn.h",
+ ]
+ deps = [ "${tint_src_dir}/utils/traits" ]
+}
diff --git a/src/tint/lang/spirv/ir/function.cc b/src/tint/lang/spirv/builtin_fn.cc
similarity index 62%
rename from src/tint/lang/spirv/ir/function.cc
rename to src/tint/lang/spirv/builtin_fn.cc
index bb86b6c..e7b5549 100644
--- a/src/tint/lang/spirv/ir/function.cc
+++ b/src/tint/lang/spirv/builtin_fn.cc
@@ -14,79 +14,79 @@
////////////////////////////////////////////////////////////////////////////////
// File generated by 'tools/src/cmd/gen' using the template:
-// src/tint/lang/spirv/ir/function.cc.tmpl
+// src/tint/lang/spirv/builtin_fn.cc.tmpl
//
// To regenerate run: './tools/run gen'
//
// Do not modify this file directly
////////////////////////////////////////////////////////////////////////////////
-#include "src/tint/lang/spirv/ir/function.h"
+#include "src/tint/lang/spirv/builtin_fn.h"
-namespace tint::spirv::ir {
+namespace tint::spirv {
-const char* str(Function i) {
+const char* str(BuiltinFn i) {
switch (i) {
- case Function::kNone:
+ case BuiltinFn::kNone:
return "<none>";
- case Function::kArrayLength:
+ case BuiltinFn::kArrayLength:
return "spirv.array_length";
- case Function::kAtomicAnd:
+ case BuiltinFn::kAtomicAnd:
return "spirv.atomic_and";
- case Function::kAtomicCompareExchange:
+ case BuiltinFn::kAtomicCompareExchange:
return "spirv.atomic_compare_exchange";
- case Function::kAtomicExchange:
+ case BuiltinFn::kAtomicExchange:
return "spirv.atomic_exchange";
- case Function::kAtomicIadd:
+ case BuiltinFn::kAtomicIadd:
return "spirv.atomic_iadd";
- case Function::kAtomicIsub:
+ case BuiltinFn::kAtomicIsub:
return "spirv.atomic_isub";
- case Function::kAtomicLoad:
+ case BuiltinFn::kAtomicLoad:
return "spirv.atomic_load";
- case Function::kAtomicOr:
+ case BuiltinFn::kAtomicOr:
return "spirv.atomic_or";
- case Function::kAtomicSmax:
+ case BuiltinFn::kAtomicSmax:
return "spirv.atomic_smax";
- case Function::kAtomicSmin:
+ case BuiltinFn::kAtomicSmin:
return "spirv.atomic_smin";
- case Function::kAtomicStore:
+ case BuiltinFn::kAtomicStore:
return "spirv.atomic_store";
- case Function::kAtomicUmax:
+ case BuiltinFn::kAtomicUmax:
return "spirv.atomic_umax";
- case Function::kAtomicUmin:
+ case BuiltinFn::kAtomicUmin:
return "spirv.atomic_umin";
- case Function::kAtomicXor:
+ case BuiltinFn::kAtomicXor:
return "spirv.atomic_xor";
- case Function::kDot:
+ case BuiltinFn::kDot:
return "spirv.dot";
- case Function::kImageDrefGather:
+ case BuiltinFn::kImageDrefGather:
return "spirv.image_dref_gather";
- case Function::kImageFetch:
+ case BuiltinFn::kImageFetch:
return "spirv.image_fetch";
- case Function::kImageGather:
+ case BuiltinFn::kImageGather:
return "spirv.image_gather";
- case Function::kImageQuerySize:
+ case BuiltinFn::kImageQuerySize:
return "spirv.image_query_size";
- case Function::kImageQuerySizeLod:
+ case BuiltinFn::kImageQuerySizeLod:
return "spirv.image_query_size_lod";
- case Function::kImageRead:
+ case BuiltinFn::kImageRead:
return "spirv.image_read";
- case Function::kMatrixTimesMatrix:
+ case BuiltinFn::kMatrixTimesMatrix:
return "spirv.matrix_times_matrix";
- case Function::kMatrixTimesScalar:
+ case BuiltinFn::kMatrixTimesScalar:
return "spirv.matrix_times_scalar";
- case Function::kMatrixTimesVector:
+ case BuiltinFn::kMatrixTimesVector:
return "spirv.matrix_times_vector";
- case Function::kSampledImage:
+ case BuiltinFn::kSampledImage:
return "spirv.sampled_image";
- case Function::kSelect:
+ case BuiltinFn::kSelect:
return "spirv.select";
- case Function::kVectorTimesMatrix:
+ case BuiltinFn::kVectorTimesMatrix:
return "spirv.vector_times_matrix";
- case Function::kVectorTimesScalar:
+ case BuiltinFn::kVectorTimesScalar:
return "spirv.vector_times_scalar";
}
return "<unknown>";
}
-} // namespace tint::spirv::ir
+} // namespace tint::spirv
diff --git a/src/tint/lang/spirv/ir/function.cc.tmpl b/src/tint/lang/spirv/builtin_fn.cc.tmpl
similarity index 67%
rename from src/tint/lang/spirv/ir/function.cc.tmpl
rename to src/tint/lang/spirv/builtin_fn.cc.tmpl
index f745c2a..220d19e 100644
--- a/src/tint/lang/spirv/ir/function.cc.tmpl
+++ b/src/tint/lang/spirv/builtin_fn.cc.tmpl
@@ -1,6 +1,6 @@
{{- /*
--------------------------------------------------------------------------------
-Template file for use with tools/src/cmd/gen to generate function.cc
+Template file for use with tools/src/cmd/gen to generate builtin_fn.cc
To update the generated file, run:
./tools/run gen
@@ -12,20 +12,20 @@
*/ -}}
{{- $I := LoadIntrinsics "src/tint/lang/spirv/spirv.def" -}}
-#include "src/tint/lang/spirv/ir/function.h"
+#include "src/tint/lang/spirv/builtin_fn.h"
-namespace tint::spirv::ir {
+namespace tint::spirv {
-const char* str(Function i) {
+const char* str(BuiltinFn i) {
switch (i) {
- case Function::kNone:
+ case BuiltinFn::kNone:
return "<none>";
{{- range $I.Sem.Builtins }}
- case Function::k{{PascalCase .Name}}:
+ case BuiltinFn::k{{PascalCase .Name}}:
return "spirv.{{.Name}}";
{{- end }}
}
return "<unknown>";
}
-} // namespace tint::spirv::ir
+} // namespace tint::spirv
diff --git a/src/tint/lang/spirv/ir/function.h b/src/tint/lang/spirv/builtin_fn.h
similarity index 84%
rename from src/tint/lang/spirv/ir/function.h
rename to src/tint/lang/spirv/builtin_fn.h
index caeb705..c74eab7 100644
--- a/src/tint/lang/spirv/ir/function.h
+++ b/src/tint/lang/spirv/builtin_fn.h
@@ -14,15 +14,15 @@
////////////////////////////////////////////////////////////////////////////////
// File generated by 'tools/src/cmd/gen' using the template:
-// src/tint/lang/spirv/ir/function.h.tmpl
+// src/tint/lang/spirv/builtin_fn.h.tmpl
//
// To regenerate run: './tools/run gen'
//
// Do not modify this file directly
////////////////////////////////////////////////////////////////////////////////
-#ifndef SRC_TINT_LANG_SPIRV_IR_FUNCTION_H_
-#define SRC_TINT_LANG_SPIRV_IR_FUNCTION_H_
+#ifndef SRC_TINT_LANG_SPIRV_BUILTIN_FN_H_
+#define SRC_TINT_LANG_SPIRV_BUILTIN_FN_H_
#include <cstdint>
#include <string>
@@ -30,10 +30,10 @@
#include "src/tint/utils/traits/traits.h"
// \cond DO_NOT_DOCUMENT
-namespace tint::spirv::ir {
+namespace tint::spirv {
/// Enumerator of all builtin functions
-enum class Function : uint8_t {
+enum class BuiltinFn : uint8_t {
kArrayLength,
kAtomicAnd,
kAtomicCompareExchange,
@@ -67,16 +67,16 @@
/// @returns the name of the builtin function type. The spelling, including
/// case, matches the name in the WGSL spec.
-const char* str(Function i);
+const char* str(BuiltinFn i);
/// Emits the name of the builtin function type. The spelling, including case,
/// matches the name in the WGSL spec.
template <typename STREAM, typename = traits::EnableIfIsOStream<STREAM>>
-auto& operator<<(STREAM& o, Function i) {
+auto& operator<<(STREAM& o, BuiltinFn i) {
return o << str(i);
}
-} // namespace tint::spirv::ir
+} // namespace tint::spirv
// \endcond
-#endif // SRC_TINT_LANG_SPIRV_IR_FUNCTION_H_
+#endif // SRC_TINT_LANG_SPIRV_BUILTIN_FN_H_
diff --git a/src/tint/lang/spirv/ir/function.h.tmpl b/src/tint/lang/spirv/builtin_fn.h.tmpl
similarity index 73%
rename from src/tint/lang/spirv/ir/function.h.tmpl
rename to src/tint/lang/spirv/builtin_fn.h.tmpl
index 987568d..94c6bca 100644
--- a/src/tint/lang/spirv/ir/function.h.tmpl
+++ b/src/tint/lang/spirv/builtin_fn.h.tmpl
@@ -1,6 +1,6 @@
{{- /*
--------------------------------------------------------------------------------
-Template file for use with tools/src/cmd/gen to generate function.h
+Template file for use with tools/src/cmd/gen to generate builtin_fn.h
To update the generated file, run:
./tools/run gen
@@ -13,8 +13,8 @@
{{- $I := LoadIntrinsics "src/tint/lang/spirv/spirv.def" -}}
-#ifndef SRC_TINT_LANG_SPIRV_IR_FUNCTION_H_
-#define SRC_TINT_LANG_SPIRV_IR_FUNCTION_H_
+#ifndef SRC_TINT_LANG_SPIRV_BUILTIN_FN_H_
+#define SRC_TINT_LANG_SPIRV_BUILTIN_FN_H_
#include <cstdint>
#include <string>
@@ -22,10 +22,10 @@
#include "src/tint/utils/traits/traits.h"
// \cond DO_NOT_DOCUMENT
-namespace tint::spirv::ir {
+namespace tint::spirv {
/// Enumerator of all builtin functions
-enum class Function : uint8_t {
+enum class BuiltinFn : uint8_t {
{{- range $I.Sem.Builtins }}
k{{PascalCase .Name}},
{{- end }}
@@ -34,16 +34,16 @@
/// @returns the name of the builtin function type. The spelling, including
/// case, matches the name in the WGSL spec.
-const char* str(Function i);
+const char* str(BuiltinFn i);
/// Emits the name of the builtin function type. The spelling, including case,
/// matches the name in the WGSL spec.
template <typename STREAM, typename = traits::EnableIfIsOStream<STREAM>>
-auto& operator<<(STREAM& o, Function i) {
+auto& operator<<(STREAM& o, BuiltinFn i) {
return o << str(i);
}
-} // namespace tint::spirv::ir
+} // namespace tint::spirv
// \endcond
-#endif // SRC_TINT_LANG_SPIRV_IR_FUNCTION_H_
+#endif // SRC_TINT_LANG_SPIRV_BUILTIN_FN_H_
diff --git a/src/tint/lang/spirv/ir/BUILD.bazel b/src/tint/lang/spirv/ir/BUILD.bazel
index af05ece..7f411b7 100644
--- a/src/tint/lang/spirv/ir/BUILD.bazel
+++ b/src/tint/lang/spirv/ir/BUILD.bazel
@@ -27,13 +27,11 @@
name = "ir",
srcs = [
"builtin_call.cc",
- "function.cc",
"intrinsic.cc",
"intrinsic_call.cc",
],
hdrs = [
"builtin_call.h",
- "function.h",
"intrinsic.h",
"intrinsic_call.h",
],
@@ -44,6 +42,7 @@
"//src/tint/lang/core/intrinsic",
"//src/tint/lang/core/ir",
"//src/tint/lang/core/type",
+ "//src/tint/lang/spirv",
"//src/tint/lang/spirv/intrinsic/data",
"//src/tint/utils/containers",
"//src/tint/utils/diagnostic",
@@ -78,6 +77,7 @@
"//src/tint/lang/core/ir",
"//src/tint/lang/core/ir:test",
"//src/tint/lang/core/type",
+ "//src/tint/lang/spirv",
"//src/tint/lang/spirv/intrinsic/data",
"//src/tint/lang/spirv/ir",
"//src/tint/utils/containers",
diff --git a/src/tint/lang/spirv/ir/BUILD.cmake b/src/tint/lang/spirv/ir/BUILD.cmake
index cb2bfeb..a8726d0 100644
--- a/src/tint/lang/spirv/ir/BUILD.cmake
+++ b/src/tint/lang/spirv/ir/BUILD.cmake
@@ -28,8 +28,6 @@
tint_add_target(tint_lang_spirv_ir lib
lang/spirv/ir/builtin_call.cc
lang/spirv/ir/builtin_call.h
- lang/spirv/ir/function.cc
- lang/spirv/ir/function.h
lang/spirv/ir/intrinsic.cc
lang/spirv/ir/intrinsic.h
lang/spirv/ir/intrinsic_call.cc
@@ -43,6 +41,7 @@
tint_lang_core_intrinsic
tint_lang_core_ir
tint_lang_core_type
+ tint_lang_spirv
tint_lang_spirv_intrinsic_data
tint_utils_containers
tint_utils_diagnostic
@@ -77,6 +76,7 @@
tint_lang_core_ir
tint_lang_core_ir_test
tint_lang_core_type
+ tint_lang_spirv
tint_lang_spirv_intrinsic_data
tint_lang_spirv_ir
tint_utils_containers
diff --git a/src/tint/lang/spirv/ir/BUILD.gn b/src/tint/lang/spirv/ir/BUILD.gn
index b8d7d86..81b4544 100644
--- a/src/tint/lang/spirv/ir/BUILD.gn
+++ b/src/tint/lang/spirv/ir/BUILD.gn
@@ -33,8 +33,6 @@
sources = [
"builtin_call.cc",
"builtin_call.h",
- "function.cc",
- "function.h",
"intrinsic.cc",
"intrinsic.h",
"intrinsic_call.cc",
@@ -47,6 +45,7 @@
"${tint_src_dir}/lang/core/intrinsic",
"${tint_src_dir}/lang/core/ir",
"${tint_src_dir}/lang/core/type",
+ "${tint_src_dir}/lang/spirv",
"${tint_src_dir}/lang/spirv/intrinsic/data",
"${tint_src_dir}/utils/containers",
"${tint_src_dir}/utils/diagnostic",
@@ -80,6 +79,7 @@
"${tint_src_dir}/lang/core/ir",
"${tint_src_dir}/lang/core/ir:unittests",
"${tint_src_dir}/lang/core/type",
+ "${tint_src_dir}/lang/spirv",
"${tint_src_dir}/lang/spirv/intrinsic/data",
"${tint_src_dir}/lang/spirv/ir",
"${tint_src_dir}/utils/containers",
diff --git a/src/tint/lang/spirv/ir/builtin_call.cc b/src/tint/lang/spirv/ir/builtin_call.cc
index 4899ccf..2e077fa 100644
--- a/src/tint/lang/spirv/ir/builtin_call.cc
+++ b/src/tint/lang/spirv/ir/builtin_call.cc
@@ -25,10 +25,10 @@
namespace tint::spirv::ir {
BuiltinCall::BuiltinCall(core::ir::InstructionResult* result,
- Function func,
+ BuiltinFn func,
VectorRef<core::ir::Value*> arguments)
: Base(result, arguments), func_(func) {
- TINT_ASSERT(func != Function::kNone);
+ TINT_ASSERT(func != BuiltinFn::kNone);
}
BuiltinCall::~BuiltinCall() = default;
diff --git a/src/tint/lang/spirv/ir/builtin_call.h b/src/tint/lang/spirv/ir/builtin_call.h
index 235c910..4ae0ee6 100644
--- a/src/tint/lang/spirv/ir/builtin_call.h
+++ b/src/tint/lang/spirv/ir/builtin_call.h
@@ -19,8 +19,8 @@
#include "src/tint/lang/core/intrinsic/table_data.h"
#include "src/tint/lang/core/ir/builtin_call.h"
+#include "src/tint/lang/spirv/builtin_fn.h"
#include "src/tint/lang/spirv/intrinsic/data/data.h"
-#include "src/tint/lang/spirv/ir/function.h"
#include "src/tint/utils/rtti/castable.h"
namespace tint::spirv::ir {
@@ -33,7 +33,7 @@
/// @param func the builtin function
/// @param args the conversion arguments
BuiltinCall(core::ir::InstructionResult* result,
- Function func,
+ BuiltinFn func,
VectorRef<core::ir::Value*> args = tint::Empty);
~BuiltinCall() override;
@@ -41,7 +41,7 @@
BuiltinCall* Clone(core::ir::CloneContext& ctx) override;
/// @returns the builtin function
- Function Func() { return func_; }
+ BuiltinFn Func() { return func_; }
/// @returns the identifier for the function
size_t FuncId() override { return static_cast<size_t>(func_); }
@@ -56,7 +56,7 @@
const core::intrinsic::TableData& TableData() override { return spirv::intrinsic::data::kData; }
private:
- Function func_;
+ BuiltinFn func_;
};
} // namespace tint::spirv::ir
diff --git a/src/tint/lang/spirv/ir/builtin_call_test.cc b/src/tint/lang/spirv/ir/builtin_call_test.cc
index 10cf3b0..d10f5f8 100644
--- a/src/tint/lang/spirv/ir/builtin_call_test.cc
+++ b/src/tint/lang/spirv/ir/builtin_call_test.cc
@@ -25,7 +25,7 @@
using IR_SpirvBuiltinCallTest = core::ir::IRTestHelper;
TEST_F(IR_SpirvBuiltinCallTest, Clone) {
- auto* builtin = b.Call<BuiltinCall>(mod.Types().f32(), Function::kArrayLength, 1_u, 2_u);
+ auto* builtin = b.Call<BuiltinCall>(mod.Types().f32(), BuiltinFn::kArrayLength, 1_u, 2_u);
auto* new_b = clone_ctx.Clone(builtin);
@@ -33,7 +33,7 @@
EXPECT_NE(builtin->Result(), new_b->Result());
EXPECT_EQ(mod.Types().f32(), new_b->Result()->Type());
- EXPECT_EQ(Function::kArrayLength, new_b->Func());
+ EXPECT_EQ(BuiltinFn::kArrayLength, new_b->Func());
auto args = new_b->Args();
EXPECT_EQ(2u, args.Length());
@@ -46,13 +46,13 @@
}
TEST_F(IR_SpirvBuiltinCallTest, CloneNoArgs) {
- auto* builtin = b.Call<BuiltinCall>(mod.Types().f32(), Function::kArrayLength);
+ auto* builtin = b.Call<BuiltinCall>(mod.Types().f32(), BuiltinFn::kArrayLength);
auto* new_b = clone_ctx.Clone(builtin);
EXPECT_NE(builtin->Result(), new_b->Result());
EXPECT_EQ(mod.Types().f32(), new_b->Result()->Type());
- EXPECT_EQ(Function::kArrayLength, new_b->Func());
+ EXPECT_EQ(BuiltinFn::kArrayLength, new_b->Func());
auto args = new_b->Args();
EXPECT_TRUE(args.IsEmpty());
diff --git a/src/tint/lang/spirv/writer/BUILD.bazel b/src/tint/lang/spirv/writer/BUILD.bazel
index e42bedf..4123059 100644
--- a/src/tint/lang/spirv/writer/BUILD.bazel
+++ b/src/tint/lang/spirv/writer/BUILD.bazel
@@ -42,6 +42,7 @@
"//src/tint/lang/core/ir",
"//src/tint/lang/core/ir/transform",
"//src/tint/lang/core/type",
+ "//src/tint/lang/spirv",
"//src/tint/lang/spirv/intrinsic/data",
"//src/tint/lang/spirv/ir",
"//src/tint/lang/wgsl",
@@ -113,6 +114,7 @@
"//src/tint/lang/core/intrinsic/data",
"//src/tint/lang/core/ir",
"//src/tint/lang/core/type",
+ "//src/tint/lang/spirv",
"//src/tint/lang/spirv/intrinsic/data",
"//src/tint/lang/spirv/ir",
"//src/tint/utils/containers",
diff --git a/src/tint/lang/spirv/writer/BUILD.cmake b/src/tint/lang/spirv/writer/BUILD.cmake
index b47843a..d62c4a1 100644
--- a/src/tint/lang/spirv/writer/BUILD.cmake
+++ b/src/tint/lang/spirv/writer/BUILD.cmake
@@ -49,6 +49,7 @@
tint_lang_core_ir
tint_lang_core_ir_transform
tint_lang_core_type
+ tint_lang_spirv
tint_lang_spirv_intrinsic_data
tint_lang_spirv_ir
tint_lang_wgsl
@@ -125,6 +126,7 @@
tint_lang_core_intrinsic_data
tint_lang_core_ir
tint_lang_core_type
+ tint_lang_spirv
tint_lang_spirv_intrinsic_data
tint_lang_spirv_ir
tint_utils_containers
diff --git a/src/tint/lang/spirv/writer/BUILD.gn b/src/tint/lang/spirv/writer/BUILD.gn
index a3dd0b8..a7dd432 100644
--- a/src/tint/lang/spirv/writer/BUILD.gn
+++ b/src/tint/lang/spirv/writer/BUILD.gn
@@ -45,6 +45,7 @@
"${tint_src_dir}/lang/core/ir",
"${tint_src_dir}/lang/core/ir/transform",
"${tint_src_dir}/lang/core/type",
+ "${tint_src_dir}/lang/spirv",
"${tint_src_dir}/lang/spirv/intrinsic/data",
"${tint_src_dir}/lang/spirv/ir",
"${tint_src_dir}/lang/wgsl",
@@ -117,6 +118,7 @@
"${tint_src_dir}/lang/core/intrinsic/data",
"${tint_src_dir}/lang/core/ir",
"${tint_src_dir}/lang/core/type",
+ "${tint_src_dir}/lang/spirv",
"${tint_src_dir}/lang/spirv/intrinsic/data",
"${tint_src_dir}/lang/spirv/ir",
"${tint_src_dir}/utils/containers",
diff --git a/src/tint/lang/spirv/writer/common/BUILD.bazel b/src/tint/lang/spirv/writer/common/BUILD.bazel
index db94b5b..679753a 100644
--- a/src/tint/lang/spirv/writer/common/BUILD.bazel
+++ b/src/tint/lang/spirv/writer/common/BUILD.bazel
@@ -79,6 +79,7 @@
"//src/tint/lang/core/intrinsic/data",
"//src/tint/lang/core/ir",
"//src/tint/lang/core/type",
+ "//src/tint/lang/spirv",
"//src/tint/lang/spirv/intrinsic/data",
"//src/tint/lang/spirv/ir",
"//src/tint/utils/containers",
diff --git a/src/tint/lang/spirv/writer/common/BUILD.cmake b/src/tint/lang/spirv/writer/common/BUILD.cmake
index 9a74b57..8e00115 100644
--- a/src/tint/lang/spirv/writer/common/BUILD.cmake
+++ b/src/tint/lang/spirv/writer/common/BUILD.cmake
@@ -84,6 +84,7 @@
tint_lang_core_intrinsic_data
tint_lang_core_ir
tint_lang_core_type
+ tint_lang_spirv
tint_lang_spirv_intrinsic_data
tint_lang_spirv_ir
tint_utils_containers
diff --git a/src/tint/lang/spirv/writer/common/BUILD.gn b/src/tint/lang/spirv/writer/common/BUILD.gn
index c15d605..17330ef 100644
--- a/src/tint/lang/spirv/writer/common/BUILD.gn
+++ b/src/tint/lang/spirv/writer/common/BUILD.gn
@@ -82,6 +82,7 @@
"${tint_src_dir}/lang/core/intrinsic/data",
"${tint_src_dir}/lang/core/ir",
"${tint_src_dir}/lang/core/type",
+ "${tint_src_dir}/lang/spirv",
"${tint_src_dir}/lang/spirv/intrinsic/data",
"${tint_src_dir}/lang/spirv/ir",
"${tint_src_dir}/utils/containers",
diff --git a/src/tint/lang/spirv/writer/printer/BUILD.bazel b/src/tint/lang/spirv/writer/printer/BUILD.bazel
index 672fdad..6cbbbbe 100644
--- a/src/tint/lang/spirv/writer/printer/BUILD.bazel
+++ b/src/tint/lang/spirv/writer/printer/BUILD.bazel
@@ -40,6 +40,7 @@
"//src/tint/lang/core/intrinsic/data",
"//src/tint/lang/core/ir",
"//src/tint/lang/core/type",
+ "//src/tint/lang/spirv",
"//src/tint/lang/spirv/intrinsic/data",
"//src/tint/lang/spirv/ir",
"//src/tint/lang/spirv/type",
diff --git a/src/tint/lang/spirv/writer/printer/BUILD.cmake b/src/tint/lang/spirv/writer/printer/BUILD.cmake
index e296599..2eccda6 100644
--- a/src/tint/lang/spirv/writer/printer/BUILD.cmake
+++ b/src/tint/lang/spirv/writer/printer/BUILD.cmake
@@ -41,6 +41,7 @@
tint_lang_core_intrinsic_data
tint_lang_core_ir
tint_lang_core_type
+ tint_lang_spirv
tint_lang_spirv_intrinsic_data
tint_lang_spirv_ir
tint_lang_spirv_type
diff --git a/src/tint/lang/spirv/writer/printer/BUILD.gn b/src/tint/lang/spirv/writer/printer/BUILD.gn
index fd1dd71..69b21cd 100644
--- a/src/tint/lang/spirv/writer/printer/BUILD.gn
+++ b/src/tint/lang/spirv/writer/printer/BUILD.gn
@@ -39,6 +39,7 @@
"${tint_src_dir}/lang/core/intrinsic/data",
"${tint_src_dir}/lang/core/ir",
"${tint_src_dir}/lang/core/type",
+ "${tint_src_dir}/lang/spirv",
"${tint_src_dir}/lang/spirv/intrinsic/data",
"${tint_src_dir}/lang/spirv/ir",
"${tint_src_dir}/lang/spirv/type",
diff --git a/src/tint/lang/spirv/writer/printer/printer.cc b/src/tint/lang/spirv/writer/printer/printer.cc
index 33da5de..adb6815 100644
--- a/src/tint/lang/spirv/writer/printer/printer.cc
+++ b/src/tint/lang/spirv/writer/printer/printer.cc
@@ -1036,93 +1036,93 @@
spv::Op op = spv::Op::Max;
switch (builtin->Func()) {
- case spirv::ir::Function::kArrayLength:
+ case spirv::BuiltinFn::kArrayLength:
op = spv::Op::OpArrayLength;
break;
- case spirv::ir::Function::kAtomicIadd:
+ case spirv::BuiltinFn::kAtomicIadd:
op = spv::Op::OpAtomicIAdd;
break;
- case spirv::ir::Function::kAtomicIsub:
+ case spirv::BuiltinFn::kAtomicIsub:
op = spv::Op::OpAtomicISub;
break;
- case spirv::ir::Function::kAtomicAnd:
+ case spirv::BuiltinFn::kAtomicAnd:
op = spv::Op::OpAtomicAnd;
break;
- case spirv::ir::Function::kAtomicCompareExchange:
+ case spirv::BuiltinFn::kAtomicCompareExchange:
op = spv::Op::OpAtomicCompareExchange;
break;
- case spirv::ir::Function::kAtomicExchange:
+ case spirv::BuiltinFn::kAtomicExchange:
op = spv::Op::OpAtomicExchange;
break;
- case spirv::ir::Function::kAtomicLoad:
+ case spirv::BuiltinFn::kAtomicLoad:
op = spv::Op::OpAtomicLoad;
break;
- case spirv::ir::Function::kAtomicOr:
+ case spirv::BuiltinFn::kAtomicOr:
op = spv::Op::OpAtomicOr;
break;
- case spirv::ir::Function::kAtomicSmax:
+ case spirv::BuiltinFn::kAtomicSmax:
op = spv::Op::OpAtomicSMax;
break;
- case spirv::ir::Function::kAtomicSmin:
+ case spirv::BuiltinFn::kAtomicSmin:
op = spv::Op::OpAtomicSMin;
break;
- case spirv::ir::Function::kAtomicStore:
+ case spirv::BuiltinFn::kAtomicStore:
op = spv::Op::OpAtomicStore;
break;
- case spirv::ir::Function::kAtomicUmax:
+ case spirv::BuiltinFn::kAtomicUmax:
op = spv::Op::OpAtomicUMax;
break;
- case spirv::ir::Function::kAtomicUmin:
+ case spirv::BuiltinFn::kAtomicUmin:
op = spv::Op::OpAtomicUMin;
break;
- case spirv::ir::Function::kAtomicXor:
+ case spirv::BuiltinFn::kAtomicXor:
op = spv::Op::OpAtomicXor;
break;
- case spirv::ir::Function::kDot:
+ case spirv::BuiltinFn::kDot:
op = spv::Op::OpDot;
break;
- case spirv::ir::Function::kImageDrefGather:
+ case spirv::BuiltinFn::kImageDrefGather:
op = spv::Op::OpImageDrefGather;
break;
- case spirv::ir::Function::kImageFetch:
+ case spirv::BuiltinFn::kImageFetch:
op = spv::Op::OpImageFetch;
break;
- case spirv::ir::Function::kImageGather:
+ case spirv::BuiltinFn::kImageGather:
op = spv::Op::OpImageGather;
break;
- case spirv::ir::Function::kImageQuerySize:
+ case spirv::BuiltinFn::kImageQuerySize:
module_.PushCapability(SpvCapabilityImageQuery);
op = spv::Op::OpImageQuerySize;
break;
- case spirv::ir::Function::kImageQuerySizeLod:
+ case spirv::BuiltinFn::kImageQuerySizeLod:
module_.PushCapability(SpvCapabilityImageQuery);
op = spv::Op::OpImageQuerySizeLod;
break;
- case spirv::ir::Function::kImageRead:
+ case spirv::BuiltinFn::kImageRead:
op = spv::Op::OpImageRead;
break;
- case spirv::ir::Function::kMatrixTimesMatrix:
+ case spirv::BuiltinFn::kMatrixTimesMatrix:
op = spv::Op::OpMatrixTimesMatrix;
break;
- case spirv::ir::Function::kMatrixTimesScalar:
+ case spirv::BuiltinFn::kMatrixTimesScalar:
op = spv::Op::OpMatrixTimesScalar;
break;
- case spirv::ir::Function::kMatrixTimesVector:
+ case spirv::BuiltinFn::kMatrixTimesVector:
op = spv::Op::OpMatrixTimesVector;
break;
- case spirv::ir::Function::kSampledImage:
+ case spirv::BuiltinFn::kSampledImage:
op = spv::Op::OpSampledImage;
break;
- case spirv::ir::Function::kSelect:
+ case spirv::BuiltinFn::kSelect:
op = spv::Op::OpSelect;
break;
- case spirv::ir::Function::kVectorTimesMatrix:
+ case spirv::BuiltinFn::kVectorTimesMatrix:
op = spv::Op::OpVectorTimesMatrix;
break;
- case spirv::ir::Function::kVectorTimesScalar:
+ case spirv::BuiltinFn::kVectorTimesScalar:
op = spv::Op::OpVectorTimesScalar;
break;
- case spirv::ir::Function::kNone:
+ case spirv::BuiltinFn::kNone:
TINT_ICE() << "undefined spirv ir function";
return;
}
diff --git a/src/tint/lang/spirv/writer/raise/BUILD.bazel b/src/tint/lang/spirv/writer/raise/BUILD.bazel
index 2f3e484..6c76444 100644
--- a/src/tint/lang/spirv/writer/raise/BUILD.bazel
+++ b/src/tint/lang/spirv/writer/raise/BUILD.bazel
@@ -53,6 +53,7 @@
"//src/tint/lang/core/ir",
"//src/tint/lang/core/ir/transform",
"//src/tint/lang/core/type",
+ "//src/tint/lang/spirv",
"//src/tint/lang/spirv/intrinsic/data",
"//src/tint/lang/spirv/ir",
"//src/tint/lang/spirv/type",
diff --git a/src/tint/lang/spirv/writer/raise/BUILD.cmake b/src/tint/lang/spirv/writer/raise/BUILD.cmake
index 5462889..7e56366 100644
--- a/src/tint/lang/spirv/writer/raise/BUILD.cmake
+++ b/src/tint/lang/spirv/writer/raise/BUILD.cmake
@@ -54,6 +54,7 @@
tint_lang_core_ir
tint_lang_core_ir_transform
tint_lang_core_type
+ tint_lang_spirv
tint_lang_spirv_intrinsic_data
tint_lang_spirv_ir
tint_lang_spirv_type
diff --git a/src/tint/lang/spirv/writer/raise/BUILD.gn b/src/tint/lang/spirv/writer/raise/BUILD.gn
index b62e46f..db76051 100644
--- a/src/tint/lang/spirv/writer/raise/BUILD.gn
+++ b/src/tint/lang/spirv/writer/raise/BUILD.gn
@@ -56,6 +56,7 @@
"${tint_src_dir}/lang/core/ir",
"${tint_src_dir}/lang/core/ir/transform",
"${tint_src_dir}/lang/core/type",
+ "${tint_src_dir}/lang/spirv",
"${tint_src_dir}/lang/spirv/intrinsic/data",
"${tint_src_dir}/lang/spirv/ir",
"${tint_src_dir}/lang/spirv/type",
diff --git a/src/tint/lang/spirv/writer/raise/builtin_polyfill.cc b/src/tint/lang/spirv/writer/raise/builtin_polyfill.cc
index c42146e..4cd2cbe 100644
--- a/src/tint/lang/spirv/writer/raise/builtin_polyfill.cc
+++ b/src/tint/lang/spirv/writer/raise/builtin_polyfill.cc
@@ -196,7 +196,7 @@
// Replace the builtin call with a call to the spirv.array_length intrinsic.
auto* call = b.Call<spirv::ir::BuiltinCall>(
- builtin->Result()->Type(), spirv::ir::Function::kArrayLength,
+ builtin->Result()->Type(), spirv::BuiltinFn::kArrayLength,
Vector{access->Object(), Literal(u32(const_idx->Value()->ValueAs<uint32_t>()))});
call->InsertBefore(builtin);
return call->Result();
@@ -223,8 +223,8 @@
auto* memory_semantics = b.Constant(u32(SpvMemorySemanticsMaskNone));
// Helper to build the builtin call with the common operands.
- auto build = [&](const core::type::Type* type, enum spirv::ir::Function intrinsic) {
- return b.Call<spirv::ir::BuiltinCall>(type, intrinsic, pointer, memory,
+ auto build = [&](const core::type::Type* type, enum spirv::BuiltinFn builtin_fn) {
+ return b.Call<spirv::ir::BuiltinCall>(type, builtin_fn, pointer, memory,
memory_semantics);
};
@@ -232,18 +232,18 @@
core::ir::Call* call = nullptr;
switch (builtin->Func()) {
case core::BuiltinFn::kAtomicAdd:
- call = build(result_ty, spirv::ir::Function::kAtomicIadd);
+ call = build(result_ty, spirv::BuiltinFn::kAtomicIadd);
call->AppendArg(builtin->Args()[1]);
break;
case core::BuiltinFn::kAtomicAnd:
- call = build(result_ty, spirv::ir::Function::kAtomicAnd);
+ call = build(result_ty, spirv::BuiltinFn::kAtomicAnd);
call->AppendArg(builtin->Args()[1]);
break;
case core::BuiltinFn::kAtomicCompareExchangeWeak: {
auto* cmp = builtin->Args()[1];
auto* value = builtin->Args()[2];
auto* int_ty = value->Type();
- call = build(int_ty, spirv::ir::Function::kAtomicCompareExchange);
+ call = build(int_ty, spirv::BuiltinFn::kAtomicCompareExchange);
call->AppendArg(memory_semantics);
call->AppendArg(value);
call->AppendArg(cmp);
@@ -261,42 +261,42 @@
break;
}
case core::BuiltinFn::kAtomicExchange:
- call = build(result_ty, spirv::ir::Function::kAtomicExchange);
+ call = build(result_ty, spirv::BuiltinFn::kAtomicExchange);
call->AppendArg(builtin->Args()[1]);
break;
case core::BuiltinFn::kAtomicLoad:
- call = build(result_ty, spirv::ir::Function::kAtomicLoad);
+ call = build(result_ty, spirv::BuiltinFn::kAtomicLoad);
break;
case core::BuiltinFn::kAtomicOr:
- call = build(result_ty, spirv::ir::Function::kAtomicOr);
+ call = build(result_ty, spirv::BuiltinFn::kAtomicOr);
call->AppendArg(builtin->Args()[1]);
break;
case core::BuiltinFn::kAtomicMax:
if (result_ty->is_signed_integer_scalar()) {
- call = build(result_ty, spirv::ir::Function::kAtomicSmax);
+ call = build(result_ty, spirv::BuiltinFn::kAtomicSmax);
} else {
- call = build(result_ty, spirv::ir::Function::kAtomicUmax);
+ call = build(result_ty, spirv::BuiltinFn::kAtomicUmax);
}
call->AppendArg(builtin->Args()[1]);
break;
case core::BuiltinFn::kAtomicMin:
if (result_ty->is_signed_integer_scalar()) {
- call = build(result_ty, spirv::ir::Function::kAtomicSmin);
+ call = build(result_ty, spirv::BuiltinFn::kAtomicSmin);
} else {
- call = build(result_ty, spirv::ir::Function::kAtomicUmin);
+ call = build(result_ty, spirv::BuiltinFn::kAtomicUmin);
}
call->AppendArg(builtin->Args()[1]);
break;
case core::BuiltinFn::kAtomicStore:
- call = build(result_ty, spirv::ir::Function::kAtomicStore);
+ call = build(result_ty, spirv::BuiltinFn::kAtomicStore);
call->AppendArg(builtin->Args()[1]);
break;
case core::BuiltinFn::kAtomicSub:
- call = build(result_ty, spirv::ir::Function::kAtomicIsub);
+ call = build(result_ty, spirv::BuiltinFn::kAtomicIsub);
call->AppendArg(builtin->Args()[1]);
break;
case core::BuiltinFn::kAtomicXor:
- call = build(result_ty, spirv::ir::Function::kAtomicXor);
+ call = build(result_ty, spirv::BuiltinFn::kAtomicXor);
call->AppendArg(builtin->Args()[1]);
break;
default:
@@ -338,7 +338,7 @@
// Replace the builtin call with a call to the spirv.dot intrinsic.
auto args = Vector<core::ir::Value*, 4>(builtin->Args());
auto* call = b.Call<spirv::ir::BuiltinCall>(builtin->Result()->Type(),
- spirv::ir::Function::kDot, std::move(args));
+ spirv::BuiltinFn::kDot, std::move(args));
call->InsertBefore(builtin);
return call->Result();
}
@@ -369,7 +369,7 @@
// Replace the builtin call with a call to the spirv.select intrinsic.
auto* call = b.Call<spirv::ir::BuiltinCall>(builtin->Result()->Type(),
- spirv::ir::Function::kSelect, std::move(args));
+ spirv::BuiltinFn::kSelect, std::move(args));
call->InsertBefore(builtin);
return call->Result();
}
@@ -480,7 +480,7 @@
// Use OpSampledImage to create an OpTypeSampledImage object.
auto* sampled_image = b.Call<spirv::ir::BuiltinCall>(ty.Get<type::SampledImage>(texture_ty),
- spirv::ir::Function::kSampledImage,
+ spirv::BuiltinFn::kSampledImage,
Vector{texture, sampler});
sampled_image->InsertBefore(builtin);
@@ -588,7 +588,7 @@
// Use OpSampledImage to create an OpTypeSampledImage object.
auto* sampled_image = b.Call<spirv::ir::BuiltinCall>(ty.Get<type::SampledImage>(texture_ty),
- spirv::ir::Function::kSampledImage,
+ spirv::BuiltinFn::kSampledImage,
Vector{texture, sampler});
sampled_image->InsertBefore(builtin);
@@ -599,16 +599,16 @@
}
// Determine which SPIR-V function to use and which optional image operands are needed.
- enum spirv::ir::Function function;
+ enum spirv::BuiltinFn function;
core::ir::Value* depth = nullptr;
ImageOperands operands;
switch (builtin->Func()) {
case core::BuiltinFn::kTextureGather:
- function = spirv::ir::Function::kImageGather;
+ function = spirv::BuiltinFn::kImageGather;
operands.offset = next_arg();
break;
case core::BuiltinFn::kTextureGatherCompare:
- function = spirv::ir::Function::kImageDrefGather;
+ function = spirv::BuiltinFn::kImageDrefGather;
depth = next_arg();
operands.offset = next_arg();
break;
@@ -682,8 +682,8 @@
if (expects_scalar_result) {
result_ty = ty.vec4(result_ty);
}
- auto kind = texture_ty->Is<core::type::StorageTexture>() ? spirv::ir::Function::kImageRead
- : spirv::ir::Function::kImageFetch;
+ auto kind = texture_ty->Is<core::type::StorageTexture>() ? spirv::BuiltinFn::kImageRead
+ : spirv::BuiltinFn::kImageFetch;
auto* texture_call =
b.Call<spirv::ir::BuiltinCall>(result_ty, kind, std::move(builtin_args));
texture_call->InsertBefore(builtin);
@@ -755,13 +755,13 @@
function_args.Push(texture);
// Determine which SPIR-V function to use, and add the Lod argument if needed.
- enum spirv::ir::Function function;
+ enum spirv::BuiltinFn function;
if (texture_ty
->IsAnyOf<core::type::MultisampledTexture, core::type::DepthMultisampledTexture,
core::type::StorageTexture>()) {
- function = spirv::ir::Function::kImageQuerySize;
+ function = spirv::BuiltinFn::kImageQuerySize;
} else {
- function = spirv::ir::Function::kImageQuerySizeLod;
+ function = spirv::BuiltinFn::kImageQuerySizeLod;
if (auto* lod = next_arg()) {
function_args.Push(lod);
} else {
@@ -805,13 +805,13 @@
function_args.Push(texture);
// Determine which SPIR-V function to use, and add the Lod argument if needed.
- enum spirv::ir::Function function;
+ enum spirv::BuiltinFn function;
if (texture_ty
->IsAnyOf<core::type::MultisampledTexture, core::type::DepthMultisampledTexture,
core::type::StorageTexture>()) {
- function = spirv::ir::Function::kImageQuerySize;
+ function = spirv::BuiltinFn::kImageQuerySize;
} else {
- function = spirv::ir::Function::kImageQuerySizeLod;
+ function = spirv::BuiltinFn::kImageQuerySizeLod;
function_args.Push(b.Constant(0_u));
}
diff --git a/src/tint/lang/spirv/writer/raise/expand_implicit_splats.cc b/src/tint/lang/spirv/writer/raise/expand_implicit_splats.cc
index cedf944..775bf53 100644
--- a/src/tint/lang/spirv/writer/raise/expand_implicit_splats.cc
+++ b/src/tint/lang/spirv/writer/raise/expand_implicit_splats.cc
@@ -19,8 +19,8 @@
#include "src/tint/lang/core/ir/builder.h"
#include "src/tint/lang/core/ir/module.h"
#include "src/tint/lang/core/ir/validator.h"
+#include "src/tint/lang/spirv/builtin_fn.h"
#include "src/tint/lang/spirv/ir/builtin_call.h"
-#include "src/tint/lang/spirv/ir/function.h"
using namespace tint::core::number_suffixes; // NOLINT
@@ -91,7 +91,7 @@
if (result_ty->is_float_vector() && binary->Kind() == core::ir::Binary::Kind::kMultiply) {
// Use OpVectorTimesScalar for floating point multiply.
auto* vts =
- b.Call<spirv::ir::BuiltinCall>(result_ty, spirv::ir::Function::kVectorTimesScalar);
+ b.Call<spirv::ir::BuiltinCall>(result_ty, spirv::BuiltinFn::kVectorTimesScalar);
if (binary->LHS()->Type()->Is<core::type::Scalar>()) {
vts->AppendArg(binary->RHS());
vts->AppendArg(binary->LHS());
diff --git a/src/tint/lang/spirv/writer/raise/handle_matrix_arithmetic.cc b/src/tint/lang/spirv/writer/raise/handle_matrix_arithmetic.cc
index 0a5dd30..30322ec 100644
--- a/src/tint/lang/spirv/writer/raise/handle_matrix_arithmetic.cc
+++ b/src/tint/lang/spirv/writer/raise/handle_matrix_arithmetic.cc
@@ -99,21 +99,21 @@
if (lhs_ty->Is<core::type::Matrix>()) {
if (rhs_ty->Is<core::type::Scalar>()) {
replace(b.Call<spirv::ir::BuiltinCall>(
- ty, spirv::ir::Function::kMatrixTimesScalar, lhs, rhs));
+ ty, spirv::BuiltinFn::kMatrixTimesScalar, lhs, rhs));
} else if (rhs_ty->Is<core::type::Vector>()) {
replace(b.Call<spirv::ir::BuiltinCall>(
- ty, spirv::ir::Function::kMatrixTimesVector, lhs, rhs));
+ ty, spirv::BuiltinFn::kMatrixTimesVector, lhs, rhs));
} else if (rhs_ty->Is<core::type::Matrix>()) {
replace(b.Call<spirv::ir::BuiltinCall>(
- ty, spirv::ir::Function::kMatrixTimesMatrix, lhs, rhs));
+ ty, spirv::BuiltinFn::kMatrixTimesMatrix, lhs, rhs));
}
} else {
if (lhs_ty->Is<core::type::Scalar>()) {
replace(b.Call<spirv::ir::BuiltinCall>(
- ty, spirv::ir::Function::kMatrixTimesScalar, rhs, lhs));
+ ty, spirv::BuiltinFn::kMatrixTimesScalar, rhs, lhs));
} else if (lhs_ty->Is<core::type::Vector>()) {
replace(b.Call<spirv::ir::BuiltinCall>(
- ty, spirv::ir::Function::kVectorTimesMatrix, lhs, rhs));
+ ty, spirv::BuiltinFn::kVectorTimesMatrix, lhs, rhs));
}
}
break;