[tint] Move intrinsics.def to lang/core/core.def
And add template support for loading different definition files.
Change-Id: I37d9b2486633fdd2a829686fa339ff566539e62c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/144120
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
diff --git a/src/tint/lang/core/builtin/access.cc.tmpl b/src/tint/lang/core/builtin/access.cc.tmpl
index 06f12cf..c1e5332 100644
--- a/src/tint/lang/core/builtin/access.cc.tmpl
+++ b/src/tint/lang/core/builtin/access.cc.tmpl
@@ -11,8 +11,9 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
-{{- $enum := (Sem.Enum "access") -}}
+{{- $enum := ($I.Sem.Enum "access") -}}
#include "src/tint/lang/core/builtin/access.h"
diff --git a/src/tint/lang/core/builtin/access.h.tmpl b/src/tint/lang/core/builtin/access.h.tmpl
index 8d28e7d..beda7fd 100644
--- a/src/tint/lang/core/builtin/access.h.tmpl
+++ b/src/tint/lang/core/builtin/access.h.tmpl
@@ -11,8 +11,9 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
-{{- $enum := (Sem.Enum "access") -}}
+{{- $enum := ($I.Sem.Enum "access") -}}
#ifndef SRC_TINT_LANG_CORE_BUILTIN_ACCESS_H_
#define SRC_TINT_LANG_CORE_BUILTIN_ACCESS_H_
diff --git a/src/tint/lang/core/builtin/access_bench.cc.tmpl b/src/tint/lang/core/builtin/access_bench.cc.tmpl
index 7e8265c..b883b09 100644
--- a/src/tint/lang/core/builtin/access_bench.cc.tmpl
+++ b/src/tint/lang/core/builtin/access_bench.cc.tmpl
@@ -11,8 +11,9 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
-{{- $enum := (Sem.Enum "access") -}}
+{{- $enum := ($I.Sem.Enum "access") -}}
#include "src/tint/lang/core/builtin/access.h"
diff --git a/src/tint/lang/core/builtin/access_test.cc.tmpl b/src/tint/lang/core/builtin/access_test.cc.tmpl
index 76bb9d6..244e60f 100644
--- a/src/tint/lang/core/builtin/access_test.cc.tmpl
+++ b/src/tint/lang/core/builtin/access_test.cc.tmpl
@@ -11,8 +11,9 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
-{{- $enum := (Sem.Enum "access") -}}
+{{- $enum := ($I.Sem.Enum "access") -}}
#include "src/tint/lang/core/builtin/access.h"
diff --git a/src/tint/lang/core/builtin/address_space.cc.tmpl b/src/tint/lang/core/builtin/address_space.cc.tmpl
index b82e734..c7b6bf6 100644
--- a/src/tint/lang/core/builtin/address_space.cc.tmpl
+++ b/src/tint/lang/core/builtin/address_space.cc.tmpl
@@ -11,8 +11,9 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
-{{- $enum := (Sem.Enum "address_space") -}}
+{{- $enum := ($I.Sem.Enum "address_space") -}}
#include "src/tint/lang/core/builtin/address_space.h"
diff --git a/src/tint/lang/core/builtin/address_space.h.tmpl b/src/tint/lang/core/builtin/address_space.h.tmpl
index 8c9c918..979e27c 100644
--- a/src/tint/lang/core/builtin/address_space.h.tmpl
+++ b/src/tint/lang/core/builtin/address_space.h.tmpl
@@ -11,8 +11,9 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
-{{- $enum := (Sem.Enum "address_space") -}}
+{{- $enum := ($I.Sem.Enum "address_space") -}}
#ifndef SRC_TINT_LANG_CORE_BUILTIN_ADDRESS_SPACE_H_
#define SRC_TINT_LANG_CORE_BUILTIN_ADDRESS_SPACE_H_
diff --git a/src/tint/lang/core/builtin/address_space_bench.cc.tmpl b/src/tint/lang/core/builtin/address_space_bench.cc.tmpl
index d51116b..6969fe3 100644
--- a/src/tint/lang/core/builtin/address_space_bench.cc.tmpl
+++ b/src/tint/lang/core/builtin/address_space_bench.cc.tmpl
@@ -11,8 +11,9 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
-{{- $enum := (Sem.Enum "address_space") -}}
+{{- $enum := ($I.Sem.Enum "address_space") -}}
#include "src/tint/lang/core/builtin/address_space.h"
diff --git a/src/tint/lang/core/builtin/address_space_test.cc.tmpl b/src/tint/lang/core/builtin/address_space_test.cc.tmpl
index 0364c15..717e24c 100644
--- a/src/tint/lang/core/builtin/address_space_test.cc.tmpl
+++ b/src/tint/lang/core/builtin/address_space_test.cc.tmpl
@@ -11,8 +11,9 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
-{{- $enum := (Sem.Enum "address_space") -}}
+{{- $enum := ($I.Sem.Enum "address_space") -}}
#include "src/tint/lang/core/builtin/address_space.h"
diff --git a/src/tint/lang/core/builtin/attribute.cc.tmpl b/src/tint/lang/core/builtin/attribute.cc.tmpl
index 667a1eb..3868cfd 100644
--- a/src/tint/lang/core/builtin/attribute.cc.tmpl
+++ b/src/tint/lang/core/builtin/attribute.cc.tmpl
@@ -11,8 +11,9 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
-{{- $enum := (Sem.Enum "attribute") -}}
+{{- $enum := ($I.Sem.Enum "attribute") -}}
#include "src/tint/lang/core/builtin/attribute.h"
diff --git a/src/tint/lang/core/builtin/attribute.h.tmpl b/src/tint/lang/core/builtin/attribute.h.tmpl
index 02def09..df6f563 100644
--- a/src/tint/lang/core/builtin/attribute.h.tmpl
+++ b/src/tint/lang/core/builtin/attribute.h.tmpl
@@ -11,8 +11,9 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
-{{- $enum := (Sem.Enum "attribute") -}}
+{{- $enum := ($I.Sem.Enum "attribute") -}}
#ifndef SRC_TINT_LANG_CORE_BUILTIN_ATTRIBUTE_H_
#define SRC_TINT_LANG_CORE_BUILTIN_ATTRIBUTE_H_
diff --git a/src/tint/lang/core/builtin/attribute_bench.cc.tmpl b/src/tint/lang/core/builtin/attribute_bench.cc.tmpl
index 677ae24..b523518 100644
--- a/src/tint/lang/core/builtin/attribute_bench.cc.tmpl
+++ b/src/tint/lang/core/builtin/attribute_bench.cc.tmpl
@@ -11,8 +11,9 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
-{{- $enum := (Sem.Enum "attribute") -}}
+{{- $enum := ($I.Sem.Enum "attribute") -}}
#include "src/tint/lang/core/builtin/attribute.h"
diff --git a/src/tint/lang/core/builtin/attribute_test.cc.tmpl b/src/tint/lang/core/builtin/attribute_test.cc.tmpl
index dbcc51b..ae8eb01 100644
--- a/src/tint/lang/core/builtin/attribute_test.cc.tmpl
+++ b/src/tint/lang/core/builtin/attribute_test.cc.tmpl
@@ -11,8 +11,9 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
-{{- $enum := (Sem.Enum "attribute") -}}
+{{- $enum := ($I.Sem.Enum "attribute") -}}
#include "src/tint/lang/core/builtin/attribute.h"
diff --git a/src/tint/lang/core/builtin/builtin.cc.tmpl b/src/tint/lang/core/builtin/builtin.cc.tmpl
index efdb480..ca3c9a6 100644
--- a/src/tint/lang/core/builtin/builtin.cc.tmpl
+++ b/src/tint/lang/core/builtin/builtin.cc.tmpl
@@ -11,8 +11,9 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
-{{- $enum := (Sem.Enum "builtin_type") -}}
+{{- $enum := ($I.Sem.Enum "builtin_type") -}}
{{- Eval "OverrideEnumName" "Enum" $enum "Name" "Builtin" -}}
#include "src/tint/lang/core/builtin/builtin.h"
diff --git a/src/tint/lang/core/builtin/builtin.h.tmpl b/src/tint/lang/core/builtin/builtin.h.tmpl
index 308fdbb..8fb4a3a 100644
--- a/src/tint/lang/core/builtin/builtin.h.tmpl
+++ b/src/tint/lang/core/builtin/builtin.h.tmpl
@@ -11,8 +11,9 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
-{{- $enum := (Sem.Enum "builtin_type") -}}
+{{- $enum := ($I.Sem.Enum "builtin_type") -}}
{{- Eval "OverrideEnumName" "Enum" $enum "Name" "Builtin" -}}
#ifndef SRC_TINT_LANG_CORE_BUILTIN_BUILTIN_H_
diff --git a/src/tint/lang/core/builtin/builtin_bench.cc.tmpl b/src/tint/lang/core/builtin/builtin_bench.cc.tmpl
index 69e8f22..aa4f6ef 100644
--- a/src/tint/lang/core/builtin/builtin_bench.cc.tmpl
+++ b/src/tint/lang/core/builtin/builtin_bench.cc.tmpl
@@ -11,8 +11,9 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
-{{- $enum := (Sem.Enum "builtin_type") -}}
+{{- $enum := ($I.Sem.Enum "builtin_type") -}}
{{- Eval "OverrideEnumName" "Enum" $enum "Name" "Builtin" -}}
#include "src/tint/lang/core/builtin/builtin.h"
diff --git a/src/tint/lang/core/builtin/builtin_test.cc.tmpl b/src/tint/lang/core/builtin/builtin_test.cc.tmpl
index b893c64..7a6959b 100644
--- a/src/tint/lang/core/builtin/builtin_test.cc.tmpl
+++ b/src/tint/lang/core/builtin/builtin_test.cc.tmpl
@@ -11,8 +11,9 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
-{{- $enum := (Sem.Enum "builtin_type") -}}
+{{- $enum := ($I.Sem.Enum "builtin_type") -}}
{{- Eval "OverrideEnumName" "Enum" $enum "Name" "Builtin" -}}
#include "src/tint/lang/core/builtin/builtin.h"
diff --git a/src/tint/lang/core/builtin/builtin_value.cc.tmpl b/src/tint/lang/core/builtin/builtin_value.cc.tmpl
index df4ba2a..390bed1 100644
--- a/src/tint/lang/core/builtin/builtin_value.cc.tmpl
+++ b/src/tint/lang/core/builtin/builtin_value.cc.tmpl
@@ -8,8 +8,9 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
-{{- $enum := (Sem.Enum "builtin_value") -}}
+{{- $enum := ($I.Sem.Enum "builtin_value") -}}
#include "src/tint/lang/core/builtin/builtin_value.h"
diff --git a/src/tint/lang/core/builtin/builtin_value.h.tmpl b/src/tint/lang/core/builtin/builtin_value.h.tmpl
index 96643ed..cc5edda 100644
--- a/src/tint/lang/core/builtin/builtin_value.h.tmpl
+++ b/src/tint/lang/core/builtin/builtin_value.h.tmpl
@@ -8,8 +8,9 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
-{{- $enum := (Sem.Enum "builtin_value") -}}
+{{- $enum := ($I.Sem.Enum "builtin_value") -}}
#ifndef SRC_TINT_LANG_CORE_BUILTIN_BUILTIN_VALUE_H_
#define SRC_TINT_LANG_CORE_BUILTIN_BUILTIN_VALUE_H_
diff --git a/src/tint/lang/core/builtin/builtin_value_bench.cc.tmpl b/src/tint/lang/core/builtin/builtin_value_bench.cc.tmpl
index 935f74f..5f95d49 100644
--- a/src/tint/lang/core/builtin/builtin_value_bench.cc.tmpl
+++ b/src/tint/lang/core/builtin/builtin_value_bench.cc.tmpl
@@ -8,8 +8,9 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
-{{- $enum := (Sem.Enum "builtin_value") -}}
+{{- $enum := ($I.Sem.Enum "builtin_value") -}}
#include "src/tint/lang/core/builtin/builtin_value.h"
diff --git a/src/tint/lang/core/builtin/builtin_value_test.cc.tmpl b/src/tint/lang/core/builtin/builtin_value_test.cc.tmpl
index a19306b..f0beafb 100644
--- a/src/tint/lang/core/builtin/builtin_value_test.cc.tmpl
+++ b/src/tint/lang/core/builtin/builtin_value_test.cc.tmpl
@@ -8,8 +8,9 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
-{{- $enum := (Sem.Enum "builtin_value") -}}
+{{- $enum := ($I.Sem.Enum "builtin_value") -}}
#include "src/tint/lang/core/builtin/builtin_value.h"
diff --git a/src/tint/lang/core/builtin/diagnostic_rule.cc.tmpl b/src/tint/lang/core/builtin/diagnostic_rule.cc.tmpl
index 5f40e7c..32e16e8 100644
--- a/src/tint/lang/core/builtin/diagnostic_rule.cc.tmpl
+++ b/src/tint/lang/core/builtin/diagnostic_rule.cc.tmpl
@@ -8,6 +8,7 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
#include "src/tint/lang/core/builtin/diagnostic_rule.h"
@@ -18,12 +19,12 @@
namespace tint::builtin {
-{{ Eval "ParseEnum" (Sem.Enum "core_diagnostic_rule")}}
+{{ Eval "ParseEnum" ($I.Sem.Enum "core_diagnostic_rule")}}
-{{ Eval "EnumOStream" (Sem.Enum "core_diagnostic_rule")}}
+{{ Eval "EnumOStream" ($I.Sem.Enum "core_diagnostic_rule")}}
-{{ Eval "ParseEnum" (Sem.Enum "chromium_diagnostic_rule")}}
+{{ Eval "ParseEnum" ($I.Sem.Enum "chromium_diagnostic_rule")}}
-{{ Eval "EnumOStream" (Sem.Enum "chromium_diagnostic_rule")}}
+{{ Eval "EnumOStream" ($I.Sem.Enum "chromium_diagnostic_rule")}}
} // namespace tint::builtin
diff --git a/src/tint/lang/core/builtin/diagnostic_rule.h.tmpl b/src/tint/lang/core/builtin/diagnostic_rule.h.tmpl
index 8b6de0e..b6ffee3 100644
--- a/src/tint/lang/core/builtin/diagnostic_rule.h.tmpl
+++ b/src/tint/lang/core/builtin/diagnostic_rule.h.tmpl
@@ -8,6 +8,7 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
#ifndef SRC_TINT_LANG_CORE_BUILTIN_DIAGNOSTIC_RULE_H_
@@ -21,10 +22,10 @@
namespace tint::builtin {
/// WGSL core diagnostic rules.
-{{ Eval "DeclareEnum" (Sem.Enum "core_diagnostic_rule") }}
+{{ Eval "DeclareEnum" ($I.Sem.Enum "core_diagnostic_rule") }}
/// Chromium-specific diagnostic rules.
-{{ Eval "DeclareEnum" (Sem.Enum "chromium_diagnostic_rule") }}
+{{ Eval "DeclareEnum" ($I.Sem.Enum "chromium_diagnostic_rule") }}
/// All diagnostic rules understood by Tint.
using DiagnosticRule = std::variant<CoreDiagnosticRule, ChromiumDiagnosticRule>;
diff --git a/src/tint/lang/core/builtin/diagnostic_rule_bench.cc.tmpl b/src/tint/lang/core/builtin/diagnostic_rule_bench.cc.tmpl
index 9136599..dc0afdd 100644
--- a/src/tint/lang/core/builtin/diagnostic_rule_bench.cc.tmpl
+++ b/src/tint/lang/core/builtin/diagnostic_rule_bench.cc.tmpl
@@ -8,6 +8,7 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
#include "src/tint/lang/core/builtin/diagnostic_rule.h"
@@ -19,9 +20,9 @@
namespace tint::builtin {
namespace {
-{{ Eval "BenchmarkParseEnum" (Sem.Enum "core_diagnostic_rule")}}
+{{ Eval "BenchmarkParseEnum" ($I.Sem.Enum "core_diagnostic_rule")}}
-{{ Eval "BenchmarkParseEnum" (Sem.Enum "chromium_diagnostic_rule")}}
+{{ Eval "BenchmarkParseEnum" ($I.Sem.Enum "chromium_diagnostic_rule")}}
} // namespace
} // namespace tint::builtin
diff --git a/src/tint/lang/core/builtin/diagnostic_rule_test.cc.tmpl b/src/tint/lang/core/builtin/diagnostic_rule_test.cc.tmpl
index baa3996..8d3dbf0 100644
--- a/src/tint/lang/core/builtin/diagnostic_rule_test.cc.tmpl
+++ b/src/tint/lang/core/builtin/diagnostic_rule_test.cc.tmpl
@@ -8,6 +8,7 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
#include <string>
@@ -21,13 +22,13 @@
namespace core_diagnostic_rule_tests {
-{{ Eval "TestParsePrintEnum" (Sem.Enum "core_diagnostic_rule")}}
+{{ Eval "TestParsePrintEnum" ($I.Sem.Enum "core_diagnostic_rule")}}
} // namespace core_diagnostic_rule_tests
namespace chromium_diagnostic_rule_tests {
-{{ Eval "TestParsePrintEnum" (Sem.Enum "chromium_diagnostic_rule")}}
+{{ Eval "TestParsePrintEnum" ($I.Sem.Enum "chromium_diagnostic_rule")}}
} // namespace chromium_diagnostic_rule_tests
diff --git a/src/tint/lang/core/builtin/diagnostic_severity.cc.tmpl b/src/tint/lang/core/builtin/diagnostic_severity.cc.tmpl
index 2793f1f..3894692 100644
--- a/src/tint/lang/core/builtin/diagnostic_severity.cc.tmpl
+++ b/src/tint/lang/core/builtin/diagnostic_severity.cc.tmpl
@@ -8,6 +8,7 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
#include "src/tint/lang/core/builtin/diagnostic_severity.h"
@@ -29,8 +30,8 @@
}
}
-{{ Eval "ParseEnum" (Sem.Enum "diagnostic_severity")}}
+{{ Eval "ParseEnum" ($I.Sem.Enum "diagnostic_severity")}}
-{{ Eval "EnumOStream" (Sem.Enum "diagnostic_severity")}}
+{{ Eval "EnumOStream" ($I.Sem.Enum "diagnostic_severity")}}
} // namespace tint::builtin
diff --git a/src/tint/lang/core/builtin/diagnostic_severity.h.tmpl b/src/tint/lang/core/builtin/diagnostic_severity.h.tmpl
index f7433bf..4dfec5a 100644
--- a/src/tint/lang/core/builtin/diagnostic_severity.h.tmpl
+++ b/src/tint/lang/core/builtin/diagnostic_severity.h.tmpl
@@ -8,6 +8,7 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
#ifndef SRC_TINT_LANG_CORE_BUILTIN_DIAGNOSTIC_SEVERITY_H_
@@ -23,7 +24,7 @@
namespace tint::builtin {
/// The diagnostic severity control.
-{{ Eval "DeclareEnum" (Sem.Enum "diagnostic_severity") }}
+{{ Eval "DeclareEnum" ($I.Sem.Enum "diagnostic_severity") }}
/// Convert a DiagnosticSeverity to the corresponding diag::Severity.
diag::Severity ToSeverity(DiagnosticSeverity sc);
diff --git a/src/tint/lang/core/builtin/diagnostic_severity_bench.cc.tmpl b/src/tint/lang/core/builtin/diagnostic_severity_bench.cc.tmpl
index 985032c..cf3cd65 100644
--- a/src/tint/lang/core/builtin/diagnostic_severity_bench.cc.tmpl
+++ b/src/tint/lang/core/builtin/diagnostic_severity_bench.cc.tmpl
@@ -8,6 +8,7 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
#include "src/tint/lang/core/builtin/diagnostic_severity.h"
@@ -19,7 +20,7 @@
namespace tint::builtin {
namespace {
-{{ Eval "BenchmarkParseEnum" (Sem.Enum "diagnostic_severity")}}
+{{ Eval "BenchmarkParseEnum" ($I.Sem.Enum "diagnostic_severity")}}
} // namespace
} // namespace tint::builtin
diff --git a/src/tint/lang/core/builtin/diagnostic_severity_test.cc.tmpl b/src/tint/lang/core/builtin/diagnostic_severity_test.cc.tmpl
index 963f230..f87e5fe 100644
--- a/src/tint/lang/core/builtin/diagnostic_severity_test.cc.tmpl
+++ b/src/tint/lang/core/builtin/diagnostic_severity_test.cc.tmpl
@@ -8,6 +8,7 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
#include <string>
@@ -21,7 +22,7 @@
namespace diagnostic_severity_tests {
-{{ Eval "TestParsePrintEnum" (Sem.Enum "diagnostic_severity")}}
+{{ Eval "TestParsePrintEnum" ($I.Sem.Enum "diagnostic_severity")}}
} // namespace diagnostic_severity_tests
diff --git a/src/tint/lang/core/builtin/extension.cc.tmpl b/src/tint/lang/core/builtin/extension.cc.tmpl
index 794fe3f..5624638 100644
--- a/src/tint/lang/core/builtin/extension.cc.tmpl
+++ b/src/tint/lang/core/builtin/extension.cc.tmpl
@@ -8,8 +8,9 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
-{{- $enum := (Sem.Enum "extension") -}}
+{{- $enum := ($I.Sem.Enum "extension") -}}
#include "src/tint/lang/core/builtin/extension.h"
diff --git a/src/tint/lang/core/builtin/extension.h b/src/tint/lang/core/builtin/extension.h
index 09ccd209..9e45ebc 100644
--- a/src/tint/lang/core/builtin/extension.h
+++ b/src/tint/lang/core/builtin/extension.h
@@ -29,7 +29,7 @@
namespace tint::builtin {
/// An enumerator of WGSL extensions
-/// @see src/tint/intrinsics.def for extension descriptions
+/// @see src/tint/lang/wgsl/intrinsics.def for extension descriptions
enum class Extension {
kUndefined,
kChromiumDisableUniformityAnalysis,
diff --git a/src/tint/lang/core/builtin/extension.h.tmpl b/src/tint/lang/core/builtin/extension.h.tmpl
index 8d301b9..7e32462 100644
--- a/src/tint/lang/core/builtin/extension.h.tmpl
+++ b/src/tint/lang/core/builtin/extension.h.tmpl
@@ -8,8 +8,9 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
-{{- $enum := (Sem.Enum "extension") -}}
+{{- $enum := ($I.Sem.Enum "extension") -}}
#ifndef SRC_TINT_LANG_CORE_BUILTIN_EXTENSION_H_
#define SRC_TINT_LANG_CORE_BUILTIN_EXTENSION_H_
@@ -20,7 +21,7 @@
namespace tint::builtin {
/// An enumerator of WGSL extensions
-/// @see src/tint/intrinsics.def for extension descriptions
+/// @see src/tint/lang/wgsl/intrinsics.def for extension descriptions
{{ Eval "DeclareEnum" $enum}}
// A unique vector of extensions
diff --git a/src/tint/lang/core/builtin/extension_bench.cc.tmpl b/src/tint/lang/core/builtin/extension_bench.cc.tmpl
index 252d616..649cb76 100644
--- a/src/tint/lang/core/builtin/extension_bench.cc.tmpl
+++ b/src/tint/lang/core/builtin/extension_bench.cc.tmpl
@@ -8,8 +8,9 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
-{{- $enum := (Sem.Enum "extension") -}}
+{{- $enum := ($I.Sem.Enum "extension") -}}
#include "src/tint/lang/core/builtin/extension.h"
diff --git a/src/tint/lang/core/builtin/extension_test.cc.tmpl b/src/tint/lang/core/builtin/extension_test.cc.tmpl
index f5df4c1..7975679 100644
--- a/src/tint/lang/core/builtin/extension_test.cc.tmpl
+++ b/src/tint/lang/core/builtin/extension_test.cc.tmpl
@@ -8,8 +8,9 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
-{{- $enum := (Sem.Enum "extension") -}}
+{{- $enum := ($I.Sem.Enum "extension") -}}
#include "src/tint/lang/core/builtin/extension.h"
diff --git a/src/tint/lang/core/builtin/function.cc.tmpl b/src/tint/lang/core/builtin/function.cc.tmpl
index 656c541..228a6a1 100644
--- a/src/tint/lang/core/builtin/function.cc.tmpl
+++ b/src/tint/lang/core/builtin/function.cc.tmpl
@@ -11,12 +11,13 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
#include "src/tint/lang/core/builtin/function.h"
namespace tint::builtin {
Function ParseFunction(std::string_view name) {
-{{- range Sem.Builtins }}
+{{- range $I.Sem.Builtins }}
if (name == "{{.Name}}") {
return Function::k{{PascalCase .Name}};
}
@@ -28,7 +29,7 @@
switch (i) {
case Function::kNone:
return "<none>";
-{{- range Sem.Builtins }}
+{{- range $I.Sem.Builtins }}
case Function::k{{PascalCase .Name}}:
return "{{.Name}}";
{{- end }}
diff --git a/src/tint/lang/core/builtin/function.h.tmpl b/src/tint/lang/core/builtin/function.h.tmpl
index f43ab7a..e9ff45e 100644
--- a/src/tint/lang/core/builtin/function.h.tmpl
+++ b/src/tint/lang/core/builtin/function.h.tmpl
@@ -11,6 +11,8 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
+
#ifndef SRC_TINT_LANG_CORE_BUILTIN_FUNCTION_H_
#define SRC_TINT_LANG_CORE_BUILTIN_FUNCTION_H_
@@ -24,7 +26,7 @@
/// Enumerator of all builtin functions
enum class Function {
kNone = -1,
-{{- range Sem.Builtins }}
+{{- range $I.Sem.Builtins }}
k{{PascalCase .Name}},
{{- end }}
};
@@ -48,14 +50,14 @@
/// All builtin functions
constexpr Function kFunctions[] = {
-{{- range Sem.Builtins }}
+{{- range $I.Sem.Builtins }}
Function::k{{PascalCase .Name}},
{{- end }}
};
/// All builtin function names
constexpr const char* kFunctionStrings[] = {
-{{- range Sem.Builtins }}
+{{- range $I.Sem.Builtins }}
"{{.Name}}",
{{- end }}
};
diff --git a/src/tint/lang/core/builtin/interpolation_sampling.cc.tmpl b/src/tint/lang/core/builtin/interpolation_sampling.cc.tmpl
index 9fe6a21a..e29c088 100644
--- a/src/tint/lang/core/builtin/interpolation_sampling.cc.tmpl
+++ b/src/tint/lang/core/builtin/interpolation_sampling.cc.tmpl
@@ -8,6 +8,7 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
#include "src/tint/lang/core/builtin/interpolation_sampling.h"
@@ -16,8 +17,8 @@
namespace tint::builtin {
-{{ Eval "ParseEnum" (Sem.Enum "interpolation_sampling")}}
+{{ Eval "ParseEnum" ($I.Sem.Enum "interpolation_sampling")}}
-{{ Eval "EnumOStream" (Sem.Enum "interpolation_sampling")}}
+{{ Eval "EnumOStream" ($I.Sem.Enum "interpolation_sampling")}}
} // namespace tint::builtin
diff --git a/src/tint/lang/core/builtin/interpolation_sampling.h.tmpl b/src/tint/lang/core/builtin/interpolation_sampling.h.tmpl
index c510fe0..91b0705 100644
--- a/src/tint/lang/core/builtin/interpolation_sampling.h.tmpl
+++ b/src/tint/lang/core/builtin/interpolation_sampling.h.tmpl
@@ -8,6 +8,7 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
#ifndef SRC_TINT_LANG_CORE_BUILTIN_INTERPOLATION_SAMPLING_H_
@@ -20,7 +21,7 @@
namespace tint::builtin {
/// The interpolation sampling.
-{{ Eval "DeclareEnum" (Sem.Enum "interpolation_sampling") }}
+{{ Eval "DeclareEnum" ($I.Sem.Enum "interpolation_sampling") }}
} // namespace tint::builtin
diff --git a/src/tint/lang/core/builtin/interpolation_sampling_bench.cc.tmpl b/src/tint/lang/core/builtin/interpolation_sampling_bench.cc.tmpl
index a880b3d..8cbe73a 100644
--- a/src/tint/lang/core/builtin/interpolation_sampling_bench.cc.tmpl
+++ b/src/tint/lang/core/builtin/interpolation_sampling_bench.cc.tmpl
@@ -8,6 +8,7 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
#include <array>
@@ -18,7 +19,7 @@
namespace tint::builtin {
namespace {
-{{ Eval "BenchmarkParseEnum" (Sem.Enum "interpolation_sampling")}}
+{{ Eval "BenchmarkParseEnum" ($I.Sem.Enum "interpolation_sampling")}}
} // namespace
} // namespace tint::builtin
diff --git a/src/tint/lang/core/builtin/interpolation_sampling_test.cc.tmpl b/src/tint/lang/core/builtin/interpolation_sampling_test.cc.tmpl
index b36007c..faeee6c 100644
--- a/src/tint/lang/core/builtin/interpolation_sampling_test.cc.tmpl
+++ b/src/tint/lang/core/builtin/interpolation_sampling_test.cc.tmpl
@@ -8,6 +8,7 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
#include "src/tint/lang/core/builtin/interpolation_sampling.h"
@@ -22,7 +23,7 @@
namespace interpolation_sampling_tests {
-{{ Eval "TestParsePrintEnum" (Sem.Enum "interpolation_sampling")}}
+{{ Eval "TestParsePrintEnum" ($I.Sem.Enum "interpolation_sampling")}}
} // namespace interpolation_sampling_tests
diff --git a/src/tint/lang/core/builtin/interpolation_type.cc.tmpl b/src/tint/lang/core/builtin/interpolation_type.cc.tmpl
index ba8cbb8..0922641 100644
--- a/src/tint/lang/core/builtin/interpolation_type.cc.tmpl
+++ b/src/tint/lang/core/builtin/interpolation_type.cc.tmpl
@@ -8,6 +8,7 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
#include "src/tint/lang/core/builtin/interpolation_type.h"
@@ -16,8 +17,8 @@
namespace tint::builtin {
-{{ Eval "ParseEnum" (Sem.Enum "interpolation_type")}}
+{{ Eval "ParseEnum" ($I.Sem.Enum "interpolation_type")}}
-{{ Eval "EnumOStream" (Sem.Enum "interpolation_type")}}
+{{ Eval "EnumOStream" ($I.Sem.Enum "interpolation_type")}}
} // namespace tint::builtin
diff --git a/src/tint/lang/core/builtin/interpolation_type.h.tmpl b/src/tint/lang/core/builtin/interpolation_type.h.tmpl
index f8946c3..3785706 100644
--- a/src/tint/lang/core/builtin/interpolation_type.h.tmpl
+++ b/src/tint/lang/core/builtin/interpolation_type.h.tmpl
@@ -8,6 +8,7 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
#ifndef SRC_TINT_LANG_CORE_BUILTIN_INTERPOLATION_TYPE_H_
@@ -20,7 +21,7 @@
namespace tint::builtin {
/// The interpolation type.
-{{ Eval "DeclareEnum" (Sem.Enum "interpolation_type") }}
+{{ Eval "DeclareEnum" ($I.Sem.Enum "interpolation_type") }}
} // namespace tint::builtin
diff --git a/src/tint/lang/core/builtin/interpolation_type_bench.cc.tmpl b/src/tint/lang/core/builtin/interpolation_type_bench.cc.tmpl
index 1329093..c1bbd43 100644
--- a/src/tint/lang/core/builtin/interpolation_type_bench.cc.tmpl
+++ b/src/tint/lang/core/builtin/interpolation_type_bench.cc.tmpl
@@ -8,6 +8,7 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
#include "src/tint/lang/core/builtin/interpolation_type.h"
@@ -19,7 +20,7 @@
namespace tint::builtin {
namespace {
-{{ Eval "BenchmarkParseEnum" (Sem.Enum "interpolation_type")}}
+{{ Eval "BenchmarkParseEnum" ($I.Sem.Enum "interpolation_type")}}
} // namespace
} // namespace tint::builtin
diff --git a/src/tint/lang/core/builtin/interpolation_type_test.cc.tmpl b/src/tint/lang/core/builtin/interpolation_type_test.cc.tmpl
index d616675..297efe1 100644
--- a/src/tint/lang/core/builtin/interpolation_type_test.cc.tmpl
+++ b/src/tint/lang/core/builtin/interpolation_type_test.cc.tmpl
@@ -8,6 +8,7 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
#include "src/tint/lang/core/builtin/interpolation_type.h"
@@ -22,7 +23,7 @@
namespace interpolation_type_tests {
-{{ Eval "TestParsePrintEnum" (Sem.Enum "interpolation_type")}}
+{{ Eval "TestParsePrintEnum" ($I.Sem.Enum "interpolation_type")}}
} // namespace interpolation_type_tests
diff --git a/src/tint/lang/core/builtin/texel_format.cc.tmpl b/src/tint/lang/core/builtin/texel_format.cc.tmpl
index 3cef759..0708350 100644
--- a/src/tint/lang/core/builtin/texel_format.cc.tmpl
+++ b/src/tint/lang/core/builtin/texel_format.cc.tmpl
@@ -8,8 +8,9 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
-{{- $enum := (Sem.Enum "texel_format") -}}
+{{- $enum := ($I.Sem.Enum "texel_format") -}}
#include "src/tint/lang/core/builtin/texel_format.h"
diff --git a/src/tint/lang/core/builtin/texel_format.h.tmpl b/src/tint/lang/core/builtin/texel_format.h.tmpl
index e4b1125..51fa418 100644
--- a/src/tint/lang/core/builtin/texel_format.h.tmpl
+++ b/src/tint/lang/core/builtin/texel_format.h.tmpl
@@ -8,8 +8,9 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
-{{- $enum := (Sem.Enum "texel_format") -}}
+{{- $enum := ($I.Sem.Enum "texel_format") -}}
#ifndef SRC_TINT_LANG_CORE_BUILTIN_TEXEL_FORMAT_H_
#define SRC_TINT_LANG_CORE_BUILTIN_TEXEL_FORMAT_H_
diff --git a/src/tint/lang/core/builtin/texel_format_bench.cc.tmpl b/src/tint/lang/core/builtin/texel_format_bench.cc.tmpl
index 646e7ba3..566bb59 100644
--- a/src/tint/lang/core/builtin/texel_format_bench.cc.tmpl
+++ b/src/tint/lang/core/builtin/texel_format_bench.cc.tmpl
@@ -8,8 +8,9 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
-{{- $enum := (Sem.Enum "texel_format") -}}
+{{- $enum := ($I.Sem.Enum "texel_format") -}}
#include "src/tint/lang/core/builtin/texel_format.h"
diff --git a/src/tint/lang/core/builtin/texel_format_test.cc.tmpl b/src/tint/lang/core/builtin/texel_format_test.cc.tmpl
index d985800..332456f 100644
--- a/src/tint/lang/core/builtin/texel_format_test.cc.tmpl
+++ b/src/tint/lang/core/builtin/texel_format_test.cc.tmpl
@@ -8,8 +8,9 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
{{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
-{{- $enum := (Sem.Enum "texel_format") -}}
+{{- $enum := ($I.Sem.Enum "texel_format") -}}
#include "src/tint/lang/core/builtin/texel_format.h"
diff --git a/src/tint/intrinsics.def b/src/tint/lang/core/core.def
similarity index 100%
rename from src/tint/intrinsics.def
rename to src/tint/lang/core/core.def
diff --git a/src/tint/lang/wgsl/resolver/ctor_conv_intrinsic.cc.tmpl b/src/tint/lang/wgsl/resolver/ctor_conv_intrinsic.cc.tmpl
index dd33015..46ffe81 100644
--- a/src/tint/lang/wgsl/resolver/ctor_conv_intrinsic.cc.tmpl
+++ b/src/tint/lang/wgsl/resolver/ctor_conv_intrinsic.cc.tmpl
@@ -11,6 +11,8 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
+
#include "src/tint/lang/wgsl/resolver/ctor_conv_intrinsic.h"
namespace tint::resolver {
@@ -19,7 +21,7 @@
switch (i) {
case CtorConvIntrinsic::kNone:
return "<none>";
-{{- range Sem.ConstructorsAndConverters }}
+{{- range $I.Sem.ConstructorsAndConverters }}
case CtorConvIntrinsic::k{{Title .Name}}:
return "{{.Name}}";
{{- end }}
diff --git a/src/tint/lang/wgsl/resolver/ctor_conv_intrinsic.h.tmpl b/src/tint/lang/wgsl/resolver/ctor_conv_intrinsic.h.tmpl
index dcae601..3a49828 100644
--- a/src/tint/lang/wgsl/resolver/ctor_conv_intrinsic.h.tmpl
+++ b/src/tint/lang/wgsl/resolver/ctor_conv_intrinsic.h.tmpl
@@ -11,6 +11,8 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
+
#ifndef SRC_TINT_LANG_WGSL_RESOLVER_CTOR_CONV_INTRINSIC_H_
#define SRC_TINT_LANG_WGSL_RESOLVER_CTOR_CONV_INTRINSIC_H_
@@ -22,7 +24,7 @@
/// declared in the intrinsic table.
enum class CtorConvIntrinsic {
kNone = -1,
-{{- range Sem.ConstructorsAndConverters }}
+{{- range $I.Sem.ConstructorsAndConverters }}
k{{Title .Name}},
{{- end }}
};
diff --git a/src/tint/lang/wgsl/resolver/intrinsic_table.inl.tmpl b/src/tint/lang/wgsl/resolver/intrinsic_table.inl.tmpl
index 2410b07..1be75c7 100644
--- a/src/tint/lang/wgsl/resolver/intrinsic_table.inl.tmpl
+++ b/src/tint/lang/wgsl/resolver/intrinsic_table.inl.tmpl
@@ -12,9 +12,11 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
+
// clang-format off
-{{ with Sem -}}
+{{ with $I.Sem -}}
{{ range .Types -}}
{{ template "Type" . }}
{{ end -}}
@@ -26,8 +28,8 @@
{{ end -}}
{{- end -}}
-{{- with IntrinsicTable -}}
-{{- template "Matchers" . }}
+{{- with $I.Table -}}
+{{- template "Matchers" $I }}
constexpr MatcherIndex kMatcherIndices[] = {
{{- range $i, $idx := .MatcherIndices }}
@@ -341,27 +343,27 @@
private:
{{- $t_names := Map -}}
{{- $n_names := Map -}}
-{{- range Iterate Sem.MaxTemplateTypes -}}
+{{- range Iterate $.Sem.MaxTemplateTypes -}}
{{- $name := printf "template_type_%v" . -}}
{{- $t_names.Put . $name }}
TemplateTypeMatcher {{$name}}_{ {{- . -}} };
{{- end }}
-{{- range Iterate Sem.MaxTemplateNumbers -}}
+{{- range Iterate $.Sem.MaxTemplateNumbers -}}
{{- $name := printf "template_number_%v" . -}}
{{- $n_names.Put . $name }}
TemplateNumberMatcher {{$name}}_{ {{- . -}} };
{{- end }}
-{{- range Sem.Types -}}
+{{- range $.Sem.Types -}}
{{- $name := PascalCase .Name -}}
{{- $t_names.Put . $name }}
{{$name}} {{$name}}_;
{{- end }}
-{{- range Sem.TypeMatchers -}}
+{{- range $.Sem.TypeMatchers -}}
{{- $name := PascalCase .Name -}}
{{- $t_names.Put . $name }}
{{$name}} {{$name}}_;
{{- end }}
-{{- range Sem.EnumMatchers -}}
+{{- range $.Sem.EnumMatchers -}}
{{- $name := PascalCase .Name -}}
{{- $n_names.Put . $name }}
{{$name}} {{$name}}_;
@@ -374,8 +376,8 @@
~Matchers();
/// The template types, types, and type matchers
- TypeMatcher const* const type[{{len .TMatchers}}] = {
-{{- range $i, $m := .TMatchers }}
+ TypeMatcher const* const type[{{len $.Table.TMatchers}}] = {
+{{- range $i, $m := $.Table.TMatchers }}
/* [{{$i}}] */
{{- if $m }} &{{$t_names.Get $m}}_,
{{- else }} &{{$t_names.Get $i}}_,
@@ -384,8 +386,8 @@
};
/// The template numbers, and number matchers
- NumberMatcher const* const number[{{len .NMatchers}}] = {
-{{- range $i, $m := .NMatchers }}
+ NumberMatcher const* const number[{{len $.Table.NMatchers}}] = {
+{{- range $i, $m := $.Table.NMatchers }}
/* [{{$i}}] */
{{- if $m }} &{{$n_names.Get $m}}_,
{{- else }} &{{$n_names.Get $i}}_,
diff --git a/src/tint/lang/wgsl/sem/parameter_usage.cc.tmpl b/src/tint/lang/wgsl/sem/parameter_usage.cc.tmpl
index afdc67f..1a3981c 100644
--- a/src/tint/lang/wgsl/sem/parameter_usage.cc.tmpl
+++ b/src/tint/lang/wgsl/sem/parameter_usage.cc.tmpl
@@ -11,6 +11,8 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
+
#include "src/tint/lang/wgsl/sem/parameter_usage.h"
namespace tint::sem {
@@ -19,7 +21,7 @@
switch (usage) {
case ParameterUsage::kNone:
return "none";
-{{- range Sem.UniqueParameterNames }}
+{{- range $I.Sem.UniqueParameterNames }}
case ParameterUsage::k{{PascalCase .}}:
return "{{.}}";
{{- end }}
diff --git a/src/tint/lang/wgsl/sem/parameter_usage.h.tmpl b/src/tint/lang/wgsl/sem/parameter_usage.h.tmpl
index ddaf7e9..a13e1c4 100644
--- a/src/tint/lang/wgsl/sem/parameter_usage.h.tmpl
+++ b/src/tint/lang/wgsl/sem/parameter_usage.h.tmpl
@@ -11,6 +11,8 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $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_
@@ -20,7 +22,7 @@
/// overload position
enum class ParameterUsage {
kNone = -1,
-{{- range Sem.UniqueParameterNames }}
+{{- range $I.Sem.UniqueParameterNames }}
k{{PascalCase .}},
{{- end }}
};
diff --git a/test/tint/builtins/gen/gen.wgsl.tmpl b/test/tint/builtins/gen/gen.wgsl.tmpl
index b1e9670..e76dd820 100644
--- a/test/tint/builtins/gen/gen.wgsl.tmpl
+++ b/test/tint/builtins/gen/gen.wgsl.tmpl
@@ -9,11 +9,13 @@
--------------------------------------------------------------------------------
*/ -}}
+{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
+
{{- /* For each permutation of each overload of each function... */ -}}
-{{- range Sem.Builtins -}}
+{{- range $I.Sem.Builtins -}}
{{ if not (HasPrefix .Name "_") }}
{{- range .Overloads -}}
-{{- range Permute . -}}
+{{- range $I.Permute . -}}
{{- /* Generate a ./literal/<function>/<permuataion-hash>.wgsl file using
the Permutation macro defined below */ -}}
{{- $file := printf "./literal/%v/%v.wgsl" .Intrinsic.Name .Hash -}}
diff --git a/tools/src/cmd/gen/main.go b/tools/src/cmd/gen/main.go
index c574d8b..8336383 100644
--- a/tools/src/cmd/gen/main.go
+++ b/tools/src/cmd/gen/main.go
@@ -12,8 +12,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-// gen parses the <tint>/src/tint/intrinsics.def file, then scans the
-// project directory for '<file>.tmpl' files, to produce source code files.
+// gen scans the the project directory for '<file>.tmpl' files, producing code
+// from those template files.
package main
import (
@@ -42,8 +42,6 @@
"dawn.googlesource.com/dawn/tools/src/tint/intrinsic/sem"
)
-const defProjectRelPath = "src/tint/intrinsics.def"
-
func main() {
if err := run(); err != nil {
fmt.Println(err)
@@ -59,9 +57,6 @@
are explicitly specified, then gen scans the '<dawn>/src/tint' and
'<dawn>/test/tint' directories for '<file>.tmpl' files.
-If the templates use the 'IntrinsicTable' function then gen will parse and
-resolve the <tint>/src/tint/intrinsics.def file.
-
usage:
gen [flags] [template files]
@@ -228,28 +223,26 @@
return nil
}
-// Cache for objects that are expensive to build, and can be reused between templates.
-type genCache struct {
- cached struct {
- sem *sem.Sem // lazily built by sem()
- intrinsicTable *gen.IntrinsicTable // lazily built by intrinsicTable()
- permuter *gen.Permuter // lazily built by permute()
- }
+type intrinsicCache struct {
+ path string
+ cachedSem *sem.Sem // lazily built by sem()
+ cachedTable *gen.IntrinsicTable // lazily built by intrinsicTable()
+ cachedPermuter *gen.Permuter // lazily built by permute()
}
-// sem lazily parses and resolves the intrinsic.def file, returning the semantic info.
-func (g *genCache) sem() (*sem.Sem, error) {
- if g.cached.sem == nil {
- // Load the builtins definition file
- defPath := filepath.Join(fileutils.DawnRoot(), defProjectRelPath)
+// Sem lazily parses and resolves the intrinsic.def file, returning the semantic info.
+func (i *intrinsicCache) Sem() (*sem.Sem, error) {
+ if i.cachedSem == nil {
+ // Load the intrinsic definition file
+ defPath := filepath.Join(fileutils.DawnRoot(), i.path)
- defSource, err := ioutil.ReadFile(defPath)
+ defSource, err := os.ReadFile(defPath)
if err != nil {
return nil, err
}
// Parse the definition file to produce an AST
- ast, err := parser.Parse(string(defSource), defProjectRelPath)
+ ast, err := parser.Parse(string(defSource), i.path)
if err != nil {
return nil, err
}
@@ -260,41 +253,58 @@
return nil, err
}
- g.cached.sem = sem
+ i.cachedSem = sem
}
- return g.cached.sem, nil
+ return i.cachedSem, nil
}
-// intrinsicTable lazily calls and returns the result of buildIntrinsicTable(),
+// Table lazily calls and returns the result of BuildIntrinsicTable(),
// caching the result for repeated calls.
-func (g *genCache) intrinsicTable() (*gen.IntrinsicTable, error) {
- if g.cached.intrinsicTable == nil {
- sem, err := g.sem()
+func (i *intrinsicCache) Table() (*gen.IntrinsicTable, error) {
+ if i.cachedTable == nil {
+ sem, err := i.Sem()
if err != nil {
return nil, err
}
- g.cached.intrinsicTable, err = gen.BuildIntrinsicTable(sem)
+ i.cachedTable, err = gen.BuildIntrinsicTable(sem)
if err != nil {
return nil, err
}
}
- return g.cached.intrinsicTable, nil
+ return i.cachedTable, nil
}
-// permute lazily calls buildPermuter(), caching the result for repeated
-// calls, then passes the argument to Permutator.Permute()
-func (g *genCache) permute(overload *sem.Overload) ([]gen.Permutation, error) {
- if g.cached.permuter == nil {
- sem, err := g.sem()
+// Permute lazily calls NewPermuter(), caching the result for repeated calls,
+// then passes the argument to Permutator.Permute()
+func (i *intrinsicCache) Permute(overload *sem.Overload) ([]gen.Permutation, error) {
+ if i.cachedPermuter == nil {
+ sem, err := i.Sem()
if err != nil {
return nil, err
}
- g.cached.permuter, err = gen.NewPermuter(sem)
+ i.cachedPermuter, err = gen.NewPermuter(sem)
if err != nil {
return nil, err
}
}
- return g.cached.permuter.Permute(overload)
+ return i.cachedPermuter.Permute(overload)
+}
+
+// Cache for objects that are expensive to build, and can be reused between templates.
+type genCache struct {
+ intrinsicsCache container.Map[string, *intrinsicCache]
+}
+
+func (g *genCache) intrinsics(path string) *intrinsicCache {
+ if g.intrinsicsCache == nil {
+ g.intrinsicsCache = container.NewMap[string, *intrinsicCache]()
+ }
+ i := g.intrinsicsCache[path]
+ if i == nil {
+ i = &intrinsicCache{path: path}
+ g.intrinsicsCache[path] = i
+ }
+ return i
}
var copyrightRegex = regexp.MustCompile(`// Copyright (\d+) The`)
@@ -364,9 +374,7 @@
"OverloadUsesF16": gen.OverloadUsesF16,
"IsFirstIn": isFirstIn,
"IsLastIn": isLastIn,
- "Sem": g.cache.sem,
- "IntrinsicTable": g.cache.intrinsicTable,
- "Permute": g.cache.permute,
+ "LoadIntrinsics": func(path string) *intrinsicCache { return g.cache.intrinsics(path) },
"WriteFile": func(relPath, content string) (string, error) { return "", g.writeFile(relPath, content) },
}
return template.Run(tmpl, w, funcs)