intrinsics: Add new struct form of modf(), frexp()
Implement these for all the writers.
SPIR-V reader not implemented (the old overloads weren't implemented either).
Deprecate the old overloads.
Fixed: tint:54
Change-Id: If66d26dbac3389ff604734f31b426abe47868b91
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/59302
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: James Price <jrprice@google.com>
diff --git a/src/intrinsic_table.cc b/src/intrinsic_table.cc
index 82c1deb..4f02b6d 100644
--- a/src/intrinsic_table.cc
+++ b/src/intrinsic_table.cc
@@ -29,6 +29,7 @@
#include "src/sem/storage_texture_type.h"
#include "src/utils/get_or_create.h"
#include "src/utils/hash.h"
+#include "src/utils/math.h"
#include "src/utils/scoped_assignment.h"
namespace tint {
@@ -637,6 +638,91 @@
return state.builder.create<sem::ExternalTexture>();
}
+// Builtin types starting with a _ prefix cannot be declared in WGSL, so they
+// can only be used as return types. Because of this, they must only match Any,
+// which is used as the return type matcher.
+bool match_modf_result(const sem::Type* ty) {
+ return ty->Is<Any>();
+}
+bool match_modf_result_vec(const sem::Type* ty, Number& N) {
+ if (!ty->Is<Any>()) {
+ return false;
+ }
+ N = Number::any;
+ return true;
+}
+bool match_frexp_result(const sem::Type* ty) {
+ return ty->Is<Any>();
+}
+bool match_frexp_result_vec(const sem::Type* ty, Number& N) {
+ if (!ty->Is<Any>()) {
+ return false;
+ }
+ N = Number::any;
+ return true;
+}
+
+struct NameAndType {
+ std::string name;
+ sem::Type* type;
+};
+const sem::Struct* build_struct(
+ MatchState& state,
+ std::string name,
+ std::initializer_list<NameAndType> member_names_and_types) {
+ uint32_t offset = 0;
+ uint32_t max_align = 0;
+ sem::StructMemberList members;
+ for (auto& m : member_names_and_types) {
+ uint32_t align = m.type->Align();
+ uint32_t size = m.type->Size();
+ offset = utils::RoundUp(align, offset);
+ max_align = std::max(max_align, align);
+ members.emplace_back(state.builder.create<sem::StructMember>(
+ /* declaration */ nullptr,
+ /* name */ state.builder.Sym(m.name),
+ /* type */ m.type,
+ /* index */ static_cast<uint32_t>(members.size()),
+ /* offset */ offset,
+ /* align */ align,
+ /* size */ size));
+ offset += size;
+ }
+ uint32_t size_without_padding = offset;
+ uint32_t size_with_padding = utils::RoundUp(max_align, offset);
+ return state.builder.create<sem::Struct>(
+ /* declaration */ nullptr,
+ /* name */ state.builder.Sym(name),
+ /* members */ members,
+ /* align */ max_align,
+ /* size */ size_with_padding,
+ /* size_no_padding */ size_without_padding);
+}
+
+const sem::Struct* build_modf_result(MatchState& state) {
+ auto* f32 = state.builder.create<sem::F32>();
+ return build_struct(state, "_modf_result", {{"fract", f32}, {"whole", f32}});
+}
+const sem::Struct* build_modf_result_vec(MatchState& state, Number& n) {
+ auto* vec_f32 = state.builder.create<sem::Vector>(
+ state.builder.create<sem::F32>(), n.Value());
+ return build_struct(state, "_modf_result_vec" + std::to_string(n.Value()),
+ {{"fract", vec_f32}, {"whole", vec_f32}});
+}
+const sem::Struct* build_frexp_result(MatchState& state) {
+ auto* f32 = state.builder.create<sem::F32>();
+ auto* i32 = state.builder.create<sem::I32>();
+ return build_struct(state, "_frexp_result", {{"sig", f32}, {"exp", i32}});
+}
+const sem::Struct* build_frexp_result_vec(MatchState& state, Number& n) {
+ auto* vec_f32 = state.builder.create<sem::Vector>(
+ state.builder.create<sem::F32>(), n.Value());
+ auto* vec_i32 = state.builder.create<sem::Vector>(
+ state.builder.create<sem::I32>(), n.Value());
+ return build_struct(state, "_frexp_result_vec" + std::to_string(n.Value()),
+ {{"sig", vec_f32}, {"exp", vec_i32}});
+}
+
/// ParameterInfo describes a parameter
struct ParameterInfo {
/// The parameter usage (parameter name in definition file)
diff --git a/src/intrinsic_table.inl b/src/intrinsic_table.inl
index d0bd476..343e156 100644
--- a/src/intrinsic_table.inl
+++ b/src/intrinsic_table.inl
@@ -1006,8 +1006,132 @@
return "texture_external";
}
+/// TypeMatcher for 'type _modf_result'
+/// @see src/intrinsics.def:99:6
+class ModfResult : public TypeMatcher {
+ public:
+ /// Checks whether the given type matches the matcher rules.
+ /// Match may close open types and numbers in state.
+ /// @param state the MatchState
+ /// @param type the type to match
+ /// @returns the canonicalized type on match, otherwise nullptr
+ const sem::Type* Match(MatchState& state,
+ const sem::Type* type) const override;
+ /// @param state the MatchState
+ /// @return a string representation of the matcher.
+ std::string String(MatchState& state) const override;
+};
+
+const sem::Type* ModfResult::Match(MatchState& state, const sem::Type* ty) const {
+ if (!match_modf_result(ty)) {
+ return nullptr;
+ }
+ return build_modf_result(state);
+}
+
+std::string ModfResult::String(MatchState&) const {
+ return "_modf_result";
+}
+
+/// TypeMatcher for 'type _modf_result_vec'
+/// @see src/intrinsics.def:100:41
+class ModfResultVec : public TypeMatcher {
+ public:
+ /// Checks whether the given type matches the matcher rules.
+ /// Match may close open types and numbers in state.
+ /// @param state the MatchState
+ /// @param type the type to match
+ /// @returns the canonicalized type on match, otherwise nullptr
+ const sem::Type* Match(MatchState& state,
+ const sem::Type* type) const override;
+ /// @param state the MatchState
+ /// @return a string representation of the matcher.
+ std::string String(MatchState& state) const override;
+};
+
+const sem::Type* ModfResultVec::Match(MatchState& state, const sem::Type* ty) const {
+ Number N = Number::invalid;
+ if (!match_modf_result_vec(ty, N)) {
+ return nullptr;
+ }
+ N = state.Num(N);
+ if (!N.IsValid()) {
+ return nullptr;
+ }
+ return build_modf_result_vec(state, N);
+}
+
+std::string ModfResultVec::String(MatchState& state) const {
+ const std::string N = state.NumName();
+ std::stringstream ss;
+ ss << "_modf_result_vec" << N;
+ return ss.str();
+}
+
+/// TypeMatcher for 'type _frexp_result'
+/// @see src/intrinsics.def:101:6
+class FrexpResult : public TypeMatcher {
+ public:
+ /// Checks whether the given type matches the matcher rules.
+ /// Match may close open types and numbers in state.
+ /// @param state the MatchState
+ /// @param type the type to match
+ /// @returns the canonicalized type on match, otherwise nullptr
+ const sem::Type* Match(MatchState& state,
+ const sem::Type* type) const override;
+ /// @param state the MatchState
+ /// @return a string representation of the matcher.
+ std::string String(MatchState& state) const override;
+};
+
+const sem::Type* FrexpResult::Match(MatchState& state, const sem::Type* ty) const {
+ if (!match_frexp_result(ty)) {
+ return nullptr;
+ }
+ return build_frexp_result(state);
+}
+
+std::string FrexpResult::String(MatchState&) const {
+ return "_frexp_result";
+}
+
+/// TypeMatcher for 'type _frexp_result_vec'
+/// @see src/intrinsics.def:102:42
+class FrexpResultVec : public TypeMatcher {
+ public:
+ /// Checks whether the given type matches the matcher rules.
+ /// Match may close open types and numbers in state.
+ /// @param state the MatchState
+ /// @param type the type to match
+ /// @returns the canonicalized type on match, otherwise nullptr
+ const sem::Type* Match(MatchState& state,
+ const sem::Type* type) const override;
+ /// @param state the MatchState
+ /// @return a string representation of the matcher.
+ std::string String(MatchState& state) const override;
+};
+
+const sem::Type* FrexpResultVec::Match(MatchState& state, const sem::Type* ty) const {
+ Number N = Number::invalid;
+ if (!match_frexp_result_vec(ty, N)) {
+ return nullptr;
+ }
+ N = state.Num(N);
+ if (!N.IsValid()) {
+ return nullptr;
+ }
+ return build_frexp_result_vec(state, N);
+}
+
+std::string FrexpResultVec::String(MatchState& state) const {
+ const std::string N = state.NumName();
+ std::stringstream ss;
+ ss << "_frexp_result_vec" << N;
+ return ss.str();
+}
+
/// TypeMatcher for 'match fiu32'
-/// @see src/intrinsics.def:105:7
+/// @see src/intrinsics.def:110:7
class Fiu32 : public TypeMatcher {
public:
/// Checks whether the given type matches the matcher rules, and returns the
@@ -1041,7 +1165,7 @@
}
/// TypeMatcher for 'match iu32'
-/// @see src/intrinsics.def:106:7
+/// @see src/intrinsics.def:111:7
class Iu32 : public TypeMatcher {
public:
/// Checks whether the given type matches the matcher rules, and returns the
@@ -1072,7 +1196,7 @@
}
/// TypeMatcher for 'match scalar'
-/// @see src/intrinsics.def:107:7
+/// @see src/intrinsics.def:112:7
class Scalar : public TypeMatcher {
public:
/// Checks whether the given type matches the matcher rules, and returns the
@@ -1109,7 +1233,7 @@
}
/// EnumMatcher for 'match f32_texel_format'
-/// @see src/intrinsics.def:118:7
+/// @see src/intrinsics.def:123:7
class F32TexelFormat : public NumberMatcher {
public:
/// Checks whether the given number matches the enum matcher rules.
@@ -1142,7 +1266,7 @@
}
/// EnumMatcher for 'match i32_texel_format'
-/// @see src/intrinsics.def:120:7
+/// @see src/intrinsics.def:125:7
class I32TexelFormat : public NumberMatcher {
public:
/// Checks whether the given number matches the enum matcher rules.
@@ -1174,7 +1298,7 @@
}
/// EnumMatcher for 'match u32_texel_format'
-/// @see src/intrinsics.def:122:7
+/// @see src/intrinsics.def:127:7
class U32TexelFormat : public NumberMatcher {
public:
/// Checks whether the given number matches the enum matcher rules.
@@ -1206,7 +1330,7 @@
}
/// EnumMatcher for 'match read_or_write'
-/// @see src/intrinsics.def:125:7
+/// @see src/intrinsics.def:130:7
class ReadOrWrite : public NumberMatcher {
public:
/// Checks whether the given number matches the enum matcher rules.
@@ -1235,7 +1359,7 @@
}
/// EnumMatcher for 'match function_private_workgroup'
-/// @see src/intrinsics.def:127:7
+/// @see src/intrinsics.def:132:7
class FunctionPrivateWorkgroup : public NumberMatcher {
public:
/// Checks whether the given number matches the enum matcher rules.
@@ -1265,7 +1389,7 @@
}
/// EnumMatcher for 'match workgroup_or_storage'
-/// @see src/intrinsics.def:128:7
+/// @see src/intrinsics.def:133:7
class WorkgroupOrStorage : public NumberMatcher {
public:
/// Checks whether the given number matches the enum matcher rules.
@@ -1430,6 +1554,10 @@
TextureStorage2DArray TextureStorage2DArray_;
TextureStorage3D TextureStorage3D_;
TextureExternal TextureExternal_;
+ ModfResult ModfResult_;
+ ModfResultVec ModfResultVec_;
+ FrexpResult FrexpResult_;
+ FrexpResultVec FrexpResultVec_;
Fiu32 Fiu32_;
Iu32 Iu32_;
Scalar Scalar_;
@@ -1451,7 +1579,7 @@
~Matchers();
/// The open-types, types, and type matchers
- TypeMatcher const* const type[34] = {
+ TypeMatcher const* const type[38] = {
/* [0] */ &open_type_0_,
/* [1] */ &Bool_,
/* [2] */ &F32_,
@@ -1483,9 +1611,13 @@
/* [28] */ &TextureStorage2DArray_,
/* [29] */ &TextureStorage3D_,
/* [30] */ &TextureExternal_,
- /* [31] */ &Fiu32_,
- /* [32] */ &Iu32_,
- /* [33] */ &Scalar_,
+ /* [31] */ &ModfResult_,
+ /* [32] */ &ModfResultVec_,
+ /* [33] */ &FrexpResult_,
+ /* [34] */ &FrexpResultVec_,
+ /* [35] */ &Fiu32_,
+ /* [36] */ &Iu32_,
+ /* [37] */ &Scalar_,
};
/// The open-numbers, and number matchers
@@ -1510,19 +1642,19 @@
Matchers::~Matchers() = default;
constexpr MatcherIndex kMatcherIndices[] = {
- /* [0] */ 29,
- /* [1] */ 5,
+ /* [0] */ 27,
+ /* [1] */ 3,
/* [2] */ 10,
/* [3] */ 1,
/* [4] */ 8,
/* [5] */ 0,
- /* [6] */ 3,
+ /* [6] */ 2,
/* [7] */ 2,
/* [8] */ 10,
/* [9] */ 1,
/* [10] */ 8,
/* [11] */ 0,
- /* [12] */ 2,
+ /* [12] */ 3,
/* [13] */ 2,
/* [14] */ 10,
/* [15] */ 0,
@@ -1536,54 +1668,54 @@
/* [23] */ 0,
/* [24] */ 9,
/* [25] */ 0,
- /* [26] */ 1,
+ /* [26] */ 0,
/* [27] */ 2,
- /* [28] */ 9,
+ /* [28] */ 10,
/* [29] */ 0,
- /* [30] */ 0,
- /* [31] */ 2,
+ /* [30] */ 3,
+ /* [31] */ 1,
/* [32] */ 10,
/* [33] */ 0,
- /* [34] */ 3,
+ /* [34] */ 2,
/* [35] */ 1,
- /* [36] */ 10,
+ /* [36] */ 9,
/* [37] */ 0,
- /* [38] */ 2,
- /* [39] */ 1,
+ /* [38] */ 1,
+ /* [39] */ 2,
/* [40] */ 9,
/* [41] */ 1,
/* [42] */ 0,
/* [43] */ 2,
- /* [44] */ 8,
+ /* [44] */ 28,
/* [45] */ 0,
- /* [46] */ 0,
- /* [47] */ 28,
+ /* [46] */ 1,
+ /* [47] */ 29,
/* [48] */ 0,
/* [49] */ 1,
- /* [50] */ 29,
+ /* [50] */ 27,
/* [51] */ 0,
/* [52] */ 1,
- /* [53] */ 27,
- /* [54] */ 0,
- /* [55] */ 1,
- /* [56] */ 29,
- /* [57] */ 5,
- /* [58] */ 11,
- /* [59] */ 26,
- /* [60] */ 0,
- /* [61] */ 1,
- /* [62] */ 28,
- /* [63] */ 5,
- /* [64] */ 11,
- /* [65] */ 8,
- /* [66] */ 0,
- /* [67] */ 1,
- /* [68] */ 27,
+ /* [53] */ 29,
+ /* [54] */ 5,
+ /* [55] */ 11,
+ /* [56] */ 26,
+ /* [57] */ 0,
+ /* [58] */ 1,
+ /* [59] */ 28,
+ /* [60] */ 5,
+ /* [61] */ 11,
+ /* [62] */ 8,
+ /* [63] */ 0,
+ /* [64] */ 0,
+ /* [65] */ 27,
+ /* [66] */ 5,
+ /* [67] */ 11,
+ /* [68] */ 26,
/* [69] */ 5,
/* [70] */ 11,
- /* [71] */ 26,
- /* [72] */ 5,
- /* [73] */ 11,
+ /* [71] */ 8,
+ /* [72] */ 0,
+ /* [73] */ 1,
/* [74] */ 29,
/* [75] */ 4,
/* [76] */ 11,
@@ -1608,90 +1740,96 @@
/* [95] */ 26,
/* [96] */ 3,
/* [97] */ 11,
- /* [98] */ 28,
- /* [99] */ 5,
+ /* [98] */ 29,
+ /* [99] */ 3,
/* [100] */ 10,
- /* [101] */ 27,
+ /* [101] */ 29,
/* [102] */ 5,
/* [103] */ 10,
- /* [104] */ 26,
+ /* [104] */ 28,
/* [105] */ 5,
/* [106] */ 10,
- /* [107] */ 29,
- /* [108] */ 4,
+ /* [107] */ 27,
+ /* [108] */ 5,
/* [109] */ 10,
- /* [110] */ 28,
- /* [111] */ 4,
+ /* [110] */ 26,
+ /* [111] */ 5,
/* [112] */ 10,
- /* [113] */ 27,
+ /* [113] */ 29,
/* [114] */ 4,
/* [115] */ 10,
- /* [116] */ 26,
+ /* [116] */ 28,
/* [117] */ 4,
/* [118] */ 10,
- /* [119] */ 29,
- /* [120] */ 3,
+ /* [119] */ 27,
+ /* [120] */ 4,
/* [121] */ 10,
/* [122] */ 26,
- /* [123] */ 3,
+ /* [123] */ 4,
/* [124] */ 10,
- /* [125] */ 27,
+ /* [125] */ 26,
/* [126] */ 3,
/* [127] */ 10,
/* [128] */ 28,
/* [129] */ 3,
/* [130] */ 10,
- /* [131] */ 16,
- /* [132] */ 2,
+ /* [131] */ 5,
+ /* [132] */ 3,
/* [133] */ 7,
/* [134] */ 2,
/* [135] */ 5,
- /* [136] */ 3,
+ /* [136] */ 2,
/* [137] */ 6,
/* [138] */ 3,
/* [139] */ 7,
/* [140] */ 3,
- /* [141] */ 5,
+ /* [141] */ 6,
/* [142] */ 2,
- /* [143] */ 7,
- /* [144] */ 4,
- /* [145] */ 6,
- /* [146] */ 2,
- /* [147] */ 15,
- /* [148] */ 0,
- /* [149] */ 7,
+ /* [143] */ 32,
+ /* [144] */ 0,
+ /* [145] */ 7,
+ /* [146] */ 4,
+ /* [147] */ 20,
+ /* [148] */ 2,
+ /* [149] */ 15,
/* [150] */ 0,
- /* [151] */ 16,
+ /* [151] */ 7,
/* [152] */ 0,
- /* [153] */ 20,
- /* [154] */ 2,
- /* [155] */ 17,
+ /* [153] */ 34,
+ /* [154] */ 0,
+ /* [155] */ 16,
/* [156] */ 0,
- /* [157] */ 19,
- /* [158] */ 2,
+ /* [157] */ 17,
+ /* [158] */ 0,
/* [159] */ 18,
- /* [160] */ 0,
+ /* [160] */ 2,
/* [161] */ 18,
- /* [162] */ 2,
+ /* [162] */ 0,
/* [163] */ 21,
/* [164] */ 0,
/* [165] */ 17,
/* [166] */ 2,
- /* [167] */ 19,
- /* [168] */ 0,
- /* [169] */ 20,
- /* [170] */ 0,
- /* [171] */ 15,
- /* [172] */ 2,
- /* [173] */ 5,
+ /* [167] */ 16,
+ /* [168] */ 2,
+ /* [169] */ 19,
+ /* [170] */ 2,
+ /* [171] */ 19,
+ /* [172] */ 0,
+ /* [173] */ 20,
/* [174] */ 0,
- /* [175] */ 13,
- /* [176] */ 25,
- /* [177] */ 24,
- /* [178] */ 23,
- /* [179] */ 22,
- /* [180] */ 14,
- /* [181] */ 30,
+ /* [175] */ 15,
+ /* [176] */ 2,
+ /* [177] */ 5,
+ /* [178] */ 0,
+ /* [179] */ 13,
+ /* [180] */ 25,
+ /* [181] */ 24,
+ /* [182] */ 23,
+ /* [183] */ 22,
+ /* [184] */ 14,
+ /* [185] */ 30,
+ /* [186] */ 31,
+ /* [187] */ 33,
};
// Assert that the MatcherIndex is big enough to index all the matchers, plus
@@ -1709,42 +1847,42 @@
{
/* [1] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [2] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [3] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [4] */
/* usage */ ParameterUsage::kDdx,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [5] */
/* usage */ ParameterUsage::kDdy,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [6] */
/* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [7] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[165],
+ /* matcher indices */ &kMatcherIndices[159],
},
{
/* [8] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [9] */
@@ -1753,78 +1891,78 @@
},
{
/* [10] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[6],
+ /* usage */ ParameterUsage::kDdx,
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [11] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[7],
+ /* usage */ ParameterUsage::kDdy,
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [12] */
/* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[137],
},
{
/* [13] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[178],
+ /* matcher indices */ &kMatcherIndices[182],
},
{
/* [14] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[180],
+ /* matcher indices */ &kMatcherIndices[184],
},
{
/* [15] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [16] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [17] */
/* usage */ ParameterUsage::kDepthRef,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [18] */
/* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [19] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[161],
+ /* matcher indices */ &kMatcherIndices[182],
},
{
/* [20] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[184],
},
{
/* [21] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[145],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [22] */
- /* usage */ ParameterUsage::kDdx,
- /* matcher indices */ &kMatcherIndices[145],
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [23] */
- /* usage */ ParameterUsage::kDdy,
- /* matcher indices */ &kMatcherIndices[145],
+ /* usage */ ParameterUsage::kDepthRef,
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [24] */
/* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[137],
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [25] */
@@ -1834,37 +1972,37 @@
{
/* [26] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [27] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [28] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [29] */
/* usage */ ParameterUsage::kBias,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [30] */
/* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [31] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[178],
+ /* matcher indices */ &kMatcherIndices[147],
},
{
/* [32] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[180],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [33] */
@@ -1874,77 +2012,77 @@
{
/* [34] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [35] */
- /* usage */ ParameterUsage::kDepthRef,
- /* matcher indices */ &kMatcherIndices[7],
+ /* usage */ ParameterUsage::kDdx,
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [36] */
- /* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[135],
+ /* usage */ ParameterUsage::kDdy,
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [37] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[178],
+ /* matcher indices */ &kMatcherIndices[182],
},
{
/* [38] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [39] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [40] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [41] */
/* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [42] */
/* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [43] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[153],
+ /* matcher indices */ &kMatcherIndices[165],
},
{
/* [44] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [45] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[145],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [46] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [47] */
/* usage */ ParameterUsage::kDdx,
- /* matcher indices */ &kMatcherIndices[145],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [48] */
/* usage */ ParameterUsage::kDdy,
- /* matcher indices */ &kMatcherIndices[145],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [49] */
@@ -1954,67 +2092,67 @@
{
/* [50] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [51] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [52] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [53] */
- /* usage */ ParameterUsage::kDdx,
- /* matcher indices */ &kMatcherIndices[141],
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [54] */
- /* usage */ ParameterUsage::kDdy,
- /* matcher indices */ &kMatcherIndices[141],
+ /* usage */ ParameterUsage::kOffset,
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [55] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[131],
+ /* matcher indices */ &kMatcherIndices[167],
},
{
/* [56] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [57] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [58] */
/* usage */ ParameterUsage::kDdx,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [59] */
/* usage */ ParameterUsage::kDdy,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [60] */
/* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [61] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[178],
+ /* matcher indices */ &kMatcherIndices[159],
},
{
/* [62] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[180],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [63] */
@@ -2023,63 +2161,63 @@
},
{
/* [64] */
- /* usage */ ParameterUsage::kArrayIndex,
+ /* usage */ ParameterUsage::kLevel,
/* matcher indices */ &kMatcherIndices[6],
},
{
/* [65] */
- /* usage */ ParameterUsage::kDepthRef,
- /* matcher indices */ &kMatcherIndices[7],
+ /* usage */ ParameterUsage::kOffset,
+ /* matcher indices */ &kMatcherIndices[137],
},
{
/* [66] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[131],
+ /* matcher indices */ &kMatcherIndices[167],
},
{
/* [67] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [68] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [69] */
/* usage */ ParameterUsage::kBias,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [70] */
/* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [71] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[178],
+ /* matcher indices */ &kMatcherIndices[182],
},
{
/* [72] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [73] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [74] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [75] */
/* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [76] */
@@ -2089,42 +2227,42 @@
{
/* [77] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [78] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [79] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [80] */
/* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [81] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[161],
+ /* matcher indices */ &kMatcherIndices[159],
},
{
/* [82] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [83] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[145],
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [84] */
/* usage */ ParameterUsage::kBias,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [85] */
@@ -2134,162 +2272,162 @@
{
/* [86] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[153],
+ /* matcher indices */ &kMatcherIndices[147],
},
{
/* [87] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [88] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[145],
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [89] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [90] */
/* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [91] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[153],
+ /* matcher indices */ &kMatcherIndices[147],
},
{
/* [92] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [93] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[145],
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [94] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [95] */
/* usage */ ParameterUsage::kBias,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [96] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[157],
+ /* matcher indices */ &kMatcherIndices[183],
},
{
/* [97] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [98] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[145],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [99] */
- /* usage */ ParameterUsage::kDdx,
- /* matcher indices */ &kMatcherIndices[145],
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [100] */
- /* usage */ ParameterUsage::kDdy,
- /* matcher indices */ &kMatcherIndices[145],
+ /* usage */ ParameterUsage::kOffset,
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [101] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[179],
+ /* matcher indices */ &kMatcherIndices[183],
},
{
/* [102] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[180],
+ /* matcher indices */ &kMatcherIndices[184],
},
{
/* [103] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [104] */
/* usage */ ParameterUsage::kDepthRef,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [105] */
/* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [106] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[161],
+ /* matcher indices */ &kMatcherIndices[182],
},
{
/* [107] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[184],
},
{
/* [108] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[145],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [109] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[7],
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [110] */
- /* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[137],
+ /* usage */ ParameterUsage::kDepthRef,
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [111] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[179],
+ /* matcher indices */ &kMatcherIndices[165],
},
{
/* [112] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [113] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [114] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[6],
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [115] */
/* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [116] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[131],
+ /* matcher indices */ &kMatcherIndices[180],
},
{
/* [117] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[184],
},
{
/* [118] */
@@ -2298,48 +2436,48 @@
},
{
/* [119] */
- /* usage */ ParameterUsage::kDdx,
- /* matcher indices */ &kMatcherIndices[141],
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [120] */
- /* usage */ ParameterUsage::kDdy,
- /* matcher indices */ &kMatcherIndices[141],
+ /* usage */ ParameterUsage::kDepthRef,
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [121] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[176],
+ /* matcher indices */ &kMatcherIndices[180],
},
{
/* [122] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[180],
+ /* matcher indices */ &kMatcherIndices[184],
},
{
/* [123] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[145],
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [124] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [125] */
/* usage */ ParameterUsage::kDepthRef,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [126] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[165],
+ /* matcher indices */ &kMatcherIndices[169],
},
{
/* [127] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [128] */
@@ -2348,283 +2486,283 @@
},
{
/* [129] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[6],
+ /* usage */ ParameterUsage::kDdx,
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [130] */
- /* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[135],
+ /* usage */ ParameterUsage::kDdy,
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [131] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[179],
+ /* matcher indices */ &kMatcherIndices[183],
},
{
/* [132] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[180],
+ /* matcher indices */ &kMatcherIndices[184],
},
{
/* [133] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [134] */
/* usage */ ParameterUsage::kDepthRef,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [135] */
/* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [136] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[178],
+ /* matcher indices */ &kMatcherIndices[182],
},
{
/* [137] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [138] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [139] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [140] */
/* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [141] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[176],
+ /* matcher indices */ &kMatcherIndices[180],
},
{
/* [142] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[180],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [143] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[145],
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [144] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [145] */
- /* usage */ ParameterUsage::kDepthRef,
- /* matcher indices */ &kMatcherIndices[7],
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [146] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[161],
+ /* matcher indices */ &kMatcherIndices[165],
},
{
/* [147] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [148] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[145],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [149] */
- /* usage */ ParameterUsage::kDdx,
- /* matcher indices */ &kMatcherIndices[145],
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [150] */
- /* usage */ ParameterUsage::kDdy,
- /* matcher indices */ &kMatcherIndices[145],
+ /* usage */ ParameterUsage::kBias,
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [151] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[176],
+ /* matcher indices */ &kMatcherIndices[159],
},
{
/* [152] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [153] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[145],
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [154] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[6],
+ /* usage */ ParameterUsage::kDdx,
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [155] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[6],
+ /* usage */ ParameterUsage::kDdy,
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [156] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[178],
+ /* matcher indices */ &kMatcherIndices[167],
},
{
/* [157] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[180],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [158] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [159] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[6],
+ /* usage */ ParameterUsage::kDdx,
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [160] */
- /* usage */ ParameterUsage::kDepthRef,
- /* matcher indices */ &kMatcherIndices[7],
+ /* usage */ ParameterUsage::kDdy,
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [161] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[165],
+ /* matcher indices */ &kMatcherIndices[182],
},
{
/* [162] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[184],
},
{
/* [163] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [164] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [165] */
- /* usage */ ParameterUsage::kBias,
- /* matcher indices */ &kMatcherIndices[7],
+ /* usage */ ParameterUsage::kDepthRef,
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [166] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[131],
+ /* matcher indices */ &kMatcherIndices[167],
},
{
/* [167] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [168] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [169] */
/* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [170] */
/* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [171] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[161],
+ /* matcher indices */ &kMatcherIndices[157],
},
{
/* [172] */
- /* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [173] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[145],
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [174] */
- /* usage */ ParameterUsage::kBias,
- /* matcher indices */ &kMatcherIndices[7],
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [175] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[177],
+ /* matcher indices */ &kMatcherIndices[181],
},
{
/* [176] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[180],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [177] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[145],
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [178] */
- /* usage */ ParameterUsage::kDepthRef,
- /* matcher indices */ &kMatcherIndices[7],
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [179] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[177],
+ /* matcher indices */ &kMatcherIndices[182],
},
{
/* [180] */
- /* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [181] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[145],
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [182] */
/* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [183] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[179],
+ /* matcher indices */ &kMatcherIndices[181],
},
{
/* [184] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[180],
+ /* matcher indices */ &kMatcherIndices[184],
},
{
/* [185] */
@@ -2634,102 +2772,102 @@
{
/* [186] */
/* usage */ ParameterUsage::kDepthRef,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [187] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[98],
+ /* matcher indices */ &kMatcherIndices[104],
},
{
/* [188] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [189] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [190] */
/* usage */ ParameterUsage::kValue,
- /* matcher indices */ &kMatcherIndices[143],
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [191] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[179],
+ /* matcher indices */ &kMatcherIndices[183],
},
{
/* [192] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[180],
+ /* matcher indices */ &kMatcherIndices[184],
},
{
/* [193] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [194] */
/* usage */ ParameterUsage::kDepthRef,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [195] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[177],
+ /* matcher indices */ &kMatcherIndices[183],
},
{
/* [196] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[180],
+ /* matcher indices */ &kMatcherIndices[184],
},
{
/* [197] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[145],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [198] */
/* usage */ ParameterUsage::kDepthRef,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [199] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[157],
+ /* matcher indices */ &kMatcherIndices[169],
},
{
/* [200] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [201] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[145],
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [202] */
/* usage */ ParameterUsage::kBias,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [203] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[110],
+ /* matcher indices */ &kMatcherIndices[116],
},
{
/* [204] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [205] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [206] */
@@ -2739,82 +2877,82 @@
{
/* [207] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[131],
+ /* matcher indices */ &kMatcherIndices[167],
},
{
/* [208] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [209] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [210] */
/* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [211] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[157],
+ /* matcher indices */ &kMatcherIndices[169],
},
{
/* [212] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [213] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[145],
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [214] */
/* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [215] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[155],
+ /* matcher indices */ &kMatcherIndices[159],
},
{
/* [216] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* usage */ ParameterUsage::kSampler,
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [217] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[6],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [218] */
- /* usage */ ParameterUsage::kLevel,
+ /* usage */ ParameterUsage::kBias,
/* matcher indices */ &kMatcherIndices[6],
},
{
/* [219] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[179],
+ /* matcher indices */ &kMatcherIndices[183],
},
{
/* [220] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [221] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [222] */
/* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [223] */
@@ -2824,12 +2962,12 @@
{
/* [224] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [225] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [226] */
@@ -2839,122 +2977,122 @@
{
/* [227] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[161],
+ /* matcher indices */ &kMatcherIndices[159],
},
{
/* [228] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [229] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[145],
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [230] */
/* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [231] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[131],
+ /* matcher indices */ &kMatcherIndices[167],
},
{
/* [232] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [233] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [234] */
/* usage */ ParameterUsage::kBias,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [235] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[176],
+ /* matcher indices */ &kMatcherIndices[180],
},
{
/* [236] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [237] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[145],
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [238] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [239] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[178],
+ /* matcher indices */ &kMatcherIndices[182],
},
{
/* [240] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [241] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [242] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [243] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[179],
+ /* matcher indices */ &kMatcherIndices[183],
},
{
/* [244] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [245] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [246] */
/* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [247] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[153],
+ /* matcher indices */ &kMatcherIndices[147],
},
{
/* [248] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [249] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[145],
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [250] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [251] */
@@ -2964,72 +3102,72 @@
{
/* [252] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [253] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [254] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [255] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[131],
+ /* matcher indices */ &kMatcherIndices[167],
},
{
/* [256] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [257] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [258] */
/* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [259] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[178],
+ /* matcher indices */ &kMatcherIndices[181],
},
{
/* [260] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* usage */ ParameterUsage::kSampler,
+ /* matcher indices */ &kMatcherIndices[184],
},
{
/* [261] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[6],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [262] */
- /* usage */ ParameterUsage::kLevel,
+ /* usage */ ParameterUsage::kDepthRef,
/* matcher indices */ &kMatcherIndices[6],
},
{
/* [263] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[161],
+ /* matcher indices */ &kMatcherIndices[159],
},
{
/* [264] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [265] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[145],
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [266] */
@@ -3038,58 +3176,58 @@
},
{
/* [267] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[183],
},
{
/* [268] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [269] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [270] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[171],
+ /* matcher indices */ &kMatcherIndices[113],
},
{
/* [271] */
- /* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[137],
},
{
/* [272] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[7],
+ /* usage */ ParameterUsage::kValue,
+ /* matcher indices */ &kMatcherIndices[139],
},
{
/* [273] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[181],
+ /* matcher indices */ &kMatcherIndices[185],
},
{
/* [274] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [275] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [276] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[122],
+ /* matcher indices */ &kMatcherIndices[125],
},
{
/* [277] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [278] */
@@ -3099,42 +3237,42 @@
{
/* [279] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [280] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [281] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [282] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [283] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [284] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [285] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[125],
+ /* matcher indices */ &kMatcherIndices[0],
},
{
/* [286] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [287] */
@@ -3144,22 +3282,22 @@
{
/* [288] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [289] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [290] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [291] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[119],
+ /* matcher indices */ &kMatcherIndices[98],
},
{
/* [292] */
@@ -3174,12 +3312,12 @@
{
/* [294] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[116],
+ /* matcher indices */ &kMatcherIndices[122],
},
{
/* [295] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [296] */
@@ -3189,12 +3327,12 @@
{
/* [297] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[113],
+ /* matcher indices */ &kMatcherIndices[119],
},
{
/* [298] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [299] */
@@ -3204,37 +3342,37 @@
{
/* [300] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[107],
+ /* matcher indices */ &kMatcherIndices[110],
},
{
/* [301] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[137],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [302] */
/* usage */ ParameterUsage::kValue,
- /* matcher indices */ &kMatcherIndices[139],
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [303] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[101],
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [304] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [305] */
/* usage */ ParameterUsage::kValue,
- /* matcher indices */ &kMatcherIndices[143],
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [306] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[0],
+ /* matcher indices */ &kMatcherIndices[101],
},
{
/* [307] */
@@ -3244,252 +3382,252 @@
{
/* [308] */
/* usage */ ParameterUsage::kValue,
- /* matcher indices */ &kMatcherIndices[143],
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [309] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[104],
+ /* matcher indices */ &kMatcherIndices[149],
},
{
/* [310] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [311] */
- /* usage */ ParameterUsage::kValue,
- /* matcher indices */ &kMatcherIndices[143],
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [312] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[131],
+ /* matcher indices */ &kMatcherIndices[155],
},
{
/* [313] */
- /* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [314] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[141],
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [315] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[151],
+ /* matcher indices */ &kMatcherIndices[175],
},
{
/* [316] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* usage */ ParameterUsage::kSampler,
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [317] */
- /* usage */ ParameterUsage::kLevel,
+ /* usage */ ParameterUsage::kCoords,
/* matcher indices */ &kMatcherIndices[6],
},
{
/* [318] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[159],
+ /* matcher indices */ &kMatcherIndices[167],
},
{
/* [319] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[137],
+ /* usage */ ParameterUsage::kSampler,
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [320] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[6],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [321] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[163],
+ /* matcher indices */ &kMatcherIndices[161],
},
{
/* [322] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[137],
},
{
/* [323] */
- /* usage */ ParameterUsage::kSampleIndex,
- /* matcher indices */ &kMatcherIndices[6],
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [324] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[179],
+ /* matcher indices */ &kMatcherIndices[163],
},
{
/* [325] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [326] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[6],
+ /* usage */ ParameterUsage::kSampleIndex,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [327] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[147],
+ /* matcher indices */ &kMatcherIndices[159],
},
{
/* [328] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[6],
+ /* usage */ ParameterUsage::kSampler,
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [329] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[6],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [330] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[161],
+ /* matcher indices */ &kMatcherIndices[169],
},
{
/* [331] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [332] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[145],
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [333] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[157],
+ /* matcher indices */ &kMatcherIndices[181],
},
{
/* [334] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [335] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[145],
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [336] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[177],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [337] */
- /* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [338] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[145],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [339] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[62],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [340] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [341] */
- /* usage */ ParameterUsage::kArrayIndex,
+ /* usage */ ParameterUsage::kNone,
/* matcher indices */ &kMatcherIndices[6],
},
{
/* [342] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[59],
},
{
/* [343] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [344] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [345] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[62],
},
{
/* [346] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[62],
},
{
/* [347] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[71],
},
{
/* [348] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[62],
},
{
/* [349] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[62],
},
{
/* [350] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[3],
},
{
/* [351] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[5],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [352] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[5],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [353] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[5],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [354] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[44],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [355] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[44],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [356] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[44],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [357] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[14],
+ /* matcher indices */ &kMatcherIndices[5],
},
{
/* [358] */
@@ -3499,172 +3637,172 @@
{
/* [359] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[5],
+ /* matcher indices */ &kMatcherIndices[3],
},
{
/* [360] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[77],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[5],
},
{
/* [361] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[5],
},
{
/* [362] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[6],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[5],
},
{
/* [363] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[44],
+ /* matcher indices */ &kMatcherIndices[14],
},
{
/* [364] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[44],
+ /* matcher indices */ &kMatcherIndices[5],
},
{
/* [365] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[65],
+ /* matcher indices */ &kMatcherIndices[5],
},
{
/* [366] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [367] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [368] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [369] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[44],
+ /* matcher indices */ &kMatcherIndices[62],
},
{
/* [370] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[44],
+ /* matcher indices */ &kMatcherIndices[62],
},
{
/* [371] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[3],
+ /* matcher indices */ &kMatcherIndices[62],
},
{
/* [372] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[5],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[77],
},
{
/* [373] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[5],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [374] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[3],
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [375] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[179],
+ /* matcher indices */ &kMatcherIndices[89],
},
{
/* [376] */
- /* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[175],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [377] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[141],
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [378] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[89],
+ /* matcher indices */ &kMatcherIndices[183],
},
{
/* [379] */
+ /* usage */ ParameterUsage::kSampler,
+ /* matcher indices */ &kMatcherIndices[179],
+ },
+ {
+ /* [380] */
/* usage */ ParameterUsage::kCoords,
/* matcher indices */ &kMatcherIndices[135],
},
{
- /* [380] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[6],
- },
- {
/* [381] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[95],
- },
- {
- /* [382] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[6],
- },
- {
- /* [383] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
- },
- {
- /* [384] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
- },
- {
- /* [385] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
- },
- {
- /* [386] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
- },
- {
- /* [387] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[86],
- },
- {
- /* [388] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[137],
- },
- {
- /* [389] */
- /* usage */ ParameterUsage::kTexture,
/* matcher indices */ &kMatcherIndices[83],
},
{
- /* [390] */
+ /* [382] */
/* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[1],
+ },
+ {
+ /* [383] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[80],
+ },
+ {
+ /* [384] */
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[131],
+ },
+ {
+ /* [385] */
+ /* usage */ ParameterUsage::kNone,
/* matcher indices */ &kMatcherIndices[6],
},
{
- /* [391] */
+ /* [386] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
+ },
+ {
+ /* [387] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[4],
+ },
+ {
+ /* [388] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[4],
+ },
+ {
+ /* [389] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[4],
+ },
+ {
+ /* [390] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[4],
+ },
+ {
+ /* [391] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[86],
},
{
/* [392] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[137],
},
{
/* [393] */
@@ -3674,207 +3812,207 @@
{
/* [394] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [395] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[145],
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [396] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[145],
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [397] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [398] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[44],
+ /* matcher indices */ &kMatcherIndices[2],
},
{
/* [399] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
- },
- {
- /* [400] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
- },
- {
- /* [401] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
- },
- {
- /* [402] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[8],
- },
- {
- /* [403] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
- },
- {
- /* [404] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[36],
- },
- {
- /* [405] */
/* usage */ ParameterUsage::kTexture,
/* matcher indices */ &kMatcherIndices[74],
},
{
- /* [406] */
+ /* [400] */
/* usage */ ParameterUsage::kCoords,
/* matcher indices */ &kMatcherIndices[137],
},
{
+ /* [401] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[6],
+ },
+ {
+ /* [402] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[32],
+ },
+ {
+ /* [403] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[62],
+ },
+ {
+ /* [404] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[62],
+ },
+ {
+ /* [405] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[5],
+ },
+ {
+ /* [406] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[5],
+ },
+ {
/* [407] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[71],
+ /* matcher indices */ &kMatcherIndices[68],
},
{
/* [408] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [409] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[178],
+ /* matcher indices */ &kMatcherIndices[171],
},
{
/* [410] */
/* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [411] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[80],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [412] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [413] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[44],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [414] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[44],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [415] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[65],
},
{
/* [416] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [417] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[62],
},
{
/* [418] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[62],
},
{
/* [419] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[5],
},
{
/* [420] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[5],
},
{
/* [421] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [422] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [423] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[14],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [424] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[5],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [425] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[68],
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [426] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[137],
},
{
/* [427] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[5],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [428] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[5],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [429] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[44],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [430] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[44],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [431] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[56],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[14],
},
{
/* [432] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[137],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[5],
},
{
/* [433] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[181],
+ /* matcher indices */ &kMatcherIndices[185],
},
{
/* [434] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [435] */
@@ -3888,13 +4026,13 @@
},
{
/* [437] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[151],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[14],
},
{
/* [438] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[6],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[5],
},
{
/* [439] */
@@ -3909,12 +4047,12 @@
{
/* [441] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[5],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [442] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[5],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [443] */
@@ -3929,12 +4067,12 @@
{
/* [445] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [446] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[8],
},
{
/* [447] */
@@ -3968,18 +4106,18 @@
},
{
/* [453] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[147],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [454] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[6],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[62],
},
{
/* [455] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[14],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [456] */
@@ -3988,273 +4126,273 @@
},
{
/* [457] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[173],
},
{
/* [458] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [459] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[179],
+ /* matcher indices */ &kMatcherIndices[180],
},
{
/* [460] */
/* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [461] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[155],
+ /* matcher indices */ &kMatcherIndices[149],
},
{
/* [462] */
/* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[6],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [463] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
- },
- {
- /* [464] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[5],
- },
- {
- /* [465] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[159],
- },
- {
- /* [466] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[6],
- },
- {
- /* [467] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
- },
- {
- /* [468] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[32],
- },
- {
- /* [469] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[167],
- },
- {
- /* [470] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[6],
- },
- {
- /* [471] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[176],
- },
- {
- /* [472] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[6],
- },
- {
- /* [473] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[169],
- },
- {
- /* [474] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[6],
- },
- {
- /* [475] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[177],
- },
- {
- /* [476] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[6],
- },
- {
- /* [477] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
- },
- {
- /* [478] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[2],
- },
- {
- /* [479] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[159],
- },
- {
- /* [480] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[178],
- },
- {
- /* [481] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[179],
- },
- {
- /* [482] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[177],
- },
- {
- /* [483] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[163],
- },
- {
- /* [484] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[176],
- },
- {
- /* [485] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[169],
- },
- {
- /* [486] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[59],
- },
- {
- /* [487] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[53],
- },
- {
- /* [488] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[47],
- },
- {
- /* [489] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[50],
- },
- {
- /* [490] */
/* usage */ ParameterUsage::kTexture,
/* matcher indices */ &kMatcherIndices[181],
},
{
- /* [491] */
+ /* [464] */
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[1],
+ },
+ {
+ /* [465] */
/* usage */ ParameterUsage::kTexture,
/* matcher indices */ &kMatcherIndices[155],
},
{
- /* [492] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[169],
+ /* [466] */
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
- /* [493] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[178],
+ /* [467] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[6],
},
{
- /* [494] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[176],
+ /* [468] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[28],
},
{
- /* [495] */
+ /* [469] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[47],
+ /* matcher indices */ &kMatcherIndices[157],
},
{
- /* [496] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[147],
+ /* [470] */
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
- /* [497] */
+ /* [471] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[151],
+ /* matcher indices */ &kMatcherIndices[182],
},
{
- /* [498] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[155],
+ /* [472] */
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
- /* [499] */
+ /* [473] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[159],
+ /* matcher indices */ &kMatcherIndices[161],
},
{
- /* [500] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[167],
+ /* [474] */
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
- /* [501] */
+ /* [475] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[169],
+ /* matcher indices */ &kMatcherIndices[183],
},
{
- /* [502] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[179],
+ /* [476] */
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
- /* [503] */
+ /* [477] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[178],
+ /* matcher indices */ &kMatcherIndices[95],
},
{
- /* [504] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[177],
+ /* [478] */
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
- /* [505] */
+ /* [479] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[176],
+ /* matcher indices */ &kMatcherIndices[157],
},
{
- /* [506] */
+ /* [480] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[173],
+ },
+ {
+ /* [481] */
/* usage */ ParameterUsage::kTexture,
/* matcher indices */ &kMatcherIndices[163],
},
{
- /* [507] */
+ /* [482] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[167],
+ /* matcher indices */ &kMatcherIndices[183],
},
{
- /* [508] */
+ /* [483] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[171],
+ },
+ {
+ /* [484] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[182],
+ },
+ {
+ /* [485] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[161],
+ },
+ {
+ /* [486] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[181],
+ },
+ {
+ /* [487] */
/* usage */ ParameterUsage::kTexture,
/* matcher indices */ &kMatcherIndices[155],
},
{
+ /* [488] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[180],
+ },
+ {
+ /* [489] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[149],
+ },
+ {
+ /* [490] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[56],
+ },
+ {
+ /* [491] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[50],
+ },
+ {
+ /* [492] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[44],
+ },
+ {
+ /* [493] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[47],
+ },
+ {
+ /* [494] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[185],
+ },
+ {
+ /* [495] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[157],
+ },
+ {
+ /* [496] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[173],
+ },
+ {
+ /* [497] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[182],
+ },
+ {
+ /* [498] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[180],
+ },
+ {
+ /* [499] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[44],
+ },
+ {
+ /* [500] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[149],
+ },
+ {
+ /* [501] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[155],
+ },
+ {
+ /* [502] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[157],
+ },
+ {
+ /* [503] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[161],
+ },
+ {
+ /* [504] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[171],
+ },
+ {
+ /* [505] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[173],
+ },
+ {
+ /* [506] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[183],
+ },
+ {
+ /* [507] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[182],
+ },
+ {
+ /* [508] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[181],
+ },
+ {
/* [509] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[151],
+ /* matcher indices */ &kMatcherIndices[180],
},
{
/* [510] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[147],
+ /* matcher indices */ &kMatcherIndices[163],
},
{
/* [511] */
@@ -4284,92 +4422,92 @@
{
/* [516] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [517] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [518] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[24],
+ /* matcher indices */ &kMatcherIndices[36],
},
{
/* [519] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [520] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [521] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [522] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [523] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [524] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [525] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [526] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [527] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [528] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [529] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [530] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [531] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [532] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [533] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[44],
+ /* matcher indices */ &kMatcherIndices[62],
},
{
/* [534] */
@@ -4389,341 +4527,361 @@
{
/* [537] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [538] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [539] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[135],
},
{
/* [540] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [541] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [542] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [543] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [544] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [545] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [546] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [547] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [548] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [549] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [550] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [551] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [552] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [553] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [554] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [555] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [556] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [557] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[5],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [558] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [559] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[5],
},
{
/* [560] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [561] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [562] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [563] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [564] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [565] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [566] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [567] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [568] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [569] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [570] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [571] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [572] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [573] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [574] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [575] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [576] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [577] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [578] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [579] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [580] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [581] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [582] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [583] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [584] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[28],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [585] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[44],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [586] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[5],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [587] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [588] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[24],
},
{
/* [589] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[62],
},
{
/* [590] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[5],
},
{
/* [591] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [592] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [593] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [594] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [595] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [596] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [597] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[14],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [598] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[19],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [599] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[65],
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [600] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[65],
+ /* matcher indices */ &kMatcherIndices[6],
},
{
/* [601] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[14],
},
{
/* [602] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[7],
+ /* matcher indices */ &kMatcherIndices[19],
},
{
/* [603] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[44],
+ /* matcher indices */ &kMatcherIndices[71],
},
{
/* [604] */
/* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[71],
+ },
+ {
+ /* [605] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[4],
+ },
+ {
+ /* [606] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[6],
+ },
+ {
+ /* [607] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[62],
+ },
+ {
+ /* [608] */
+ /* usage */ ParameterUsage::kNone,
/* matcher indices */ &kMatcherIndices[5],
},
};
@@ -4737,17 +4895,17 @@
{
/* [1] */
/* name */ "T",
- /* matcher index */ 31,
+ /* matcher index */ 35,
},
{
/* [2] */
/* name */ "T",
- /* matcher index */ 32,
+ /* matcher index */ 36,
},
{
/* [3] */
/* name */ "T",
- /* matcher index */ 33,
+ /* matcher index */ 37,
},
};
@@ -4797,8 +4955,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[510],
- /* return matcher indices */ &kMatcherIndices[6],
+ /* parameters */ &kParameters[489],
+ /* return matcher indices */ &kMatcherIndices[1],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -4809,8 +4967,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[453],
- /* return matcher indices */ &kMatcherIndices[6],
+ /* parameters */ &kParameters[461],
+ /* return matcher indices */ &kMatcherIndices[1],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -4821,8 +4979,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[509],
- /* return matcher indices */ &kMatcherIndices[135],
+ /* parameters */ &kParameters[487],
+ /* return matcher indices */ &kMatcherIndices[131],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -4833,8 +4991,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[437],
- /* return matcher indices */ &kMatcherIndices[135],
+ /* parameters */ &kParameters[465],
+ /* return matcher indices */ &kMatcherIndices[131],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -4845,8 +5003,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[508],
- /* return matcher indices */ &kMatcherIndices[135],
+ /* parameters */ &kParameters[479],
+ /* return matcher indices */ &kMatcherIndices[131],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -4857,8 +5015,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[461],
- /* return matcher indices */ &kMatcherIndices[135],
+ /* parameters */ &kParameters[469],
+ /* return matcher indices */ &kMatcherIndices[131],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -4869,7 +5027,7 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[479],
+ /* parameters */ &kParameters[485],
/* return matcher indices */ &kMatcherIndices[137],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
@@ -4881,7 +5039,7 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[465],
+ /* parameters */ &kParameters[473],
/* return matcher indices */ &kMatcherIndices[137],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
@@ -4893,8 +5051,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[507],
- /* return matcher indices */ &kMatcherIndices[135],
+ /* parameters */ &kParameters[483],
+ /* return matcher indices */ &kMatcherIndices[131],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -4905,8 +5063,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[469],
- /* return matcher indices */ &kMatcherIndices[135],
+ /* parameters */ &kParameters[409],
+ /* return matcher indices */ &kMatcherIndices[131],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -4917,8 +5075,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[485],
- /* return matcher indices */ &kMatcherIndices[135],
+ /* parameters */ &kParameters[480],
+ /* return matcher indices */ &kMatcherIndices[131],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -4929,8 +5087,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[473],
- /* return matcher indices */ &kMatcherIndices[135],
+ /* parameters */ &kParameters[457],
+ /* return matcher indices */ &kMatcherIndices[131],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -4941,8 +5099,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[483],
- /* return matcher indices */ &kMatcherIndices[135],
+ /* parameters */ &kParameters[481],
+ /* return matcher indices */ &kMatcherIndices[131],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -4953,8 +5111,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[481],
- /* return matcher indices */ &kMatcherIndices[135],
+ /* parameters */ &kParameters[482],
+ /* return matcher indices */ &kMatcherIndices[131],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -4965,8 +5123,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[459],
- /* return matcher indices */ &kMatcherIndices[135],
+ /* parameters */ &kParameters[475],
+ /* return matcher indices */ &kMatcherIndices[131],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -4977,8 +5135,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[480],
- /* return matcher indices */ &kMatcherIndices[135],
+ /* parameters */ &kParameters[484],
+ /* return matcher indices */ &kMatcherIndices[131],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -4989,8 +5147,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[409],
- /* return matcher indices */ &kMatcherIndices[135],
+ /* parameters */ &kParameters[471],
+ /* return matcher indices */ &kMatcherIndices[131],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -5001,8 +5159,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[482],
- /* return matcher indices */ &kMatcherIndices[135],
+ /* parameters */ &kParameters[486],
+ /* return matcher indices */ &kMatcherIndices[131],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -5013,8 +5171,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[475],
- /* return matcher indices */ &kMatcherIndices[135],
+ /* parameters */ &kParameters[463],
+ /* return matcher indices */ &kMatcherIndices[131],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -5025,8 +5183,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[484],
- /* return matcher indices */ &kMatcherIndices[135],
+ /* parameters */ &kParameters[488],
+ /* return matcher indices */ &kMatcherIndices[131],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -5037,8 +5195,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[471],
- /* return matcher indices */ &kMatcherIndices[135],
+ /* parameters */ &kParameters[459],
+ /* return matcher indices */ &kMatcherIndices[131],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -5049,8 +5207,8 @@
/* num open numbers */ 2,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[4],
- /* parameters */ &kParameters[486],
- /* return matcher indices */ &kMatcherIndices[6],
+ /* parameters */ &kParameters[490],
+ /* return matcher indices */ &kMatcherIndices[1],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -5061,8 +5219,8 @@
/* num open numbers */ 2,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[4],
- /* parameters */ &kParameters[487],
- /* return matcher indices */ &kMatcherIndices[135],
+ /* parameters */ &kParameters[491],
+ /* return matcher indices */ &kMatcherIndices[131],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -5073,8 +5231,8 @@
/* num open numbers */ 2,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[4],
- /* parameters */ &kParameters[488],
- /* return matcher indices */ &kMatcherIndices[135],
+ /* parameters */ &kParameters[492],
+ /* return matcher indices */ &kMatcherIndices[131],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -5085,7 +5243,7 @@
/* num open numbers */ 2,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[4],
- /* parameters */ &kParameters[489],
+ /* parameters */ &kParameters[493],
/* return matcher indices */ &kMatcherIndices[137],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
@@ -5097,8 +5255,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[490],
- /* return matcher indices */ &kMatcherIndices[135],
+ /* parameters */ &kParameters[494],
+ /* return matcher indices */ &kMatcherIndices[131],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -5109,8 +5267,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[327],
- /* return matcher indices */ &kMatcherIndices[149],
+ /* parameters */ &kParameters[309],
+ /* return matcher indices */ &kMatcherIndices[151],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -5121,8 +5279,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[315],
- /* return matcher indices */ &kMatcherIndices[149],
+ /* parameters */ &kParameters[312],
+ /* return matcher indices */ &kMatcherIndices[151],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -5133,8 +5291,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[215],
- /* return matcher indices */ &kMatcherIndices[149],
+ /* parameters */ &kParameters[171],
+ /* return matcher indices */ &kMatcherIndices[151],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -5145,8 +5303,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[318],
- /* return matcher indices */ &kMatcherIndices[149],
+ /* parameters */ &kParameters[321],
+ /* return matcher indices */ &kMatcherIndices[151],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -5157,8 +5315,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[321],
- /* return matcher indices */ &kMatcherIndices[149],
+ /* parameters */ &kParameters[324],
+ /* return matcher indices */ &kMatcherIndices[151],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -5169,8 +5327,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[324],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[267],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -5181,8 +5339,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[259],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[179],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -5193,7 +5351,7 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[381],
+ /* parameters */ &kParameters[477],
/* return matcher indices */ &kMatcherIndices[133],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
@@ -5217,7 +5375,7 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[378],
+ /* parameters */ &kParameters[375],
/* return matcher indices */ &kMatcherIndices[133],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
@@ -5229,7 +5387,7 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[387],
+ /* parameters */ &kParameters[391],
/* return matcher indices */ &kMatcherIndices[133],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
@@ -5241,7 +5399,7 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[389],
+ /* parameters */ &kParameters[381],
/* return matcher indices */ &kMatcherIndices[139],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
@@ -5253,7 +5411,7 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[411],
+ /* parameters */ &kParameters[383],
/* return matcher indices */ &kMatcherIndices[139],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
@@ -5265,7 +5423,7 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[360],
+ /* parameters */ &kParameters[372],
/* return matcher indices */ &kMatcherIndices[139],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
@@ -5277,7 +5435,7 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[405],
+ /* parameters */ &kParameters[399],
/* return matcher indices */ &kMatcherIndices[139],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
@@ -5290,7 +5448,7 @@
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
/* parameters */ &kParameters[407],
- /* return matcher indices */ &kMatcherIndices[143],
+ /* return matcher indices */ &kMatcherIndices[145],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -5301,8 +5459,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[425],
- /* return matcher indices */ &kMatcherIndices[143],
+ /* parameters */ &kParameters[415],
+ /* return matcher indices */ &kMatcherIndices[145],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -5313,8 +5471,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[339],
- /* return matcher indices */ &kMatcherIndices[143],
+ /* parameters */ &kParameters[342],
+ /* return matcher indices */ &kMatcherIndices[145],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -5325,8 +5483,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[431],
- /* return matcher indices */ &kMatcherIndices[143],
+ /* parameters */ &kParameters[425],
+ /* return matcher indices */ &kMatcherIndices[145],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -5344,186 +5502,6 @@
},
{
/* [46] */
- /* num parameters */ 3,
- /* num open types */ 0,
- /* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[270],
- /* return matcher indices */ &kMatcherIndices[133],
- /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
- /* is_deprecated */ false,
- },
- {
- /* [47] */
- /* num parameters */ 3,
- /* num open types */ 0,
- /* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[312],
- /* return matcher indices */ &kMatcherIndices[133],
- /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
- /* is_deprecated */ false,
- },
- {
- /* [48] */
- /* num parameters */ 4,
- /* num open types */ 0,
- /* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[255],
- /* return matcher indices */ &kMatcherIndices[133],
- /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
- /* is_deprecated */ false,
- },
- {
- /* [49] */
- /* num parameters */ 4,
- /* num open types */ 0,
- /* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[251],
- /* return matcher indices */ &kMatcherIndices[133],
- /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
- /* is_deprecated */ false,
- },
- {
- /* [50] */
- /* num parameters */ 5,
- /* num open types */ 0,
- /* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[126],
- /* return matcher indices */ &kMatcherIndices[133],
- /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
- /* is_deprecated */ false,
- },
- {
- /* [51] */
- /* num parameters */ 3,
- /* num open types */ 0,
- /* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[330],
- /* return matcher indices */ &kMatcherIndices[133],
- /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
- /* is_deprecated */ false,
- },
- {
- /* [52] */
- /* num parameters */ 4,
- /* num open types */ 0,
- /* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[263],
- /* return matcher indices */ &kMatcherIndices[133],
- /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
- /* is_deprecated */ false,
- },
- {
- /* [53] */
- /* num parameters */ 3,
- /* num open types */ 0,
- /* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[333],
- /* return matcher indices */ &kMatcherIndices[133],
- /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
- /* is_deprecated */ false,
- },
- {
- /* [54] */
- /* num parameters */ 4,
- /* num open types */ 0,
- /* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[247],
- /* return matcher indices */ &kMatcherIndices[133],
- /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
- /* is_deprecated */ false,
- },
- {
- /* [55] */
- /* num parameters */ 3,
- /* num open types */ 0,
- /* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[375],
- /* return matcher indices */ &kMatcherIndices[7],
- /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
- /* is_deprecated */ false,
- },
- {
- /* [56] */
- /* num parameters */ 4,
- /* num open types */ 0,
- /* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[219],
- /* return matcher indices */ &kMatcherIndices[7],
- /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
- /* is_deprecated */ false,
- },
- {
- /* [57] */
- /* num parameters */ 4,
- /* num open types */ 0,
- /* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[239],
- /* return matcher indices */ &kMatcherIndices[7],
- /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
- /* is_deprecated */ false,
- },
- {
- /* [58] */
- /* num parameters */ 5,
- /* num open types */ 0,
- /* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[71],
- /* return matcher indices */ &kMatcherIndices[7],
- /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
- /* is_deprecated */ false,
- },
- {
- /* [59] */
- /* num parameters */ 3,
- /* num open types */ 0,
- /* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[336],
- /* return matcher indices */ &kMatcherIndices[7],
- /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
- /* is_deprecated */ false,
- },
- {
- /* [60] */
- /* num parameters */ 4,
- /* num open types */ 0,
- /* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[235],
- /* return matcher indices */ &kMatcherIndices[7],
- /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
- /* is_deprecated */ false,
- },
- {
- /* [61] */
/* num parameters */ 4,
/* num open types */ 0,
/* num open numbers */ 0,
@@ -5535,7 +5513,7 @@
/* is_deprecated */ false,
},
{
- /* [62] */
+ /* [47] */
/* num parameters */ 5,
/* num open types */ 0,
/* num open numbers */ 0,
@@ -5547,7 +5525,7 @@
/* is_deprecated */ false,
},
{
- /* [63] */
+ /* [48] */
/* num parameters */ 5,
/* num open types */ 0,
/* num open numbers */ 0,
@@ -5559,19 +5537,19 @@
/* is_deprecated */ false,
},
{
- /* [64] */
+ /* [49] */
/* num parameters */ 6,
/* num open types */ 0,
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[7],
+ /* parameters */ &kParameters[49],
/* return matcher indices */ &kMatcherIndices[133],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
- /* [65] */
+ /* [50] */
/* num parameters */ 4,
/* num open types */ 0,
/* num open numbers */ 0,
@@ -5583,19 +5561,19 @@
/* is_deprecated */ false,
},
{
- /* [66] */
+ /* [51] */
/* num parameters */ 5,
/* num open types */ 0,
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[106],
+ /* parameters */ &kParameters[61],
/* return matcher indices */ &kMatcherIndices[133],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
- /* [67] */
+ /* [52] */
/* num parameters */ 4,
/* num open types */ 0,
/* num open numbers */ 0,
@@ -5607,7 +5585,7 @@
/* is_deprecated */ false,
},
{
- /* [68] */
+ /* [53] */
/* num parameters */ 5,
/* num open types */ 0,
/* num open numbers */ 0,
@@ -5619,79 +5597,79 @@
/* is_deprecated */ false,
},
{
- /* [69] */
+ /* [54] */
/* num parameters */ 4,
/* num open types */ 0,
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
/* parameters */ &kParameters[243],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
- /* [70] */
+ /* [55] */
/* num parameters */ 5,
/* num open types */ 0,
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[111],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[96],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
- /* [71] */
+ /* [56] */
/* num parameters */ 5,
/* num open types */ 0,
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
/* parameters */ &kParameters[136],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
- /* [72] */
+ /* [57] */
/* num parameters */ 6,
/* num open types */ 0,
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
/* parameters */ &kParameters[37],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
- /* [73] */
+ /* [58] */
/* num parameters */ 4,
/* num open types */ 0,
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[179],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[175],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
- /* [74] */
+ /* [59] */
/* num parameters */ 5,
/* num open types */ 0,
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[151],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[141],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
- /* [75] */
+ /* [60] */
/* num parameters */ 3,
/* num open types */ 0,
/* num open numbers */ 0,
@@ -5703,6 +5681,186 @@
/* is_deprecated */ false,
},
{
+ /* [61] */
+ /* num parameters */ 3,
+ /* num open types */ 0,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[315],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [62] */
+ /* num parameters */ 3,
+ /* num open types */ 0,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[318],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [63] */
+ /* num parameters */ 4,
+ /* num open types */ 0,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[255],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [64] */
+ /* num parameters */ 4,
+ /* num open types */ 0,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[251],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [65] */
+ /* num parameters */ 5,
+ /* num open types */ 0,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[111],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [66] */
+ /* num parameters */ 3,
+ /* num open types */ 0,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[327],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [67] */
+ /* num parameters */ 4,
+ /* num open types */ 0,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[263],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [68] */
+ /* num parameters */ 3,
+ /* num open types */ 0,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[330],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [69] */
+ /* num parameters */ 4,
+ /* num open types */ 0,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[247],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [70] */
+ /* num parameters */ 3,
+ /* num open types */ 0,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[378],
+ /* return matcher indices */ &kMatcherIndices[6],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [71] */
+ /* num parameters */ 4,
+ /* num open types */ 0,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[219],
+ /* return matcher indices */ &kMatcherIndices[6],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [72] */
+ /* num parameters */ 4,
+ /* num open types */ 0,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[239],
+ /* return matcher indices */ &kMatcherIndices[6],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [73] */
+ /* num parameters */ 5,
+ /* num open types */ 0,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[71],
+ /* return matcher indices */ &kMatcherIndices[6],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [74] */
+ /* num parameters */ 3,
+ /* num open types */ 0,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[333],
+ /* return matcher indices */ &kMatcherIndices[6],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [75] */
+ /* num parameters */ 4,
+ /* num open types */ 0,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[235],
+ /* return matcher indices */ &kMatcherIndices[6],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
+ /* is_deprecated */ false,
+ },
+ {
/* [76] */
/* num parameters */ 3,
/* num open types */ 0,
@@ -5793,7 +5951,7 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[300],
+ /* parameters */ &kParameters[270],
/* return matcher indices */ nullptr,
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
@@ -5805,7 +5963,7 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[309],
+ /* parameters */ &kParameters[300],
/* return matcher indices */ nullptr,
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
@@ -5853,8 +6011,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[496],
- /* return matcher indices */ &kMatcherIndices[6],
+ /* parameters */ &kParameters[500],
+ /* return matcher indices */ &kMatcherIndices[1],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -5865,8 +6023,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[497],
- /* return matcher indices */ &kMatcherIndices[6],
+ /* parameters */ &kParameters[501],
+ /* return matcher indices */ &kMatcherIndices[1],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -5877,8 +6035,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[498],
- /* return matcher indices */ &kMatcherIndices[6],
+ /* parameters */ &kParameters[502],
+ /* return matcher indices */ &kMatcherIndices[1],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -5889,8 +6047,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[499],
- /* return matcher indices */ &kMatcherIndices[6],
+ /* parameters */ &kParameters[503],
+ /* return matcher indices */ &kMatcherIndices[1],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -5901,8 +6059,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[500],
- /* return matcher indices */ &kMatcherIndices[6],
+ /* parameters */ &kParameters[504],
+ /* return matcher indices */ &kMatcherIndices[1],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -5913,8 +6071,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[501],
- /* return matcher indices */ &kMatcherIndices[6],
+ /* parameters */ &kParameters[505],
+ /* return matcher indices */ &kMatcherIndices[1],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -5925,8 +6083,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[502],
- /* return matcher indices */ &kMatcherIndices[6],
+ /* parameters */ &kParameters[506],
+ /* return matcher indices */ &kMatcherIndices[1],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -5937,8 +6095,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[503],
- /* return matcher indices */ &kMatcherIndices[6],
+ /* parameters */ &kParameters[507],
+ /* return matcher indices */ &kMatcherIndices[1],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -5949,8 +6107,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[504],
- /* return matcher indices */ &kMatcherIndices[6],
+ /* parameters */ &kParameters[508],
+ /* return matcher indices */ &kMatcherIndices[1],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -5961,109 +6119,13 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[505],
- /* return matcher indices */ &kMatcherIndices[6],
+ /* parameters */ &kParameters[509],
+ /* return matcher indices */ &kMatcherIndices[1],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [98] */
- /* num parameters */ 5,
- /* num open types */ 0,
- /* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[116],
- /* return matcher indices */ &kMatcherIndices[133],
- /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
- /* is_deprecated */ false,
- },
- {
- /* [99] */
- /* num parameters */ 6,
- /* num open types */ 0,
- /* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[55],
- /* return matcher indices */ &kMatcherIndices[133],
- /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
- /* is_deprecated */ false,
- },
- {
- /* [100] */
- /* num parameters */ 6,
- /* num open types */ 0,
- /* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[49],
- /* return matcher indices */ &kMatcherIndices[133],
- /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
- /* is_deprecated */ false,
- },
- {
- /* [101] */
- /* num parameters */ 7,
- /* num open types */ 0,
- /* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[0],
- /* return matcher indices */ &kMatcherIndices[133],
- /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
- /* is_deprecated */ false,
- },
- {
- /* [102] */
- /* num parameters */ 5,
- /* num open types */ 0,
- /* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[146],
- /* return matcher indices */ &kMatcherIndices[133],
- /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
- /* is_deprecated */ false,
- },
- {
- /* [103] */
- /* num parameters */ 6,
- /* num open types */ 0,
- /* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[19],
- /* return matcher indices */ &kMatcherIndices[133],
- /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
- /* is_deprecated */ false,
- },
- {
- /* [104] */
- /* num parameters */ 5,
- /* num open types */ 0,
- /* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[96],
- /* return matcher indices */ &kMatcherIndices[133],
- /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
- /* is_deprecated */ false,
- },
- {
- /* [105] */
- /* num parameters */ 6,
- /* num open types */ 0,
- /* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[43],
- /* return matcher indices */ &kMatcherIndices[133],
- /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
- /* is_deprecated */ false,
- },
- {
- /* [106] */
/* num parameters */ 4,
/* num open types */ 0,
/* num open numbers */ 0,
@@ -6075,7 +6137,7 @@
/* is_deprecated */ false,
},
{
- /* [107] */
+ /* [99] */
/* num parameters */ 5,
/* num open types */ 0,
/* num open numbers */ 0,
@@ -6087,19 +6149,19 @@
/* is_deprecated */ false,
},
{
- /* [108] */
+ /* [100] */
/* num parameters */ 5,
/* num open types */ 0,
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[161],
+ /* parameters */ &kParameters[146],
/* return matcher indices */ &kMatcherIndices[133],
/* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
{
- /* [109] */
+ /* [101] */
/* num parameters */ 6,
/* num open types */ 0,
/* num open numbers */ 0,
@@ -6111,19 +6173,19 @@
/* is_deprecated */ false,
},
{
- /* [110] */
+ /* [102] */
/* num parameters */ 4,
/* num open types */ 0,
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[171],
+ /* parameters */ &kParameters[215],
/* return matcher indices */ &kMatcherIndices[133],
/* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
{
- /* [111] */
+ /* [103] */
/* num parameters */ 5,
/* num open types */ 0,
/* num open numbers */ 0,
@@ -6135,7 +6197,7 @@
/* is_deprecated */ false,
},
{
- /* [112] */
+ /* [104] */
/* num parameters */ 4,
/* num open types */ 0,
/* num open numbers */ 0,
@@ -6147,7 +6209,7 @@
/* is_deprecated */ false,
},
{
- /* [113] */
+ /* [105] */
/* num parameters */ 5,
/* num open types */ 0,
/* num open numbers */ 0,
@@ -6159,14 +6221,110 @@
/* is_deprecated */ false,
},
{
+ /* [106] */
+ /* num parameters */ 5,
+ /* num open types */ 0,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[156],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [107] */
+ /* num parameters */ 6,
+ /* num open types */ 0,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[55],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [108] */
+ /* num parameters */ 6,
+ /* num open types */ 0,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[43],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [109] */
+ /* num parameters */ 7,
+ /* num open types */ 0,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[0],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [110] */
+ /* num parameters */ 5,
+ /* num open types */ 0,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[151],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [111] */
+ /* num parameters */ 6,
+ /* num open types */ 0,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[7],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [112] */
+ /* num parameters */ 5,
+ /* num open types */ 0,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[126],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [113] */
+ /* num parameters */ 6,
+ /* num open types */ 0,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[31],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
+ /* is_deprecated */ false,
+ },
+ {
/* [114] */
/* num parameters */ 4,
/* num open types */ 0,
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[183],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[191],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -6178,7 +6336,7 @@
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
/* parameters */ &kParameters[131],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -6189,8 +6347,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[156],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[161],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -6202,7 +6360,7 @@
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
/* parameters */ &kParameters[13],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -6213,8 +6371,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[195],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[183],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -6225,8 +6383,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[141],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[116],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -6237,8 +6395,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[191],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[195],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
@@ -6250,7 +6408,7 @@
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
/* parameters */ &kParameters[101],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
@@ -6261,8 +6419,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[61],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[106],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
@@ -6273,8 +6431,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[31],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[19],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
@@ -6285,8 +6443,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[175],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[259],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
@@ -6298,7 +6456,7 @@
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
/* parameters */ &kParameters[121],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
@@ -6309,8 +6467,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[491],
- /* return matcher indices */ &kMatcherIndices[6],
+ /* parameters */ &kParameters[495],
+ /* return matcher indices */ &kMatcherIndices[1],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -6321,8 +6479,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[492],
- /* return matcher indices */ &kMatcherIndices[6],
+ /* parameters */ &kParameters[496],
+ /* return matcher indices */ &kMatcherIndices[1],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -6333,8 +6491,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[493],
- /* return matcher indices */ &kMatcherIndices[6],
+ /* parameters */ &kParameters[497],
+ /* return matcher indices */ &kMatcherIndices[1],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -6345,8 +6503,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[494],
- /* return matcher indices */ &kMatcherIndices[6],
+ /* parameters */ &kParameters[498],
+ /* return matcher indices */ &kMatcherIndices[1],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -6357,56 +6515,56 @@
/* num open numbers */ 2,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[4],
- /* parameters */ &kParameters[495],
- /* return matcher indices */ &kMatcherIndices[6],
+ /* parameters */ &kParameters[499],
+ /* return matcher indices */ &kMatcherIndices[1],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [131] */
- /* num parameters */ 3,
- /* num open types */ 1,
- /* num open numbers */ 0,
- /* open types */ &kOpenTypes[3],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[372],
- /* return matcher indices */ &kMatcherIndices[5],
+ /* num parameters */ 2,
+ /* num open types */ 0,
+ /* num open numbers */ 2,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[2],
+ /* parameters */ &kParameters[401],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
- /* is_deprecated */ false,
+ /* is_deprecated */ true,
},
{
/* [132] */
- /* num parameters */ 3,
- /* num open types */ 1,
- /* num open numbers */ 1,
- /* open types */ &kOpenTypes[3],
+ /* num parameters */ 2,
+ /* num open types */ 0,
+ /* num open numbers */ 3,
+ /* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[369],
- /* return matcher indices */ &kMatcherIndices[44],
+ /* parameters */ &kParameters[397],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
- /* is_deprecated */ false,
+ /* is_deprecated */ true,
},
{
/* [133] */
- /* num parameters */ 3,
- /* num open types */ 1,
- /* num open numbers */ 1,
- /* open types */ &kOpenTypes[3],
- /* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[363],
- /* return matcher indices */ &kMatcherIndices[44],
+ /* num parameters */ 1,
+ /* num open types */ 0,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[542],
+ /* return matcher indices */ &kMatcherIndices[186],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [134] */
- /* num parameters */ 2,
+ /* num parameters */ 1,
/* num open types */ 0,
- /* num open numbers */ 0,
+ /* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[417],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* open numbers */ &kOpenNumbers[1],
+ /* parameters */ &kParameters[541],
+ /* return matcher indices */ &kMatcherIndices[143],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -6414,156 +6572,156 @@
/* [135] */
/* num parameters */ 2,
/* num open types */ 0,
- /* num open numbers */ 1,
+ /* num open numbers */ 2,
/* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[415],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* open numbers */ &kOpenNumbers[2],
+ /* parameters */ &kParameters[467],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
- /* is_deprecated */ false,
+ /* is_deprecated */ true,
},
{
/* [136] */
- /* num parameters */ 1,
- /* num open types */ 1,
- /* num open numbers */ 0,
- /* open types */ &kOpenTypes[2],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[586],
- /* return matcher indices */ &kMatcherIndices[5],
+ /* num parameters */ 2,
+ /* num open types */ 0,
+ /* num open numbers */ 3,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[1],
+ /* parameters */ &kParameters[445],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
- /* is_deprecated */ false,
+ /* is_deprecated */ true,
},
{
/* [137] */
/* num parameters */ 1,
- /* num open types */ 1,
- /* num open numbers */ 1,
- /* open types */ &kOpenTypes[2],
- /* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[585],
- /* return matcher indices */ &kMatcherIndices[44],
+ /* num open types */ 0,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[567],
+ /* return matcher indices */ &kMatcherIndices[187],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [138] */
- /* num parameters */ 3,
+ /* num parameters */ 1,
/* num open types */ 0,
- /* num open numbers */ 0,
+ /* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[366],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* open numbers */ &kOpenNumbers[1],
+ /* parameters */ &kParameters[566],
+ /* return matcher indices */ &kMatcherIndices[153],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [139] */
/* num parameters */ 3,
- /* num open types */ 0,
- /* num open numbers */ 1,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[342],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* num open types */ 1,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[3],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[357],
+ /* return matcher indices */ &kMatcherIndices[5],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [140] */
- /* num parameters */ 2,
- /* num open types */ 0,
- /* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[399],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* num parameters */ 3,
+ /* num open types */ 1,
+ /* num open numbers */ 1,
+ /* open types */ &kOpenTypes[3],
+ /* open numbers */ &kOpenNumbers[1],
+ /* parameters */ &kParameters[348],
+ /* return matcher indices */ &kMatcherIndices[62],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [141] */
- /* num parameters */ 2,
- /* num open types */ 0,
+ /* num parameters */ 3,
+ /* num open types */ 1,
/* num open numbers */ 1,
- /* open types */ &kOpenTypes[4],
+ /* open types */ &kOpenTypes[3],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[445],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[345],
+ /* return matcher indices */ &kMatcherIndices[62],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [142] */
- /* num parameters */ 1,
+ /* num parameters */ 2,
/* num open types */ 0,
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[588],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[413],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [143] */
- /* num parameters */ 1,
+ /* num parameters */ 2,
/* num open types */ 0,
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[587],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* parameters */ &kParameters[411],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [144] */
- /* num parameters */ 1,
+ /* num parameters */ 2,
/* num open types */ 0,
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[583],
- /* return matcher indices */ &kMatcherIndices[7],
- /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
+ /* parameters */ &kParameters[421],
+ /* return matcher indices */ &kMatcherIndices[6],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [145] */
- /* num parameters */ 1,
+ /* num parameters */ 2,
/* num open types */ 0,
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[582],
- /* return matcher indices */ &kMatcherIndices[10],
- /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
+ /* parameters */ &kParameters[423],
+ /* return matcher indices */ &kMatcherIndices[6],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [146] */
- /* num parameters */ 1,
+ /* num parameters */ 3,
/* num open types */ 0,
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[581],
- /* return matcher indices */ &kMatcherIndices[7],
- /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
+ /* parameters */ &kParameters[339],
+ /* return matcher indices */ &kMatcherIndices[6],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [147] */
- /* num parameters */ 1,
+ /* num parameters */ 3,
/* num open types */ 0,
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[580],
- /* return matcher indices */ &kMatcherIndices[10],
- /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
+ /* parameters */ &kParameters[336],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
@@ -6573,8 +6731,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[579],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[587],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
@@ -6585,8 +6743,8 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[578],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* parameters */ &kParameters[586],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
@@ -6597,8 +6755,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[577],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[585],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
@@ -6609,8 +6767,8 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[576],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* parameters */ &kParameters[584],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
@@ -6621,8 +6779,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[575],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[583],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
@@ -6633,8 +6791,8 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[574],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* parameters */ &kParameters[582],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
@@ -6645,8 +6803,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[573],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[581],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
@@ -6657,8 +6815,8 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[572],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* parameters */ &kParameters[580],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
@@ -6669,9 +6827,9 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[571],
- /* return matcher indices */ &kMatcherIndices[7],
- /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
+ /* parameters */ &kParameters[579],
+ /* return matcher indices */ &kMatcherIndices[6],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
{
@@ -6681,9 +6839,9 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[570],
- /* return matcher indices */ &kMatcherIndices[10],
- /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
+ /* parameters */ &kParameters[578],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
{
@@ -6693,9 +6851,9 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[569],
- /* return matcher indices */ &kMatcherIndices[7],
- /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
+ /* parameters */ &kParameters[577],
+ /* return matcher indices */ &kMatcherIndices[6],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
{
@@ -6705,9 +6863,9 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[568],
- /* return matcher indices */ &kMatcherIndices[10],
- /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
+ /* parameters */ &kParameters[576],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
{
@@ -6717,8 +6875,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[590],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[575],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -6729,8 +6887,8 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[589],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* parameters */ &kParameters[574],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -6741,8 +6899,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[567],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[573],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -6753,32 +6911,32 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[566],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* parameters */ &kParameters[572],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [164] */
- /* num parameters */ 3,
- /* num open types */ 0,
+ /* num parameters */ 1,
+ /* num open types */ 1,
/* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
+ /* open types */ &kOpenTypes[2],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[282],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[590],
+ /* return matcher indices */ &kMatcherIndices[5],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [165] */
- /* num parameters */ 3,
- /* num open types */ 0,
+ /* num parameters */ 1,
+ /* num open types */ 1,
/* num open numbers */ 1,
- /* open types */ &kOpenTypes[4],
+ /* open types */ &kOpenTypes[2],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[279],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* parameters */ &kParameters[589],
+ /* return matcher indices */ &kMatcherIndices[62],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -6789,8 +6947,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[565],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[571],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -6801,32 +6959,32 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[564],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* parameters */ &kParameters[570],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [168] */
- /* num parameters */ 2,
+ /* num parameters */ 3,
/* num open types */ 0,
- /* num open numbers */ 2,
+ /* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[2],
- /* parameters */ &kParameters[467],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[282],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [169] */
- /* num parameters */ 2,
+ /* num parameters */ 3,
/* num open types */ 0,
- /* num open numbers */ 3,
+ /* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[477],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* parameters */ &kParameters[279],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -6837,9 +6995,9 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[563],
- /* return matcher indices */ &kMatcherIndices[7],
- /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
+ /* parameters */ &kParameters[569],
+ /* return matcher indices */ &kMatcherIndices[6],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
@@ -6849,9 +7007,9 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[562],
- /* return matcher indices */ &kMatcherIndices[10],
- /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
+ /* parameters */ &kParameters[568],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
@@ -6861,9 +7019,9 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[561],
- /* return matcher indices */ &kMatcherIndices[7],
- /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
+ /* parameters */ &kParameters[592],
+ /* return matcher indices */ &kMatcherIndices[6],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
@@ -6873,9 +7031,9 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[560],
- /* return matcher indices */ &kMatcherIndices[10],
- /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
+ /* parameters */ &kParameters[591],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
@@ -6885,8 +7043,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[559],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[565],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
@@ -6897,33 +7055,33 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[558],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* parameters */ &kParameters[564],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
{
/* [176] */
- /* num parameters */ 3,
- /* num open types */ 1,
+ /* num parameters */ 1,
+ /* num open types */ 0,
/* num open numbers */ 0,
- /* open types */ &kOpenTypes[1],
+ /* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[351],
- /* return matcher indices */ &kMatcherIndices[5],
- /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
+ /* parameters */ &kParameters[563],
+ /* return matcher indices */ &kMatcherIndices[6],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
{
/* [177] */
- /* num parameters */ 3,
- /* num open types */ 1,
+ /* num parameters */ 1,
+ /* num open types */ 0,
/* num open numbers */ 1,
- /* open types */ &kOpenTypes[1],
+ /* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[354],
- /* return matcher indices */ &kMatcherIndices[44],
- /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
+ /* parameters */ &kParameters[562],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
{
@@ -6933,9 +7091,9 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[556],
- /* return matcher indices */ &kMatcherIndices[7],
- /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
+ /* parameters */ &kParameters[561],
+ /* return matcher indices */ &kMatcherIndices[6],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
{
@@ -6945,9 +7103,9 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[555],
- /* return matcher indices */ &kMatcherIndices[10],
- /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
+ /* parameters */ &kParameters[560],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
{
@@ -6957,8 +7115,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[554],
- /* return matcher indices */ &kMatcherIndices[3],
+ /* parameters */ &kParameters[594],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -6969,8 +7127,8 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[553],
- /* return matcher indices */ &kMatcherIndices[65],
+ /* parameters */ &kParameters[593],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -6981,8 +7139,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[552],
- /* return matcher indices */ &kMatcherIndices[3],
+ /* parameters */ &kParameters[558],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -6993,8 +7151,8 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[551],
- /* return matcher indices */ &kMatcherIndices[65],
+ /* parameters */ &kParameters[557],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -7005,7 +7163,7 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[550],
+ /* parameters */ &kParameters[556],
/* return matcher indices */ &kMatcherIndices[3],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
@@ -7017,8 +7175,8 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[549],
- /* return matcher indices */ &kMatcherIndices[65],
+ /* parameters */ &kParameters[555],
+ /* return matcher indices */ &kMatcherIndices[71],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -7029,7 +7187,7 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[548],
+ /* parameters */ &kParameters[554],
/* return matcher indices */ &kMatcherIndices[3],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
@@ -7041,32 +7199,32 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[547],
- /* return matcher indices */ &kMatcherIndices[65],
+ /* parameters */ &kParameters[553],
+ /* return matcher indices */ &kMatcherIndices[71],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [188] */
- /* num parameters */ 2,
- /* num open types */ 1,
+ /* num parameters */ 1,
+ /* num open types */ 0,
/* num open numbers */ 0,
- /* open types */ &kOpenTypes[2],
+ /* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[463],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[552],
+ /* return matcher indices */ &kMatcherIndices[3],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [189] */
- /* num parameters */ 2,
- /* num open types */ 1,
+ /* num parameters */ 1,
+ /* num open types */ 0,
/* num open numbers */ 1,
- /* open types */ &kOpenTypes[2],
+ /* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[397],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* parameters */ &kParameters[551],
+ /* return matcher indices */ &kMatcherIndices[71],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -7077,8 +7235,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[546],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[550],
+ /* return matcher indices */ &kMatcherIndices[3],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -7089,32 +7247,32 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[545],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[549],
+ /* return matcher indices */ &kMatcherIndices[71],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [192] */
- /* num parameters */ 1,
- /* num open types */ 0,
+ /* num parameters */ 2,
+ /* num open types */ 1,
/* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
+ /* open types */ &kOpenTypes[2],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[544],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[455],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [193] */
- /* num parameters */ 1,
- /* num open types */ 0,
+ /* num parameters */ 2,
+ /* num open types */ 1,
/* num open numbers */ 1,
- /* open types */ &kOpenTypes[4],
+ /* open types */ &kOpenTypes[2],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[543],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* parameters */ &kParameters[453],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -7125,8 +7283,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[542],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[548],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -7137,152 +7295,152 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[541],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* parameters */ &kParameters[547],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [196] */
- /* num parameters */ 2,
- /* num open types */ 1,
+ /* num parameters */ 1,
+ /* num open types */ 0,
/* num open numbers */ 0,
- /* open types */ &kOpenTypes[1],
+ /* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[441],
- /* return matcher indices */ &kMatcherIndices[5],
+ /* parameters */ &kParameters[546],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [197] */
- /* num parameters */ 2,
- /* num open types */ 1,
+ /* num parameters */ 1,
+ /* num open types */ 0,
/* num open numbers */ 1,
- /* open types */ &kOpenTypes[1],
+ /* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[429],
- /* return matcher indices */ &kMatcherIndices[44],
+ /* parameters */ &kParameters[545],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [198] */
- /* num parameters */ 2,
- /* num open types */ 1,
+ /* num parameters */ 1,
+ /* num open types */ 0,
/* num open numbers */ 0,
- /* open types */ &kOpenTypes[1],
+ /* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[427],
- /* return matcher indices */ &kMatcherIndices[5],
+ /* parameters */ &kParameters[544],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [199] */
- /* num parameters */ 2,
- /* num open types */ 1,
+ /* num parameters */ 1,
+ /* num open types */ 0,
/* num open numbers */ 1,
- /* open types */ &kOpenTypes[1],
+ /* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[413],
- /* return matcher indices */ &kMatcherIndices[44],
+ /* parameters */ &kParameters[543],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [200] */
- /* num parameters */ 3,
- /* num open types */ 0,
+ /* num parameters */ 2,
+ /* num open types */ 1,
/* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
+ /* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[345],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[419],
+ /* return matcher indices */ &kMatcherIndices[5],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [201] */
- /* num parameters */ 3,
- /* num open types */ 0,
+ /* num parameters */ 2,
+ /* num open types */ 1,
/* num open numbers */ 1,
- /* open types */ &kOpenTypes[4],
+ /* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[348],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* parameters */ &kParameters[417],
+ /* return matcher indices */ &kMatcherIndices[62],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [202] */
/* num parameters */ 2,
- /* num open types */ 0,
- /* num open numbers */ 2,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[2],
- /* parameters */ &kParameters[403],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* num open types */ 1,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[1],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[405],
+ /* return matcher indices */ &kMatcherIndices[5],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [203] */
/* num parameters */ 2,
- /* num open types */ 0,
- /* num open numbers */ 3,
- /* open types */ &kOpenTypes[4],
+ /* num open types */ 1,
+ /* num open numbers */ 1,
+ /* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[401],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* parameters */ &kParameters[403],
+ /* return matcher indices */ &kMatcherIndices[62],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [204] */
- /* num parameters */ 1,
+ /* num parameters */ 3,
/* num open types */ 0,
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[524],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[351],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [205] */
- /* num parameters */ 1,
+ /* num parameters */ 3,
/* num open types */ 0,
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[523],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* parameters */ &kParameters[354],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [206] */
- /* num parameters */ 1,
- /* num open types */ 0,
+ /* num parameters */ 3,
+ /* num open types */ 1,
/* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
+ /* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[592],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[360],
+ /* return matcher indices */ &kMatcherIndices[5],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [207] */
- /* num parameters */ 1,
- /* num open types */ 0,
+ /* num parameters */ 3,
+ /* num open types */ 1,
/* num open numbers */ 1,
- /* open types */ &kOpenTypes[4],
+ /* open types */ &kOpenTypes[1],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[591],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* parameters */ &kParameters[369],
+ /* return matcher indices */ &kMatcherIndices[62],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -7293,8 +7451,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[526],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[524],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -7305,8 +7463,8 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[525],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* parameters */ &kParameters[523],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -7317,8 +7475,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[594],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[596],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -7329,8 +7487,8 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[593],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* parameters */ &kParameters[595],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -7341,8 +7499,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[517],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[526],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -7353,8 +7511,8 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[516],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* parameters */ &kParameters[525],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -7365,8 +7523,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[520],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[598],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -7377,32 +7535,32 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[519],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* parameters */ &kParameters[597],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [216] */
- /* num parameters */ 2,
+ /* num parameters */ 1,
/* num open types */ 0,
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[391],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[517],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [217] */
- /* num parameters */ 2,
+ /* num parameters */ 1,
/* num open types */ 0,
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[385],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* parameters */ &kParameters[516],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -7413,8 +7571,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[596],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[520],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -7425,8 +7583,8 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[595],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* parameters */ &kParameters[519],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -7437,8 +7595,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[419],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[385],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -7449,14 +7607,62 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[421],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* parameters */ &kParameters[387],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [222] */
/* num parameters */ 1,
+ /* num open types */ 0,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[600],
+ /* return matcher indices */ &kMatcherIndices[6],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [223] */
+ /* num parameters */ 1,
+ /* num open types */ 0,
+ /* num open numbers */ 1,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[1],
+ /* parameters */ &kParameters[599],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [224] */
+ /* num parameters */ 2,
+ /* num open types */ 0,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[427],
+ /* return matcher indices */ &kMatcherIndices[6],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [225] */
+ /* num parameters */ 2,
+ /* num open types */ 0,
+ /* num open numbers */ 1,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[1],
+ /* parameters */ &kParameters[429],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [226] */
+ /* num parameters */ 1,
/* num open types */ 1,
/* num open numbers */ 0,
/* open types */ &kOpenTypes[2],
@@ -7467,62 +7673,14 @@
/* is_deprecated */ false,
},
{
- /* [223] */
+ /* [227] */
/* num parameters */ 1,
/* num open types */ 1,
/* num open numbers */ 1,
/* open types */ &kOpenTypes[2],
/* open numbers */ &kOpenNumbers[1],
/* parameters */ &kParameters[533],
- /* return matcher indices */ &kMatcherIndices[44],
- /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
- /* is_deprecated */ false,
- },
- {
- /* [224] */
- /* num parameters */ 1,
- /* num open types */ 0,
- /* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[532],
- /* return matcher indices */ &kMatcherIndices[7],
- /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
- /* is_deprecated */ false,
- },
- {
- /* [225] */
- /* num parameters */ 1,
- /* num open types */ 0,
- /* num open numbers */ 1,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[531],
- /* return matcher indices */ &kMatcherIndices[10],
- /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
- /* is_deprecated */ false,
- },
- {
- /* [226] */
- /* num parameters */ 1,
- /* num open types */ 0,
- /* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[602],
- /* return matcher indices */ &kMatcherIndices[7],
- /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
- /* is_deprecated */ false,
- },
- {
- /* [227] */
- /* num parameters */ 1,
- /* num open types */ 0,
- /* num open numbers */ 1,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[601],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* return matcher indices */ &kMatcherIndices[62],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -7533,8 +7691,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[530],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[532],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -7545,8 +7703,8 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[529],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* parameters */ &kParameters[531],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -7557,8 +7715,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[528],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[606],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -7569,8 +7727,8 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[527],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* parameters */ &kParameters[605],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -7581,8 +7739,8 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[522],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* parameters */ &kParameters[530],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -7593,32 +7751,32 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[521],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* parameters */ &kParameters[529],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [234] */
/* num parameters */ 1,
- /* num open types */ 1,
+ /* num open types */ 0,
/* num open numbers */ 0,
- /* open types */ &kOpenTypes[1],
+ /* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[604],
- /* return matcher indices */ &kMatcherIndices[5],
+ /* parameters */ &kParameters[528],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [235] */
/* num parameters */ 1,
- /* num open types */ 1,
+ /* num open types */ 0,
/* num open numbers */ 1,
- /* open types */ &kOpenTypes[1],
+ /* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[603],
- /* return matcher indices */ &kMatcherIndices[44],
+ /* parameters */ &kParameters[527],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -7629,49 +7787,97 @@
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[522],
+ /* return matcher indices */ &kMatcherIndices[6],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [237] */
+ /* num parameters */ 1,
+ /* num open types */ 0,
+ /* num open numbers */ 1,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[1],
+ /* parameters */ &kParameters[521],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [238] */
+ /* num parameters */ 1,
+ /* num open types */ 1,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[1],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[608],
+ /* return matcher indices */ &kMatcherIndices[5],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [239] */
+ /* num parameters */ 1,
+ /* num open types */ 1,
+ /* num open numbers */ 1,
+ /* open types */ &kOpenTypes[1],
+ /* open numbers */ &kOpenNumbers[1],
+ /* parameters */ &kParameters[607],
+ /* return matcher indices */ &kMatcherIndices[62],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [240] */
+ /* num parameters */ 1,
+ /* num open types */ 0,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[7],
/* parameters */ &kParameters[538],
/* return matcher indices */ &kMatcherIndices[75],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
- /* [237] */
+ /* [241] */
/* num parameters */ 3,
/* num open types */ 0,
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[267],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* parameters */ &kParameters[366],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
- /* [238] */
+ /* [242] */
/* num parameters */ 0,
/* num open types */ 0,
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[605],
+ /* parameters */ &kParameters[609],
/* return matcher indices */ nullptr,
/* supported_stages */ PipelineStageSet(PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
- /* [239] */
+ /* [243] */
/* num parameters */ 2,
/* num open types */ 0,
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[383],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* parameters */ &kParameters[389],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
- /* [240] */
+ /* [244] */
/* num parameters */ 1,
/* num open types */ 0,
/* num open numbers */ 0,
@@ -7683,7 +7889,7 @@
/* is_deprecated */ false,
},
{
- /* [241] */
+ /* [245] */
/* num parameters */ 1,
/* num open types */ 0,
/* num open numbers */ 2,
@@ -7695,7 +7901,7 @@
/* is_deprecated */ false,
},
{
- /* [242] */
+ /* [246] */
/* num parameters */ 1,
/* num open types */ 0,
/* num open numbers */ 0,
@@ -7707,43 +7913,43 @@
/* is_deprecated */ false,
},
{
- /* [243] */
+ /* [247] */
/* num parameters */ 1,
/* num open types */ 0,
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
/* parameters */ &kParameters[515],
- /* return matcher indices */ &kMatcherIndices[141],
+ /* return matcher indices */ &kMatcherIndices[135],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
- /* [244] */
+ /* [248] */
/* num parameters */ 1,
/* num open types */ 0,
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
/* parameters */ &kParameters[514],
- /* return matcher indices */ &kMatcherIndices[141],
+ /* return matcher indices */ &kMatcherIndices[135],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
- /* [245] */
+ /* [249] */
/* num parameters */ 1,
/* num open types */ 0,
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
/* parameters */ &kParameters[513],
- /* return matcher indices */ &kMatcherIndices[141],
+ /* return matcher indices */ &kMatcherIndices[135],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
- /* [246] */
+ /* [250] */
/* num parameters */ 1,
/* num open types */ 0,
/* num open numbers */ 0,
@@ -7755,7 +7961,7 @@
/* is_deprecated */ false,
},
{
- /* [247] */
+ /* [251] */
/* num parameters */ 1,
/* num open types */ 0,
/* num open numbers */ 0,
@@ -7767,19 +7973,19 @@
/* is_deprecated */ false,
},
{
- /* [248] */
+ /* [252] */
/* num parameters */ 0,
/* num open types */ 0,
/* num open numbers */ 0,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[605],
+ /* parameters */ &kParameters[609],
/* return matcher indices */ nullptr,
/* supported_stages */ PipelineStageSet(PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
- /* [249] */
+ /* [253] */
/* num parameters */ 1,
/* num open types */ 0,
/* num open numbers */ 0,
@@ -7791,7 +7997,7 @@
/* is_deprecated */ false,
},
{
- /* [250] */
+ /* [254] */
/* num parameters */ 1,
/* num open types */ 0,
/* num open numbers */ 0,
@@ -7803,110 +8009,62 @@
/* is_deprecated */ false,
},
{
- /* [251] */
+ /* [255] */
/* num parameters */ 1,
/* num open types */ 0,
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
/* parameters */ &kParameters[540],
- /* return matcher indices */ &kMatcherIndices[10],
- /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
- /* is_deprecated */ false,
- },
- {
- /* [252] */
- /* num parameters */ 1,
- /* num open types */ 1,
- /* num open numbers */ 0,
- /* open types */ &kOpenTypes[1],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[506],
- /* return matcher indices */ &kMatcherIndices[6],
- /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
- /* is_deprecated */ false,
- },
- {
- /* [253] */
- /* num parameters */ 1,
- /* num open types */ 1,
- /* num open numbers */ 0,
- /* open types */ &kOpenTypes[0],
- /* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[557],
- /* return matcher indices */ nullptr,
- /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
- /* is_deprecated */ false,
- },
- {
- /* [254] */
- /* num parameters */ 3,
- /* num open types */ 0,
- /* num open numbers */ 1,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[288],
- /* return matcher indices */ &kMatcherIndices[10],
- /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
- /* is_deprecated */ false,
- },
- {
- /* [255] */
- /* num parameters */ 2,
- /* num open types */ 0,
- /* num open numbers */ 1,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[457],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [256] */
/* num parameters */ 1,
- /* num open types */ 0,
- /* num open numbers */ 1,
- /* open types */ &kOpenTypes[4],
- /* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[584],
- /* return matcher indices */ &kMatcherIndices[7],
+ /* num open types */ 1,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[1],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[510],
+ /* return matcher indices */ &kMatcherIndices[1],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [257] */
- /* num parameters */ 2,
- /* num open types */ 0,
+ /* num parameters */ 1,
+ /* num open types */ 1,
/* num open numbers */ 0,
- /* open types */ &kOpenTypes[4],
+ /* open types */ &kOpenTypes[0],
/* open numbers */ &kOpenNumbers[7],
- /* parameters */ &kParameters[395],
- /* return matcher indices */ &kMatcherIndices[145],
+ /* parameters */ &kParameters[559],
+ /* return matcher indices */ nullptr,
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [258] */
- /* num parameters */ 1,
- /* num open types */ 1,
+ /* num parameters */ 3,
+ /* num open types */ 0,
/* num open numbers */ 1,
- /* open types */ &kOpenTypes[0],
- /* open numbers */ &kOpenNumbers[3],
- /* parameters */ &kParameters[598],
- /* return matcher indices */ &kMatcherIndices[75],
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[1],
+ /* parameters */ &kParameters[288],
+ /* return matcher indices */ &kMatcherIndices[4],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [259] */
- /* num parameters */ 1,
+ /* num parameters */ 2,
/* num open types */ 0,
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[599],
- /* return matcher indices */ &kMatcherIndices[3],
+ /* parameters */ &kParameters[441],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -7917,67 +8075,67 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[4],
/* open numbers */ &kOpenNumbers[1],
- /* parameters */ &kParameters[600],
- /* return matcher indices */ &kMatcherIndices[3],
+ /* parameters */ &kParameters[588],
+ /* return matcher indices */ &kMatcherIndices[6],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [261] */
+ /* num parameters */ 2,
+ /* num open types */ 0,
+ /* num open numbers */ 0,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[7],
+ /* parameters */ &kParameters[395],
+ /* return matcher indices */ &kMatcherIndices[141],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [262] */
+ /* num parameters */ 1,
+ /* num open types */ 1,
+ /* num open numbers */ 1,
+ /* open types */ &kOpenTypes[0],
+ /* open numbers */ &kOpenNumbers[3],
+ /* parameters */ &kParameters[602],
+ /* return matcher indices */ &kMatcherIndices[75],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [263] */
+ /* num parameters */ 1,
+ /* num open types */ 0,
+ /* num open numbers */ 1,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[1],
+ /* parameters */ &kParameters[603],
+ /* return matcher indices */ &kMatcherIndices[3],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [264] */
+ /* num parameters */ 1,
+ /* num open types */ 0,
+ /* num open numbers */ 1,
+ /* open types */ &kOpenTypes[4],
+ /* open numbers */ &kOpenNumbers[1],
+ /* parameters */ &kParameters[604],
+ /* return matcher indices */ &kMatcherIndices[3],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [265] */
/* num parameters */ 1,
/* num open types */ 1,
/* num open numbers */ 1,
/* open types */ &kOpenTypes[2],
/* open numbers */ &kOpenNumbers[6],
- /* parameters */ &kParameters[597],
- /* return matcher indices */ &kMatcherIndices[5],
- /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
- /* is_deprecated */ false,
- },
- {
- /* [262] */
- /* num parameters */ 2,
- /* num open types */ 1,
- /* num open numbers */ 1,
- /* open types */ &kOpenTypes[2],
- /* open numbers */ &kOpenNumbers[6],
- /* parameters */ &kParameters[435],
- /* return matcher indices */ nullptr,
- /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
- /* is_deprecated */ false,
- },
- {
- /* [263] */
- /* num parameters */ 2,
- /* num open types */ 1,
- /* num open numbers */ 1,
- /* open types */ &kOpenTypes[2],
- /* open numbers */ &kOpenNumbers[6],
- /* parameters */ &kParameters[439],
- /* return matcher indices */ &kMatcherIndices[5],
- /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
- /* is_deprecated */ false,
- },
- {
- /* [264] */
- /* num parameters */ 2,
- /* num open types */ 1,
- /* num open numbers */ 1,
- /* open types */ &kOpenTypes[2],
- /* open numbers */ &kOpenNumbers[6],
- /* parameters */ &kParameters[443],
- /* return matcher indices */ &kMatcherIndices[5],
- /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
- /* is_deprecated */ false,
- },
- {
- /* [265] */
- /* num parameters */ 2,
- /* num open types */ 1,
- /* num open numbers */ 1,
- /* open types */ &kOpenTypes[2],
- /* open numbers */ &kOpenNumbers[6],
- /* parameters */ &kParameters[447],
+ /* parameters */ &kParameters[601],
/* return matcher indices */ &kMatcherIndices[5],
/* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
@@ -7989,8 +8147,8 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[2],
/* open numbers */ &kOpenNumbers[6],
- /* parameters */ &kParameters[451],
- /* return matcher indices */ &kMatcherIndices[5],
+ /* parameters */ &kParameters[435],
+ /* return matcher indices */ nullptr,
/* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -8001,7 +8159,7 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[2],
/* open numbers */ &kOpenNumbers[6],
- /* parameters */ &kParameters[455],
+ /* parameters */ &kParameters[439],
/* return matcher indices */ &kMatcherIndices[5],
/* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
@@ -8013,7 +8171,7 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[2],
/* open numbers */ &kOpenNumbers[6],
- /* parameters */ &kParameters[449],
+ /* parameters */ &kParameters[443],
/* return matcher indices */ &kMatcherIndices[5],
/* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
@@ -8025,20 +8183,68 @@
/* num open numbers */ 1,
/* open types */ &kOpenTypes[2],
/* open numbers */ &kOpenNumbers[6],
- /* parameters */ &kParameters[423],
+ /* parameters */ &kParameters[447],
/* return matcher indices */ &kMatcherIndices[5],
/* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
{
/* [270] */
+ /* num parameters */ 2,
+ /* num open types */ 1,
+ /* num open numbers */ 1,
+ /* open types */ &kOpenTypes[2],
+ /* open numbers */ &kOpenNumbers[6],
+ /* parameters */ &kParameters[449],
+ /* return matcher indices */ &kMatcherIndices[5],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [271] */
+ /* num parameters */ 2,
+ /* num open types */ 1,
+ /* num open numbers */ 1,
+ /* open types */ &kOpenTypes[2],
+ /* open numbers */ &kOpenNumbers[6],
+ /* parameters */ &kParameters[451],
+ /* return matcher indices */ &kMatcherIndices[5],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [272] */
+ /* num parameters */ 2,
+ /* num open types */ 1,
+ /* num open numbers */ 1,
+ /* open types */ &kOpenTypes[2],
+ /* open numbers */ &kOpenNumbers[6],
+ /* parameters */ &kParameters[437],
+ /* return matcher indices */ &kMatcherIndices[5],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [273] */
+ /* num parameters */ 2,
+ /* num open types */ 1,
+ /* num open numbers */ 1,
+ /* open types */ &kOpenTypes[2],
+ /* open numbers */ &kOpenNumbers[6],
+ /* parameters */ &kParameters[431],
+ /* return matcher indices */ &kMatcherIndices[5],
+ /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
+ /* is_deprecated */ false,
+ },
+ {
+ /* [274] */
/* num parameters */ 3,
/* num open types */ 1,
/* num open numbers */ 1,
/* open types */ &kOpenTypes[2],
/* open numbers */ &kOpenNumbers[6],
- /* parameters */ &kParameters[357],
- /* return matcher indices */ &kMatcherIndices[173],
+ /* parameters */ &kParameters[363],
+ /* return matcher indices */ &kMatcherIndices[177],
/* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
/* is_deprecated */ false,
},
@@ -8050,390 +8256,394 @@
/* fn abs<T : fiu32>(T) -> T */
/* fn abs<N : num, T : fiu32>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[234],
+ /* overloads */ &kOverloads[238],
},
{
/* [1] */
/* fn acos(f32) -> f32 */
/* fn acos<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[226],
+ /* overloads */ &kOverloads[230],
},
{
/* [2] */
/* fn all<N : num>(vec<N, bool>) -> bool */
/* num overloads */ 1,
- /* overloads */ &kOverloads[260],
+ /* overloads */ &kOverloads[264],
},
{
/* [3] */
/* fn any<N : num>(vec<N, bool>) -> bool */
/* num overloads */ 1,
- /* overloads */ &kOverloads[259],
+ /* overloads */ &kOverloads[263],
},
{
/* [4] */
/* fn arrayLength<T, A : access>(ptr<storage, array<T>, A>) -> u32 */
/* num overloads */ 1,
- /* overloads */ &kOverloads[258],
+ /* overloads */ &kOverloads[262],
},
{
/* [5] */
/* fn asin(f32) -> f32 */
/* fn asin<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[218],
+ /* overloads */ &kOverloads[222],
},
{
/* [6] */
/* fn atan(f32) -> f32 */
/* fn atan<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[210],
+ /* overloads */ &kOverloads[214],
},
{
/* [7] */
/* fn atan2(f32, f32) -> f32 */
/* fn atan2<N : num>(vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[134],
+ /* overloads */ &kOverloads[142],
},
{
/* [8] */
/* fn ceil(f32) -> f32 */
/* fn ceil<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[206],
+ /* overloads */ &kOverloads[210],
},
{
/* [9] */
/* fn clamp<T : fiu32>(T, T, T) -> T */
/* fn clamp<N : num, T : fiu32>(vec<N, T>, vec<N, T>, vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[176],
+ /* overloads */ &kOverloads[206],
},
{
/* [10] */
/* fn cos(f32) -> f32 */
/* fn cos<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[160],
+ /* overloads */ &kOverloads[180],
},
{
/* [11] */
/* fn cosh(f32) -> f32 */
/* fn cosh<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[142],
+ /* overloads */ &kOverloads[172],
},
{
/* [12] */
/* fn countOneBits<T : iu32>(T) -> T */
/* fn countOneBits<N : num, T : iu32>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[136],
+ /* overloads */ &kOverloads[164],
},
{
/* [13] */
/* fn cross(vec3<f32>, vec3<f32>) -> vec3<f32> */
/* num overloads */ 1,
- /* overloads */ &kOverloads[257],
+ /* overloads */ &kOverloads[261],
},
{
/* [14] */
/* fn determinant<N : num>(mat<N, N, f32>) -> f32 */
/* num overloads */ 1,
- /* overloads */ &kOverloads[256],
+ /* overloads */ &kOverloads[260],
},
{
/* [15] */
/* fn distance(f32, f32) -> f32 */
/* fn distance<N : num>(vec<N, f32>, vec<N, f32>) -> f32 */
/* num overloads */ 2,
- /* overloads */ &kOverloads[140],
+ /* overloads */ &kOverloads[144],
},
{
/* [16] */
/* fn dot<N : num>(vec<N, f32>, vec<N, f32>) -> f32 */
/* num overloads */ 1,
- /* overloads */ &kOverloads[255],
+ /* overloads */ &kOverloads[259],
},
{
/* [17] */
/* fn dpdx(f32) -> f32 */
/* fn dpdx<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[144],
+ /* overloads */ &kOverloads[148],
},
{
/* [18] */
/* fn dpdxCoarse(f32) -> f32 */
/* fn dpdxCoarse<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[146],
+ /* overloads */ &kOverloads[150],
},
{
/* [19] */
/* fn dpdxFine(f32) -> f32 */
/* fn dpdxFine<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[148],
+ /* overloads */ &kOverloads[152],
},
{
/* [20] */
/* fn dpdy(f32) -> f32 */
/* fn dpdy<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[150],
+ /* overloads */ &kOverloads[154],
},
{
/* [21] */
/* fn dpdyCoarse(f32) -> f32 */
/* fn dpdyCoarse<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[152],
+ /* overloads */ &kOverloads[156],
},
{
/* [22] */
/* fn dpdyFine(f32) -> f32 */
/* fn dpdyFine<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[154],
+ /* overloads */ &kOverloads[158],
},
{
/* [23] */
/* fn exp(f32) -> f32 */
/* fn exp<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[156],
+ /* overloads */ &kOverloads[160],
},
{
/* [24] */
/* fn exp2(f32) -> f32 */
/* fn exp2<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[158],
+ /* overloads */ &kOverloads[162],
},
{
/* [25] */
/* fn faceForward<N : num>(vec<N, f32>, vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 1,
- /* overloads */ &kOverloads[254],
+ /* overloads */ &kOverloads[258],
},
{
/* [26] */
/* fn floor(f32) -> f32 */
/* fn floor<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[162],
+ /* overloads */ &kOverloads[166],
},
{
/* [27] */
/* fn fma(f32, f32, f32) -> f32 */
/* fn fma<N : num>(vec<N, f32>, vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[164],
+ /* overloads */ &kOverloads[168],
},
{
/* [28] */
/* fn fract(f32) -> f32 */
/* fn fract<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[166],
+ /* overloads */ &kOverloads[170],
},
{
/* [29] */
/* fn frexp<S : function_private_workgroup, A : access>(f32, ptr<S, i32, A>) -> f32 */
/* fn frexp<N : num, S : function_private_workgroup, A : access>(vec<N, f32>, ptr<S, vec<N, i32>, A>) -> vec<N, f32> */
- /* num overloads */ 2,
- /* overloads */ &kOverloads[168],
+ /* fn frexp(f32) -> _frexp_result */
+ /* fn frexp<N : num>(vec<N, f32>) -> _frexp_result_vec<N> */
+ /* num overloads */ 4,
+ /* overloads */ &kOverloads[135],
},
{
/* [30] */
/* fn fwidth(f32) -> f32 */
/* fn fwidth<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[170],
+ /* overloads */ &kOverloads[174],
},
{
/* [31] */
/* fn fwidthCoarse(f32) -> f32 */
/* fn fwidthCoarse<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[172],
+ /* overloads */ &kOverloads[176],
},
{
/* [32] */
/* fn fwidthFine(f32) -> f32 */
/* fn fwidthFine<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[174],
+ /* overloads */ &kOverloads[178],
},
{
/* [33] */
/* fn ignore<T>(T) */
/* num overloads */ 1,
- /* overloads */ &kOverloads[253],
+ /* overloads */ &kOverloads[257],
},
{
/* [34] */
/* fn inverseSqrt(f32) -> f32 */
/* fn inverseSqrt<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[178],
+ /* overloads */ &kOverloads[182],
},
{
/* [35] */
/* fn isFinite(f32) -> bool */
/* fn isFinite<N : num>(vec<N, f32>) -> vec<N, bool> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[180],
+ /* overloads */ &kOverloads[184],
},
{
/* [36] */
/* fn isInf(f32) -> bool */
/* fn isInf<N : num>(vec<N, f32>) -> vec<N, bool> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[182],
+ /* overloads */ &kOverloads[186],
},
{
/* [37] */
/* fn isNan(f32) -> bool */
/* fn isNan<N : num>(vec<N, f32>) -> vec<N, bool> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[184],
+ /* overloads */ &kOverloads[188],
},
{
/* [38] */
/* fn isNormal(f32) -> bool */
/* fn isNormal<N : num>(vec<N, f32>) -> vec<N, bool> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[186],
+ /* overloads */ &kOverloads[190],
},
{
/* [39] */
/* fn ldexp<T : iu32>(f32, T) -> f32 */
/* fn ldexp<N : num, T : iu32>(vec<N, f32>, vec<N, T>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[188],
+ /* overloads */ &kOverloads[192],
},
{
/* [40] */
/* fn length(f32) -> f32 */
/* fn length<N : num>(vec<N, f32>) -> f32 */
/* num overloads */ 2,
- /* overloads */ &kOverloads[190],
+ /* overloads */ &kOverloads[194],
},
{
/* [41] */
/* fn log(f32) -> f32 */
/* fn log<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[192],
+ /* overloads */ &kOverloads[196],
},
{
/* [42] */
/* fn log2(f32) -> f32 */
/* fn log2<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[194],
+ /* overloads */ &kOverloads[198],
},
{
/* [43] */
/* fn max<T : fiu32>(T, T) -> T */
/* fn max<N : num, T : fiu32>(vec<N, T>, vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[196],
+ /* overloads */ &kOverloads[200],
},
{
/* [44] */
/* fn min<T : fiu32>(T, T) -> T */
/* fn min<N : num, T : fiu32>(vec<N, T>, vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[198],
+ /* overloads */ &kOverloads[202],
},
{
/* [45] */
/* fn mix(f32, f32, f32) -> f32 */
/* fn mix<N : num>(vec<N, f32>, vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[200],
+ /* overloads */ &kOverloads[204],
},
{
/* [46] */
/* fn modf<S : function_private_workgroup, A : access>(f32, ptr<S, f32, A>) -> f32 */
/* fn modf<N : num, S : function_private_workgroup, A : access>(vec<N, f32>, ptr<S, vec<N, f32>, A>) -> vec<N, f32> */
- /* num overloads */ 2,
- /* overloads */ &kOverloads[202],
+ /* fn modf(f32) -> _modf_result */
+ /* fn modf<N : num>(vec<N, f32>) -> _modf_result_vec<N> */
+ /* num overloads */ 4,
+ /* overloads */ &kOverloads[131],
},
{
/* [47] */
/* fn normalize<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 1,
- /* overloads */ &kOverloads[251],
+ /* overloads */ &kOverloads[255],
},
{
/* [48] */
/* fn pack2x16float(vec2<f32>) -> u32 */
/* num overloads */ 1,
- /* overloads */ &kOverloads[250],
+ /* overloads */ &kOverloads[254],
},
{
/* [49] */
/* fn pack2x16snorm(vec2<f32>) -> u32 */
/* num overloads */ 1,
- /* overloads */ &kOverloads[236],
+ /* overloads */ &kOverloads[240],
},
{
/* [50] */
/* fn pack2x16unorm(vec2<f32>) -> u32 */
/* num overloads */ 1,
- /* overloads */ &kOverloads[249],
+ /* overloads */ &kOverloads[253],
},
{
/* [51] */
/* fn pack4x8snorm(vec4<f32>) -> u32 */
/* num overloads */ 1,
- /* overloads */ &kOverloads[242],
+ /* overloads */ &kOverloads[246],
},
{
/* [52] */
/* fn pack4x8unorm(vec4<f32>) -> u32 */
/* num overloads */ 1,
- /* overloads */ &kOverloads[240],
+ /* overloads */ &kOverloads[244],
},
{
/* [53] */
/* fn pow(f32, f32) -> f32 */
/* fn pow<N : num>(vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[216],
+ /* overloads */ &kOverloads[220],
},
{
/* [54] */
/* fn reflect<N : num>(vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 1,
- /* overloads */ &kOverloads[239],
+ /* overloads */ &kOverloads[243],
},
{
/* [55] */
/* fn refract<N : num>(vec<N, f32>, vec<N, f32>, f32) -> vec<N, f32> */
/* num overloads */ 1,
- /* overloads */ &kOverloads[237],
+ /* overloads */ &kOverloads[241],
},
{
/* [56] */
/* fn reverseBits<T : iu32>(T) -> T */
/* fn reverseBits<N : num, T : iu32>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[222],
+ /* overloads */ &kOverloads[226],
},
{
/* [57] */
/* fn round(f32) -> f32 */
/* fn round<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[224],
+ /* overloads */ &kOverloads[228],
},
{
/* [58] */
@@ -8441,118 +8651,118 @@
/* fn select<T : scalar, N : num>(vec<N, T>, vec<N, T>, bool) -> vec<N, T> */
/* fn select<N : num, T : scalar>(vec<N, T>, vec<N, T>, vec<N, bool>) -> vec<N, T> */
/* num overloads */ 3,
- /* overloads */ &kOverloads[131],
+ /* overloads */ &kOverloads[139],
},
{
/* [59] */
/* fn sign(f32) -> f32 */
/* fn sign<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[228],
+ /* overloads */ &kOverloads[232],
},
{
/* [60] */
/* fn sin(f32) -> f32 */
/* fn sin<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[230],
+ /* overloads */ &kOverloads[234],
},
{
/* [61] */
/* fn sinh(f32) -> f32 */
/* fn sinh<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[208],
+ /* overloads */ &kOverloads[212],
},
{
/* [62] */
/* fn smoothStep(f32, f32, f32) -> f32 */
/* fn smoothStep<N : num>(vec<N, f32>, vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[138],
+ /* overloads */ &kOverloads[146],
},
{
/* [63] */
/* fn sqrt(f32) -> f32 */
/* fn sqrt<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[204],
+ /* overloads */ &kOverloads[208],
},
{
/* [64] */
/* fn step(f32, f32) -> f32 */
/* fn step<N : num>(vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[220],
+ /* overloads */ &kOverloads[224],
},
{
/* [65] */
/* fn storageBarrier() */
/* num overloads */ 1,
- /* overloads */ &kOverloads[238],
+ /* overloads */ &kOverloads[242],
},
{
/* [66] */
/* fn tan(f32) -> f32 */
/* fn tan<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[232],
+ /* overloads */ &kOverloads[236],
},
{
/* [67] */
/* fn tanh(f32) -> f32 */
/* fn tanh<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[214],
+ /* overloads */ &kOverloads[218],
},
{
/* [68] */
/* fn transpose<M : num, N : num>(mat<M, N, f32>) -> mat<N, M, f32> */
/* num overloads */ 1,
- /* overloads */ &kOverloads[241],
+ /* overloads */ &kOverloads[245],
},
{
/* [69] */
/* fn trunc(f32) -> f32 */
/* fn trunc<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[212],
+ /* overloads */ &kOverloads[216],
},
{
/* [70] */
/* fn unpack2x16float(u32) -> vec2<f32> */
/* num overloads */ 1,
- /* overloads */ &kOverloads[243],
+ /* overloads */ &kOverloads[247],
},
{
/* [71] */
/* fn unpack2x16snorm(u32) -> vec2<f32> */
/* num overloads */ 1,
- /* overloads */ &kOverloads[244],
+ /* overloads */ &kOverloads[248],
},
{
/* [72] */
/* fn unpack2x16unorm(u32) -> vec2<f32> */
/* num overloads */ 1,
- /* overloads */ &kOverloads[245],
+ /* overloads */ &kOverloads[249],
},
{
/* [73] */
/* fn unpack4x8snorm(u32) -> vec4<f32> */
/* num overloads */ 1,
- /* overloads */ &kOverloads[246],
+ /* overloads */ &kOverloads[250],
},
{
/* [74] */
/* fn unpack4x8unorm(u32) -> vec4<f32> */
/* num overloads */ 1,
- /* overloads */ &kOverloads[247],
+ /* overloads */ &kOverloads[251],
},
{
/* [75] */
/* fn workgroupBarrier() */
/* num overloads */ 1,
- /* overloads */ &kOverloads[248],
+ /* overloads */ &kOverloads[252],
},
{
/* [76] */
@@ -8614,7 +8824,7 @@
/* [79] */
/* fn textureNumSamples<T : fiu32>(texture: texture_multisampled_2d<T>) -> i32 */
/* num overloads */ 1,
- /* overloads */ &kOverloads[252],
+ /* overloads */ &kOverloads[256],
},
{
/* [80] */
@@ -8634,7 +8844,7 @@
/* fn textureSample(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>) -> f32 */
/* fn textureSample(texture: texture_depth_cube_array, sampler: sampler, coords: vec3<f32>, array_index: i32) -> f32 */
/* num overloads */ 15,
- /* overloads */ &kOverloads[46],
+ /* overloads */ &kOverloads[61],
},
{
/* [81] */
@@ -8647,7 +8857,7 @@
/* fn textureSampleBias(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>, bias: f32) -> vec4<f32> */
/* fn textureSampleBias(texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: i32, bias: f32) -> vec4<f32> */
/* num overloads */ 8,
- /* overloads */ &kOverloads[106],
+ /* overloads */ &kOverloads[98],
},
{
/* [82] */
@@ -8682,7 +8892,7 @@
/* fn textureSampleGrad(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>, ddx: vec3<f32>, ddy: vec3<f32>) -> vec4<f32> */
/* fn textureSampleGrad(texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: i32, ddx: vec3<f32>, ddy: vec3<f32>) -> vec4<f32> */
/* num overloads */ 8,
- /* overloads */ &kOverloads[98],
+ /* overloads */ &kOverloads[106],
},
{
/* [85] */
@@ -8702,7 +8912,7 @@
/* fn textureSampleLevel(texture: texture_depth_cube_array, sampler: sampler, coords: vec3<f32>, array_index: i32, level: i32) -> f32 */
/* fn textureSampleLevel(texture: texture_external, sampler: sampler, coords: vec2<f32>) -> vec4<f32> */
/* num overloads */ 15,
- /* overloads */ &kOverloads[61],
+ /* overloads */ &kOverloads[46],
},
{
/* [86] */
@@ -8750,61 +8960,61 @@
/* [88] */
/* fn atomicLoad<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>) -> T */
/* num overloads */ 1,
- /* overloads */ &kOverloads[261],
+ /* overloads */ &kOverloads[265],
},
{
/* [89] */
/* fn atomicStore<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) */
/* num overloads */ 1,
- /* overloads */ &kOverloads[262],
+ /* overloads */ &kOverloads[266],
},
{
/* [90] */
/* fn atomicAdd<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
/* num overloads */ 1,
- /* overloads */ &kOverloads[263],
+ /* overloads */ &kOverloads[267],
},
{
/* [91] */
/* fn atomicMax<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
/* num overloads */ 1,
- /* overloads */ &kOverloads[264],
+ /* overloads */ &kOverloads[268],
},
{
/* [92] */
/* fn atomicMin<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
/* num overloads */ 1,
- /* overloads */ &kOverloads[265],
+ /* overloads */ &kOverloads[269],
},
{
/* [93] */
/* fn atomicAnd<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
/* num overloads */ 1,
- /* overloads */ &kOverloads[266],
+ /* overloads */ &kOverloads[270],
},
{
/* [94] */
/* fn atomicOr<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
/* num overloads */ 1,
- /* overloads */ &kOverloads[267],
+ /* overloads */ &kOverloads[271],
},
{
/* [95] */
/* fn atomicXor<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
/* num overloads */ 1,
- /* overloads */ &kOverloads[268],
+ /* overloads */ &kOverloads[272],
},
{
/* [96] */
/* fn atomicExchange<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
/* num overloads */ 1,
- /* overloads */ &kOverloads[269],
+ /* overloads */ &kOverloads[273],
},
{
/* [97] */
/* fn atomicCompareExchangeWeak<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T, T) -> vec2<T> */
/* num overloads */ 1,
- /* overloads */ &kOverloads[270],
+ /* overloads */ &kOverloads[274],
},
};
diff --git a/src/intrinsic_table.inl.tmpl b/src/intrinsic_table.inl.tmpl
index f45de8d..c64bf7d 100644
--- a/src/intrinsic_table.inl.tmpl
+++ b/src/intrinsic_table.inl.tmpl
@@ -148,7 +148,7 @@
{{- range .TemplateParams }}
{{- template "DeclareLocalTemplateParam" . }}
{{- end }}
- if (!match_{{.Name}}(ty{{range .TemplateParams}}, {{.GetName}}{{end}})) {
+ if (!match_{{TrimPrefix .Name "_"}}(ty{{range .TemplateParams}}, {{.GetName}}{{end}})) {
return nullptr;
}
{{- range .TemplateParams }}
@@ -157,7 +157,7 @@
return nullptr;
}
{{- end }}
- return build_{{.Name}}(state{{range .TemplateParams}}, {{.GetName}}{{end}});
+ return build_{{TrimPrefix .Name "_"}}(state{{range .TemplateParams}}, {{.GetName}}{{end}});
}
std::string {{$class}}::String(MatchState&{{if .TemplateParams}} state{{end}}) const {
diff --git a/src/intrinsics.def b/src/intrinsics.def
index 8d9a1d4..ef8d332 100644
--- a/src/intrinsics.def
+++ b/src/intrinsics.def
@@ -96,6 +96,11 @@
type texture_storage_3d<F: texel_format, A: access>
type texture_external
+type _modf_result
+[[display("_modf_result_vec{N}")]] type _modf_result_vec<N: num>
+type _frexp_result
+[[display("_frexp_result_vec{N}")]] type _frexp_result_vec<N: num>
+
////////////////////////////////////////////////////////////////////////////////
// Type matchers //
// //
@@ -308,8 +313,10 @@
fn fma<N: num>(vec<N, f32>, vec<N, f32>, vec<N, f32>) -> vec<N, f32>
fn fract(f32) -> f32
fn fract<N: num>(vec<N, f32>) -> vec<N, f32>
-fn frexp<S: function_private_workgroup, A: access>(f32, ptr<S, i32, A>) -> f32
-fn frexp<N: num, S: function_private_workgroup, A: access>(vec<N, f32>, ptr<S, vec<N, i32>, A>) -> vec<N, f32>
+[[deprecated]] fn frexp<S: function_private_workgroup, A: access>(f32, ptr<S, i32, A>) -> f32
+[[deprecated]] fn frexp<N: num, S: function_private_workgroup, A: access>(vec<N, f32>, ptr<S, vec<N, i32>, A>) -> vec<N, f32>
+fn frexp(f32) -> _frexp_result
+fn frexp<N: num>(vec<N, f32>) -> _frexp_result_vec<N>
[[stage("fragment")]] fn fwidth(f32) -> f32
[[stage("fragment")]] fn fwidth<N: num>(vec<N, f32>) -> vec<N, f32>
[[stage("fragment")]] fn fwidthCoarse(f32) -> f32
@@ -341,8 +348,10 @@
fn min<N: num, T: fiu32>(vec<N, T>, vec<N, T>) -> vec<N, T>
fn mix(f32, f32, f32) -> f32
fn mix<N: num>(vec<N, f32>, vec<N, f32>, vec<N, f32>) -> vec<N, f32>
-fn modf<S: function_private_workgroup, A: access>(f32, ptr<S, f32, A>) -> f32
-fn modf<N: num, S: function_private_workgroup, A: access>(vec<N, f32>, ptr<S, vec<N, f32>, A>) -> vec<N, f32>
+[[deprecated]] fn modf<S: function_private_workgroup, A: access>(f32, ptr<S, f32, A>) -> f32
+[[deprecated]] fn modf<N: num, S: function_private_workgroup, A: access>(vec<N, f32>, ptr<S, vec<N, f32>, A>) -> vec<N, f32>
+fn modf(f32) -> _modf_result
+fn modf<N: num>(vec<N, f32>) -> _modf_result_vec<N>
fn normalize<N: num>(vec<N, f32>) -> vec<N, f32>
fn pack2x16float(vec2<f32>) -> u32
fn pack2x16snorm(vec2<f32>) -> u32
diff --git a/src/resolver/inferred_type_test.cc b/src/resolver/inferred_type_test.cc
index 5bd957b..c625b64 100644
--- a/src/resolver/inferred_type_test.cc
+++ b/src/resolver/inferred_type_test.cc
@@ -156,11 +156,11 @@
auto* member = Member("x", ty.i32());
auto* str = Structure("S", {member}, {create<ast::StructBlockDecoration>()});
- auto* expected_type =
- create<sem::Struct>(str,
- sem::StructMemberList{create<sem::StructMember>(
- member, create<sem::I32>(), 0, 0, 0, 4)},
- 0, 4, 4);
+ auto* expected_type = create<sem::Struct>(
+ str, str->name(),
+ sem::StructMemberList{create<sem::StructMember>(
+ member, member->symbol(), create<sem::I32>(), 0, 0, 0, 4)},
+ 0, 4, 4);
auto* ctor_expr = Construct(ty.Of(str));
diff --git a/src/resolver/intrinsic_test.cc b/src/resolver/intrinsic_test.cc
index 95c0813..00fedfc 100644
--- a/src/resolver/intrinsic_test.cc
+++ b/src/resolver/intrinsic_test.cc
@@ -828,7 +828,7 @@
)");
}
-TEST_F(ResolverIntrinsicDataTest, FrexpScalar) {
+TEST_F(ResolverIntrinsicDataTest, DEPRECATED_FrexpScalar) {
Global("exp", ty.i32(), ast::StorageClass::kWorkgroup);
auto* call = Call("frexp", 1.0f, AddressOf("exp"));
WrapInFunction(call);
@@ -839,7 +839,7 @@
EXPECT_TRUE(TypeOf(call)->Is<sem::F32>());
}
-TEST_F(ResolverIntrinsicDataTest, FrexpVector) {
+TEST_F(ResolverIntrinsicDataTest, DEPRECATED_FrexpVector) {
Global("exp", ty.vec3<i32>(), ast::StorageClass::kWorkgroup);
auto* call = Call("frexp", vec3<f32>(1.0f, 2.0f, 3.0f), AddressOf("exp"));
WrapInFunction(call);
@@ -851,6 +851,68 @@
EXPECT_TRUE(TypeOf(call)->As<sem::Vector>()->type()->Is<sem::F32>());
}
+TEST_F(ResolverIntrinsicDataTest, FrexpScalar) {
+ auto* call = Call("frexp", 1.0f);
+ WrapInFunction(call);
+
+ EXPECT_TRUE(r()->Resolve()) << r()->error();
+
+ ASSERT_NE(TypeOf(call), nullptr);
+ auto* ty = TypeOf(call)->As<sem::Struct>();
+ ASSERT_NE(ty, nullptr);
+ ASSERT_EQ(ty->Members().size(), 2u);
+
+ auto* sig = ty->Members()[0];
+ EXPECT_TRUE(sig->Type()->Is<sem::F32>());
+ EXPECT_EQ(sig->Offset(), 0u);
+ EXPECT_EQ(sig->Size(), 4u);
+ EXPECT_EQ(sig->Align(), 4u);
+ EXPECT_EQ(sig->Name(), Sym("sig"));
+
+ auto* exp = ty->Members()[1];
+ EXPECT_TRUE(exp->Type()->Is<sem::I32>());
+ EXPECT_EQ(exp->Offset(), 4u);
+ EXPECT_EQ(exp->Size(), 4u);
+ EXPECT_EQ(exp->Align(), 4u);
+ EXPECT_EQ(exp->Name(), Sym("exp"));
+
+ EXPECT_EQ(ty->Size(), 8u);
+ EXPECT_EQ(ty->SizeNoPadding(), 8u);
+}
+
+TEST_F(ResolverIntrinsicDataTest, FrexpVector) {
+ auto* call = Call("frexp", vec3<f32>());
+ WrapInFunction(call);
+
+ EXPECT_TRUE(r()->Resolve()) << r()->error();
+
+ ASSERT_NE(TypeOf(call), nullptr);
+ auto* ty = TypeOf(call)->As<sem::Struct>();
+ ASSERT_NE(ty, nullptr);
+ ASSERT_EQ(ty->Members().size(), 2u);
+
+ auto* sig = ty->Members()[0];
+ ASSERT_TRUE(sig->Type()->Is<sem::Vector>());
+ EXPECT_EQ(sig->Type()->As<sem::Vector>()->Width(), 3u);
+ EXPECT_TRUE(sig->Type()->As<sem::Vector>()->type()->Is<sem::F32>());
+ EXPECT_EQ(sig->Offset(), 0u);
+ EXPECT_EQ(sig->Size(), 12u);
+ EXPECT_EQ(sig->Align(), 16u);
+ EXPECT_EQ(sig->Name(), Sym("sig"));
+
+ auto* exp = ty->Members()[1];
+ ASSERT_TRUE(exp->Type()->Is<sem::Vector>());
+ EXPECT_EQ(exp->Type()->As<sem::Vector>()->Width(), 3u);
+ EXPECT_TRUE(exp->Type()->As<sem::Vector>()->type()->Is<sem::I32>());
+ EXPECT_EQ(exp->Offset(), 16u);
+ EXPECT_EQ(exp->Size(), 12u);
+ EXPECT_EQ(exp->Align(), 16u);
+ EXPECT_EQ(exp->Name(), Sym("exp"));
+
+ EXPECT_EQ(ty->Size(), 32u);
+ EXPECT_EQ(ty->SizeNoPadding(), 28u);
+}
+
TEST_F(ResolverIntrinsicDataTest, Frexp_Error_FirstParamInt) {
Global("exp", ty.i32(), ast::StorageClass::kWorkgroup);
auto* call = Call("frexp", 1, AddressOf("exp"));
@@ -862,9 +924,11 @@
r()->error(),
R"(error: no matching call to frexp(i32, ptr<workgroup, i32, read_write>)
-2 candidate functions:
+4 candidate functions:
frexp(f32, ptr<S, i32, A>) -> f32 where: S is function, private or workgroup
frexp(vecN<f32>, ptr<S, vecN<i32>, A>) -> vecN<f32> where: S is function, private or workgroup
+ frexp(f32) -> _frexp_result
+ frexp(vecN<f32>) -> _frexp_result_vecN
)");
}
@@ -879,9 +943,11 @@
r()->error(),
R"(error: no matching call to frexp(f32, ptr<workgroup, f32, read_write>)
-2 candidate functions:
+4 candidate functions:
frexp(f32, ptr<S, i32, A>) -> f32 where: S is function, private or workgroup
+ frexp(f32) -> _frexp_result
frexp(vecN<f32>, ptr<S, vecN<i32>, A>) -> vecN<f32> where: S is function, private or workgroup
+ frexp(vecN<f32>) -> _frexp_result_vecN
)");
}
@@ -893,9 +959,11 @@
EXPECT_EQ(r()->error(), R"(error: no matching call to frexp(f32, i32)
-2 candidate functions:
+4 candidate functions:
frexp(f32, ptr<S, i32, A>) -> f32 where: S is function, private or workgroup
+ frexp(f32) -> _frexp_result
frexp(vecN<f32>, ptr<S, vecN<i32>, A>) -> vecN<f32> where: S is function, private or workgroup
+ frexp(vecN<f32>) -> _frexp_result_vecN
)");
}
@@ -910,13 +978,15 @@
r()->error(),
R"(error: no matching call to frexp(vec2<f32>, ptr<workgroup, vec4<i32>, read_write>)
-2 candidate functions:
+4 candidate functions:
frexp(vecN<f32>, ptr<S, vecN<i32>, A>) -> vecN<f32> where: S is function, private or workgroup
+ frexp(vecN<f32>) -> _frexp_result_vecN
frexp(f32, ptr<S, i32, A>) -> f32 where: S is function, private or workgroup
+ frexp(f32) -> _frexp_result
)");
}
-TEST_F(ResolverIntrinsicDataTest, ModfScalar) {
+TEST_F(ResolverIntrinsicDataTest, DEPRECATED_ModfScalar) {
Global("whole", ty.f32(), ast::StorageClass::kWorkgroup);
auto* call = Call("modf", 1.0f, AddressOf("whole"));
WrapInFunction(call);
@@ -927,7 +997,7 @@
EXPECT_TRUE(TypeOf(call)->Is<sem::F32>());
}
-TEST_F(ResolverIntrinsicDataTest, ModfVector) {
+TEST_F(ResolverIntrinsicDataTest, DEPRECATED_ModfVector) {
Global("whole", ty.vec3<f32>(), ast::StorageClass::kWorkgroup);
auto* call = Call("modf", vec3<f32>(1.0f, 2.0f, 3.0f), AddressOf("whole"));
WrapInFunction(call);
@@ -939,6 +1009,68 @@
EXPECT_TRUE(TypeOf(call)->As<sem::Vector>()->type()->Is<sem::F32>());
}
+TEST_F(ResolverIntrinsicDataTest, ModfScalar) {
+ auto* call = Call("modf", 1.0f);
+ WrapInFunction(call);
+
+ EXPECT_TRUE(r()->Resolve()) << r()->error();
+
+ ASSERT_NE(TypeOf(call), nullptr);
+ auto* ty = TypeOf(call)->As<sem::Struct>();
+ ASSERT_NE(ty, nullptr);
+ ASSERT_EQ(ty->Members().size(), 2u);
+
+ auto* fract = ty->Members()[0];
+ EXPECT_TRUE(fract->Type()->Is<sem::F32>());
+ EXPECT_EQ(fract->Offset(), 0u);
+ EXPECT_EQ(fract->Size(), 4u);
+ EXPECT_EQ(fract->Align(), 4u);
+ EXPECT_EQ(fract->Name(), Sym("fract"));
+
+ auto* whole = ty->Members()[1];
+ EXPECT_TRUE(whole->Type()->Is<sem::F32>());
+ EXPECT_EQ(whole->Offset(), 4u);
+ EXPECT_EQ(whole->Size(), 4u);
+ EXPECT_EQ(whole->Align(), 4u);
+ EXPECT_EQ(whole->Name(), Sym("whole"));
+
+ EXPECT_EQ(ty->Size(), 8u);
+ EXPECT_EQ(ty->SizeNoPadding(), 8u);
+}
+
+TEST_F(ResolverIntrinsicDataTest, ModfVector) {
+ auto* call = Call("modf", vec3<f32>());
+ WrapInFunction(call);
+
+ EXPECT_TRUE(r()->Resolve()) << r()->error();
+
+ ASSERT_NE(TypeOf(call), nullptr);
+ auto* ty = TypeOf(call)->As<sem::Struct>();
+ ASSERT_NE(ty, nullptr);
+ ASSERT_EQ(ty->Members().size(), 2u);
+
+ auto* fract = ty->Members()[0];
+ ASSERT_TRUE(fract->Type()->Is<sem::Vector>());
+ EXPECT_EQ(fract->Type()->As<sem::Vector>()->Width(), 3u);
+ EXPECT_TRUE(fract->Type()->As<sem::Vector>()->type()->Is<sem::F32>());
+ EXPECT_EQ(fract->Offset(), 0u);
+ EXPECT_EQ(fract->Size(), 12u);
+ EXPECT_EQ(fract->Align(), 16u);
+ EXPECT_EQ(fract->Name(), Sym("fract"));
+
+ auto* whole = ty->Members()[1];
+ ASSERT_TRUE(whole->Type()->Is<sem::Vector>());
+ EXPECT_EQ(whole->Type()->As<sem::Vector>()->Width(), 3u);
+ EXPECT_TRUE(whole->Type()->As<sem::Vector>()->type()->Is<sem::F32>());
+ EXPECT_EQ(whole->Offset(), 16u);
+ EXPECT_EQ(whole->Size(), 12u);
+ EXPECT_EQ(whole->Align(), 16u);
+ EXPECT_EQ(whole->Name(), Sym("whole"));
+
+ EXPECT_EQ(ty->Size(), 32u);
+ EXPECT_EQ(ty->SizeNoPadding(), 28u);
+}
+
TEST_F(ResolverIntrinsicDataTest, Modf_Error_FirstParamInt) {
Global("whole", ty.f32(), ast::StorageClass::kWorkgroup);
auto* call = Call("modf", 1, AddressOf("whole"));
@@ -950,9 +1082,11 @@
r()->error(),
R"(error: no matching call to modf(i32, ptr<workgroup, f32, read_write>)
-2 candidate functions:
+4 candidate functions:
modf(f32, ptr<S, f32, A>) -> f32 where: S is function, private or workgroup
modf(vecN<f32>, ptr<S, vecN<f32>, A>) -> vecN<f32> where: S is function, private or workgroup
+ modf(f32) -> _modf_result
+ modf(vecN<f32>) -> _modf_result_vecN
)");
}
@@ -967,9 +1101,11 @@
r()->error(),
R"(error: no matching call to modf(f32, ptr<workgroup, i32, read_write>)
-2 candidate functions:
+4 candidate functions:
modf(f32, ptr<S, f32, A>) -> f32 where: S is function, private or workgroup
+ modf(f32) -> _modf_result
modf(vecN<f32>, ptr<S, vecN<f32>, A>) -> vecN<f32> where: S is function, private or workgroup
+ modf(vecN<f32>) -> _modf_result_vecN
)");
}
@@ -981,9 +1117,11 @@
EXPECT_EQ(r()->error(), R"(error: no matching call to modf(f32, f32)
-2 candidate functions:
+4 candidate functions:
modf(f32, ptr<S, f32, A>) -> f32 where: S is function, private or workgroup
+ modf(f32) -> _modf_result
modf(vecN<f32>, ptr<S, vecN<f32>, A>) -> vecN<f32> where: S is function, private or workgroup
+ modf(vecN<f32>) -> _modf_result_vecN
)");
}
@@ -998,9 +1136,11 @@
r()->error(),
R"(error: no matching call to modf(vec2<f32>, ptr<workgroup, vec4<f32>, read_write>)
-2 candidate functions:
+4 candidate functions:
modf(vecN<f32>, ptr<S, vecN<f32>, A>) -> vecN<f32> where: S is function, private or workgroup
+ modf(vecN<f32>) -> _modf_result_vecN
modf(f32, ptr<S, f32, A>) -> f32 where: S is function, private or workgroup
+ modf(f32) -> _modf_result
)");
}
diff --git a/src/resolver/resolver.cc b/src/resolver/resolver.cc
index 2656568..a180646 100644
--- a/src/resolver/resolver.cc
+++ b/src/resolver/resolver.cc
@@ -2998,7 +2998,7 @@
const sem::StructMember* member = nullptr;
for (auto* m : str->Members()) {
- if (m->Declaration()->symbol() == symbol) {
+ if (m->Name() == symbol) {
ret = m->Type();
member = m;
break;
@@ -4088,7 +4088,7 @@
offset = utils::RoundUp(align, offset);
auto* sem_member = builder_->create<sem::StructMember>(
- member, const_cast<sem::Type*>(type),
+ member, member->symbol(), const_cast<sem::Type*>(type),
static_cast<uint32_t>(sem_members.size()), offset, align, size);
builder_->Sem().Add(member, sem_member);
sem_members.emplace_back(sem_member);
@@ -4100,8 +4100,9 @@
auto size_no_padding = struct_size;
struct_size = utils::RoundUp(struct_align, struct_size);
- auto* out = builder_->create<sem::Struct>(str, sem_members, struct_align,
- struct_size, size_no_padding);
+ auto* out =
+ builder_->create<sem::Struct>(str, str->name(), sem_members, struct_align,
+ struct_size, size_no_padding);
// Keep track of atomic members for validation after all usages have been
// determined.
diff --git a/src/sem/sem_struct_test.cc b/src/sem/sem_struct_test.cc
index b974ee7..ed0eba3 100644
--- a/src/sem/sem_struct_test.cc
+++ b/src/sem/sem_struct_test.cc
@@ -27,8 +27,9 @@
auto* impl =
create<ast::Struct>(name, ast::StructMemberList{}, ast::DecorationList{});
auto* ptr = impl;
- auto* s = create<sem::Struct>(impl, StructMemberList{}, 4 /* align */,
- 8 /* size */, 16 /* size_no_padding */);
+ auto* s =
+ create<sem::Struct>(impl, impl->name(), StructMemberList{}, 4 /* align */,
+ 8 /* size */, 16 /* size_no_padding */);
EXPECT_EQ(s->Declaration(), ptr);
EXPECT_EQ(s->Align(), 4u);
EXPECT_EQ(s->Size(), 8u);
@@ -39,8 +40,9 @@
auto name = Sym("my_struct");
auto* impl =
create<ast::Struct>(name, ast::StructMemberList{}, ast::DecorationList{});
- auto* s = create<sem::Struct>(impl, StructMemberList{}, 4 /* align */,
- 4 /* size */, 4 /* size_no_padding */);
+ auto* s =
+ create<sem::Struct>(impl, impl->name(), StructMemberList{}, 4 /* align */,
+ 4 /* size */, 4 /* size_no_padding */);
EXPECT_EQ(s->type_name(), "__struct_$1");
}
@@ -48,8 +50,9 @@
auto name = Sym("my_struct");
auto* impl =
create<ast::Struct>(name, ast::StructMemberList{}, ast::DecorationList{});
- auto* s = create<sem::Struct>(impl, StructMemberList{}, 4 /* align */,
- 4 /* size */, 4 /* size_no_padding */);
+ auto* s =
+ create<sem::Struct>(impl, impl->name(), StructMemberList{}, 4 /* align */,
+ 4 /* size */, 4 /* size_no_padding */);
EXPECT_EQ(s->FriendlyName(Symbols()), "my_struct");
}
diff --git a/src/sem/struct.cc b/src/sem/struct.cc
index 210a70e..dea2fd1 100644
--- a/src/sem/struct.cc
+++ b/src/sem/struct.cc
@@ -27,11 +27,13 @@
namespace sem {
Struct::Struct(const ast::Struct* declaration,
+ Symbol name,
StructMemberList members,
uint32_t align,
uint32_t size,
uint32_t size_no_padding)
: declaration_(declaration),
+ name_(name),
members_(std::move(members)),
align_(align),
size_(size),
@@ -57,7 +59,7 @@
}
std::string Struct::type_name() const {
- return declaration_->type_name();
+ return "__struct_" + name_.to_str();
}
uint32_t Struct::Align() const {
@@ -69,7 +71,7 @@
}
std::string Struct::FriendlyName(const SymbolTable& symbols) const {
- return symbols.NameFor(declaration_->name());
+ return symbols.NameFor(name_);
}
bool Struct::IsConstructible() const {
@@ -77,12 +79,14 @@
}
StructMember::StructMember(ast::StructMember* declaration,
+ Symbol name,
sem::Type* type,
uint32_t index,
uint32_t offset,
uint32_t align,
uint32_t size)
: declaration_(declaration),
+ name_(name),
type_(type),
index_(index),
offset_(offset),
diff --git a/src/sem/struct.h b/src/sem/struct.h
index b5357cb..f6014aa 100644
--- a/src/sem/struct.h
+++ b/src/sem/struct.h
@@ -58,12 +58,14 @@
public:
/// Constructor
/// @param declaration the AST structure declaration
+ /// @param name the name of the structure
/// @param members the structure members
/// @param align the byte alignment of the structure
/// @param size the byte size of the structure
/// @param size_no_padding size of the members without the end of structure
/// alignment padding
Struct(const ast::Struct* declaration,
+ Symbol name,
StructMemberList members,
uint32_t align,
uint32_t size,
@@ -75,6 +77,9 @@
/// @returns the struct
const ast::Struct* Declaration() const { return declaration_; }
+ /// @returns the name of the structure
+ Symbol Name() const { return name_; }
+
/// @returns the members of the structure
const StructMemberList& Members() const { return members_; }
@@ -156,6 +161,7 @@
uint64_t LargestMemberBaseAlignment(MemoryLayout mem_layout) const;
ast::Struct const* const declaration_;
+ Symbol const name_;
StructMemberList const members_;
uint32_t const align_;
uint32_t const size_;
@@ -170,12 +176,14 @@
public:
/// Constructor
/// @param declaration the AST declaration node
+ /// @param name the name of the structure
/// @param type the type of the member
/// @param index the index of the member in the structure
/// @param offset the byte offset from the base of the structure
/// @param align the byte alignment of the member
/// @param size the byte size of the member
StructMember(ast::StructMember* declaration,
+ Symbol name,
sem::Type* type,
uint32_t index,
uint32_t offset,
@@ -188,6 +196,9 @@
/// @returns the AST declaration node
ast::StructMember* Declaration() const { return declaration_; }
+ /// @returns the name of the structure
+ Symbol Name() const { return name_; }
+
/// @returns the type of the member
sem::Type* Type() const { return type_; }
@@ -205,6 +216,7 @@
private:
ast::StructMember* const declaration_;
+ Symbol const name_;
sem::Type* const type_;
uint32_t const index_;
uint32_t const offset_;
diff --git a/src/transform/transform_test.cc b/src/transform/transform_test.cc
index 887c410..87b6ab2 100644
--- a/src/transform/transform_test.cc
+++ b/src/transform/transform_test.cc
@@ -106,8 +106,9 @@
TEST_F(CreateASTTypeForTest, Struct) {
auto* str = create([](ProgramBuilder& b) {
auto* decl = b.Structure("S", {}, {});
- return b.create<sem::Struct>(decl, sem::StructMemberList{}, 4 /* align */,
- 4 /* size */, 4 /* size_no_padding */);
+ return b.create<sem::Struct>(decl, decl->name(), sem::StructMemberList{},
+ 4 /* align */, 4 /* size */,
+ 4 /* size_no_padding */);
});
ASSERT_TRUE(str->Is<ast::TypeName>());
EXPECT_EQ(
diff --git a/src/writer/hlsl/generator_impl.cc b/src/writer/hlsl/generator_impl.cc
index e3ed808..5ba656a 100644
--- a/src/writer/hlsl/generator_impl.cc
+++ b/src/writer/hlsl/generator_impl.cc
@@ -147,7 +147,7 @@
return false;
}
} else if (auto* str = decl->As<ast::Struct>()) {
- if (!EmitStructType(builder_.Sem().Get(str))) {
+ if (!EmitStructType(current_buffer_, builder_.Sem().Get(str))) {
return false;
}
} else if (auto* func = decl->As<ast::Function>()) {
@@ -521,6 +521,8 @@
return EmitTextureCall(out, expr, intrinsic);
} else if (intrinsic->Type() == sem::IntrinsicType::kSelect) {
return EmitSelectCall(out, expr);
+ } else if (intrinsic->Type() == sem::IntrinsicType::kModf) {
+ return EmitModfCall(out, expr, intrinsic);
} else if (intrinsic->Type() == sem::IntrinsicType::kFrexp) {
return EmitFrexpCall(out, expr, intrinsic);
} else if (intrinsic->Type() == sem::IntrinsicType::kIsNormal) {
@@ -1270,9 +1272,93 @@
return true;
}
+bool GeneratorImpl::EmitModfCall(std::ostream& out,
+ ast::CallExpression* expr,
+ const sem::Intrinsic* intrinsic) {
+ if (expr->params().size() == 1) {
+ return CallIntrinsicHelper(
+ out, expr, intrinsic,
+ [&](TextBuffer* b, const std::vector<std::string>& params) {
+ auto* ty = intrinsic->Parameters()[0]->Type();
+ auto in = params[0];
+
+ std::string width;
+ if (auto* vec = ty->As<sem::Vector>()) {
+ width = std::to_string(vec->Width());
+ }
+
+ // Emit the builtin return type unique to this overload. This does not
+ // exist in the AST, so it will not be generated in Generate().
+ if (!EmitStructType(&helpers_,
+ intrinsic->ReturnType()->As<sem::Struct>())) {
+ return false;
+ }
+
+ line(b) << "float" << width << " whole;";
+ line(b) << "float" << width << " fract = modf(" << in << ", whole);";
+ {
+ auto l = line(b);
+ if (!EmitType(l, intrinsic->ReturnType(), ast::StorageClass::kNone,
+ ast::Access::kUndefined, "")) {
+ return false;
+ }
+ l << " result = {fract, whole};";
+ }
+ line(b) << "return result;";
+ return true;
+ });
+ }
+
+ // DEPRECATED
+ out << "modf";
+ ScopedParen sp(out);
+ if (!EmitExpression(out, expr->params()[0])) {
+ return false;
+ }
+ out << ", ";
+ if (!EmitExpression(out, expr->params()[1])) {
+ return false;
+ }
+ return true;
+}
+
bool GeneratorImpl::EmitFrexpCall(std::ostream& out,
ast::CallExpression* expr,
const sem::Intrinsic* intrinsic) {
+ if (expr->params().size() == 1) {
+ return CallIntrinsicHelper(
+ out, expr, intrinsic,
+ [&](TextBuffer* b, const std::vector<std::string>& params) {
+ auto* ty = intrinsic->Parameters()[0]->Type();
+ auto in = params[0];
+
+ std::string width;
+ if (auto* vec = ty->As<sem::Vector>()) {
+ width = std::to_string(vec->Width());
+ }
+
+ // Emit the builtin return type unique to this overload. This does not
+ // exist in the AST, so it will not be generated in Generate().
+ if (!EmitStructType(&helpers_,
+ intrinsic->ReturnType()->As<sem::Struct>())) {
+ return false;
+ }
+
+ line(b) << "float" << width << " exp;";
+ line(b) << "float" << width << " sig = frexp(" << in << ", exp);";
+ {
+ auto l = line(b);
+ if (!EmitType(l, intrinsic->ReturnType(), ast::StorageClass::kNone,
+ ast::Access::kUndefined, "")) {
+ return false;
+ }
+ l << " result = {sig, int" << width << "(exp)};";
+ }
+ line(b) << "return result;";
+ return true;
+ });
+ }
+ // DEPRECATED
// Exponent is an integer in WGSL, but HLSL wants a float.
// We need to make the call with a temporary float, and then cast.
return CallIntrinsicHelper(
@@ -2906,7 +2992,7 @@
}
out << "State";
} else if (auto* str = type->As<sem::Struct>()) {
- out << builder_.Symbols().NameFor(str->Declaration()->name());
+ out << StructName(str);
} else if (auto* tex = type->As<sem::Texture>()) {
auto* storage = tex->As<sem::StorageTexture>();
auto* multism = tex->As<sem::MultisampledTexture>();
@@ -3015,7 +3101,7 @@
return true;
}
-bool GeneratorImpl::EmitStructType(const sem::Struct* str) {
+bool GeneratorImpl::EmitStructType(TextBuffer* b, const sem::Struct* str) {
auto storage_class_uses = str->StorageClassUsage();
if (storage_class_uses.size() ==
(storage_class_uses.count(ast::StorageClass::kStorage) +
@@ -3029,71 +3115,74 @@
return true;
}
- auto struct_name = builder_.Symbols().NameFor(str->Declaration()->name());
- line() << "struct " << struct_name << " {";
+ line(b) << "struct " << StructName(str) << " {";
{
- ScopedIndent si(this);
+ ScopedIndent si(b);
for (auto* mem : str->Members()) {
- auto name = builder_.Symbols().NameFor(mem->Declaration()->symbol());
+ auto name = builder_.Symbols().NameFor(mem->Name());
auto* ty = mem->Type();
- auto out = line();
+ auto out = line(b);
std::string pre, post;
- for (auto* deco : mem->Declaration()->decorations()) {
- if (auto* location = deco->As<ast::LocationDecoration>()) {
- auto& pipeline_stage_uses = str->PipelineStageUses();
- if (pipeline_stage_uses.size() != 1) {
- TINT_ICE(Writer, diagnostics_)
- << "invalid entry point IO struct uses";
- }
+ if (auto* decl = mem->Declaration()) {
+ for (auto* deco : decl->decorations()) {
+ if (auto* location = deco->As<ast::LocationDecoration>()) {
+ auto& pipeline_stage_uses = str->PipelineStageUses();
+ if (pipeline_stage_uses.size() != 1) {
+ TINT_ICE(Writer, diagnostics_)
+ << "invalid entry point IO struct uses";
+ }
- if (pipeline_stage_uses.count(
- sem::PipelineStageUsage::kVertexInput)) {
- post += " : TEXCOORD" + std::to_string(location->value());
- } else if (pipeline_stage_uses.count(
- sem::PipelineStageUsage::kVertexOutput)) {
- post += " : TEXCOORD" + std::to_string(location->value());
- } else if (pipeline_stage_uses.count(
- sem::PipelineStageUsage::kFragmentInput)) {
- post += " : TEXCOORD" + std::to_string(location->value());
- } else if (pipeline_stage_uses.count(
- sem::PipelineStageUsage::kFragmentOutput)) {
- post += " : SV_Target" + std::to_string(location->value());
- } else {
+ if (pipeline_stage_uses.count(
+ sem::PipelineStageUsage::kVertexInput)) {
+ post += " : TEXCOORD" + std::to_string(location->value());
+ } else if (pipeline_stage_uses.count(
+ sem::PipelineStageUsage::kVertexOutput)) {
+ post += " : TEXCOORD" + std::to_string(location->value());
+ } else if (pipeline_stage_uses.count(
+ sem::PipelineStageUsage::kFragmentInput)) {
+ post += " : TEXCOORD" + std::to_string(location->value());
+ } else if (pipeline_stage_uses.count(
+ sem::PipelineStageUsage::kFragmentOutput)) {
+ post += " : SV_Target" + std::to_string(location->value());
+ } else {
+ TINT_ICE(Writer, diagnostics_)
+ << "invalid use of location decoration";
+ }
+ } else if (auto* builtin = deco->As<ast::BuiltinDecoration>()) {
+ auto attr = builtin_to_attribute(builtin->value());
+ if (attr.empty()) {
+ diagnostics_.add_error(diag::System::Writer,
+ "unsupported builtin");
+ return false;
+ }
+ post += " : " + attr;
+ } else if (auto* interpolate =
+ deco->As<ast::InterpolateDecoration>()) {
+ auto mod = interpolation_to_modifiers(interpolate->type(),
+ interpolate->sampling());
+ if (mod.empty()) {
+ diagnostics_.add_error(diag::System::Writer,
+ "unsupported interpolation");
+ return false;
+ }
+ pre += mod;
+
+ } else if (deco->Is<ast::InvariantDecoration>()) {
+ // Note: `precise` is not exactly the same as `invariant`, but is
+ // stricter and therefore provides the necessary guarantees.
+ // See discussion here: https://github.com/gpuweb/gpuweb/issues/893
+ pre += "precise ";
+ } else if (!deco->IsAnyOf<ast::StructMemberAlignDecoration,
+ ast::StructMemberOffsetDecoration,
+ ast::StructMemberSizeDecoration>()) {
TINT_ICE(Writer, diagnostics_)
- << "invalid use of location decoration";
- }
- } else if (auto* builtin = deco->As<ast::BuiltinDecoration>()) {
- auto attr = builtin_to_attribute(builtin->value());
- if (attr.empty()) {
- diagnostics_.add_error(diag::System::Writer, "unsupported builtin");
+ << "unhandled struct member attribute: " << deco->name();
return false;
}
- post += " : " + attr;
- } else if (auto* interpolate = deco->As<ast::InterpolateDecoration>()) {
- auto mod = interpolation_to_modifiers(interpolate->type(),
- interpolate->sampling());
- if (mod.empty()) {
- diagnostics_.add_error(diag::System::Writer,
- "unsupported interpolation");
- return false;
- }
- pre += mod;
-
- } else if (deco->Is<ast::InvariantDecoration>()) {
- // Note: `precise` is not exactly the same as `invariant`, but is
- // stricter and therefore provides the necessary guarantees.
- // See discussion here: https://github.com/gpuweb/gpuweb/issues/893
- pre += "precise ";
- } else if (!deco->IsAnyOf<ast::StructMemberAlignDecoration,
- ast::StructMemberOffsetDecoration,
- ast::StructMemberSizeDecoration>()) {
- TINT_ICE(Writer, diagnostics_)
- << "unhandled struct member attribute: " << deco->name();
- return false;
}
}
@@ -3106,7 +3195,7 @@
}
}
- line() << "};";
+ line(b) << "};";
return true;
}
@@ -3239,11 +3328,14 @@
F&& build) {
// Generate the helper function if it hasn't been created already
auto fn = utils::GetOrCreate(intrinsics_, intrinsic, [&]() -> std::string {
+ TextBuffer b;
+ TINT_DEFER(helpers_.Append(b));
+
auto fn_name =
UniqueIdentifier(std::string("tint_") + sem::str(intrinsic->Type()));
std::vector<std::string> parameter_names;
{
- auto decl = line(&helpers_);
+ auto decl = line(&b);
if (!EmitTypeAndName(decl, intrinsic->ReturnType(),
ast::StorageClass::kNone, ast::Access::kUndefined,
fn_name)) {
@@ -3271,13 +3363,13 @@
decl << " {";
}
{
- ScopedIndent si(&helpers_);
- if (!build(&helpers_, parameter_names)) {
+ ScopedIndent si(&b);
+ if (!build(&b, parameter_names)) {
return "";
}
}
- line(&helpers_) << "}";
- line(&helpers_);
+ line(&b) << "}";
+ line(&b);
return fn_name;
});
diff --git a/src/writer/hlsl/generator_impl.h b/src/writer/hlsl/generator_impl.h
index 1fdd404..8874b2d 100644
--- a/src/writer/hlsl/generator_impl.h
+++ b/src/writer/hlsl/generator_impl.h
@@ -155,6 +155,14 @@
/// @param expr the call expression
/// @returns true if the call expression is emitted
bool EmitSelectCall(std::ostream& out, ast::CallExpression* expr);
+ /// Handles generating a call to the `modf()` intrinsic
+ /// @param out the output of the expression stream
+ /// @param expr the call expression
+ /// @param intrinsic the semantic information for the intrinsic
+ /// @returns true if the call expression is emitted
+ bool EmitModfCall(std::ostream& out,
+ ast::CallExpression* expr,
+ const sem::Intrinsic* intrinsic);
/// Handles generating a call to the `frexp()` intrinsic
/// @param out the output of the expression stream
/// @param expr the call expression
@@ -320,7 +328,7 @@
/// @param type the type to generate
/// @param storage_class the storage class of the variable
/// @param access the access control type of the variable
- /// @param name the name of the variable, used for array emission.
+ /// @param name the name to emit
/// @returns true if the type is emitted
bool EmitTypeAndName(std::ostream& out,
const sem::Type* type,
@@ -328,9 +336,10 @@
ast::Access access,
const std::string& name);
/// Handles generating a structure declaration
+ /// @param buffer the text buffer that the type declaration will be written to
/// @param ty the struct to generate
/// @returns true if the struct is emitted
- bool EmitStructType(const sem::Struct* ty);
+ bool EmitStructType(TextBuffer* buffer, const sem::Struct* ty);
/// Handles a unary op expression
/// @param out the output of the expression stream
/// @param expr the expression to emit
@@ -413,7 +422,6 @@
/// `buffer` is the body of the generated function
/// `params` is the name of all the generated function parameters
/// @returns true if the call expression is emitted
-
template <typename F>
bool CallIntrinsicHelper(std::ostream& out,
ast::CallExpression* call,
diff --git a/src/writer/hlsl/generator_impl_type_test.cc b/src/writer/hlsl/generator_impl_type_test.cc
index 3417ec1..56baf78 100644
--- a/src/writer/hlsl/generator_impl_type_test.cc
+++ b/src/writer/hlsl/generator_impl_type_test.cc
@@ -173,9 +173,10 @@
GeneratorImpl& gen = Build();
+ TextGenerator::TextBuffer buf;
auto* sem_s = program->TypeOf(s)->As<sem::Struct>();
- ASSERT_TRUE(gen.EmitStructType(sem_s)) << gen.error();
- EXPECT_EQ(gen.result(), R"(struct S {
+ ASSERT_TRUE(gen.EmitStructType(&buf, sem_s)) << gen.error();
+ EXPECT_EQ(buf.String(), R"(struct S {
int a;
float b;
};
@@ -197,9 +198,10 @@
GeneratorImpl& gen = Build();
+ TextGenerator::TextBuffer buf;
auto* sem_s = program->TypeOf(s)->As<sem::Struct>();
- ASSERT_TRUE(gen.EmitStructType(sem_s)) << gen.error();
- EXPECT_EQ(gen.result(), "");
+ ASSERT_TRUE(gen.EmitStructType(&buf, sem_s)) << gen.error();
+ EXPECT_EQ(buf.String(), "");
}
TEST_F(HlslGeneratorImplTest_Type, EmitType_Struct) {
@@ -247,9 +249,10 @@
GeneratorImpl& gen = Build();
+ TextGenerator::TextBuffer buf;
auto* sem_s = program->TypeOf(s)->As<sem::Struct>();
- ASSERT_TRUE(gen.EmitStructType(sem_s)) << gen.error();
- EXPECT_EQ(gen.result(), R"(struct S {
+ ASSERT_TRUE(gen.EmitStructType(&buf, sem_s)) << gen.error();
+ EXPECT_EQ(buf.String(), R"(struct S {
int a;
float b;
};
diff --git a/src/writer/msl/generator_impl.cc b/src/writer/msl/generator_impl.cc
index eee283b..f4efca4 100644
--- a/src/writer/msl/generator_impl.cc
+++ b/src/writer/msl/generator_impl.cc
@@ -150,7 +150,7 @@
bool GeneratorImpl::EmitTypeDecl(const sem::Type* ty) {
if (auto* str = ty->As<sem::Struct>()) {
- if (!EmitStructType(str)) {
+ if (!EmitStructType(current_buffer_, str)) {
return false;
}
} else {
@@ -392,6 +392,11 @@
auto name = generate_builtin_name(intrinsic);
switch (intrinsic->Type()) {
+ case sem::IntrinsicType::kModf:
+ return EmitModfCall(out, expr, intrinsic);
+ case sem::IntrinsicType::kFrexp:
+ return EmitFrexpCall(out, expr, intrinsic);
+
case sem::IntrinsicType::kPack2x16float:
case sem::IntrinsicType::kUnpack2x16float: {
if (intrinsic->Type() == sem::IntrinsicType::kPack2x16float) {
@@ -423,28 +428,6 @@
return true;
}
- case sem::IntrinsicType::kFrexp:
- case sem::IntrinsicType::kModf: {
- // TODO(bclayton): These intrinsics are likely to change signature.
- // See: crbug.com/tint/54 and https://github.com/gpuweb/gpuweb/issues/1480
- out << name;
- ScopedParen sp(out);
- if (!EmitExpression(out, expr->params()[0])) {
- return false;
- }
- out << ", ";
- {
- // MSL has a reference for the second parameter, but WGSL has a pointer.
- // Dereference the argument.
- out << "*";
- ScopedParen sp2(out);
- if (!EmitExpression(out, expr->params()[1])) {
- return false;
- }
- }
- return true;
- }
-
case sem::IntrinsicType::kLength: {
auto* sem = builder_.Sem().Get(expr->params()[0]);
if (sem->Type()->UnwrapRef()->is_scalar()) {
@@ -869,6 +852,105 @@
return true;
}
+bool GeneratorImpl::EmitModfCall(std::ostream& out,
+ ast::CallExpression* expr,
+ const sem::Intrinsic* intrinsic) {
+ if (expr->params().size() == 1) {
+ return CallIntrinsicHelper(
+ out, expr, intrinsic,
+ [&](TextBuffer* b, const std::vector<std::string>& params) {
+ auto* ty = intrinsic->Parameters()[0]->Type();
+ auto in = params[0];
+
+ std::string width;
+ if (auto* vec = ty->As<sem::Vector>()) {
+ width = std::to_string(vec->Width());
+ }
+
+ // Emit the builtin return type unique to this overload. This does not
+ // exist in the AST, so it will not be generated in Generate().
+ if (!EmitStructType(&helpers_,
+ intrinsic->ReturnType()->As<sem::Struct>())) {
+ return false;
+ }
+
+ line(b) << "float" << width << " whole;";
+ line(b) << "float" << width << " fract = modf(" << in << ", whole);";
+ line(b) << "return {fract, whole};";
+ return true;
+ });
+ }
+ // DEPRECATED
+ return CallIntrinsicHelper(
+ out, expr, intrinsic,
+ [&](TextBuffer* b, const std::vector<std::string>& params) {
+ auto* ty = intrinsic->Parameters()[0]->Type();
+ auto in = params[0];
+ auto out_whole = params[1];
+
+ std::string width;
+ if (auto* vec = ty->As<sem::Vector>()) {
+ width = std::to_string(vec->Width());
+ }
+
+ line(b) << "float" << width << " whole;";
+ line(b) << "float" << width << " fract = modf(" << in << ", whole);";
+ line(b) << "*" << out_whole << " = whole;";
+ line(b) << "return fract;";
+ return true;
+ });
+}
+
+bool GeneratorImpl::EmitFrexpCall(std::ostream& out,
+ ast::CallExpression* expr,
+ const sem::Intrinsic* intrinsic) {
+ if (expr->params().size() == 1) {
+ return CallIntrinsicHelper(
+ out, expr, intrinsic,
+ [&](TextBuffer* b, const std::vector<std::string>& params) {
+ auto* ty = intrinsic->Parameters()[0]->Type();
+ auto in = params[0];
+
+ std::string width;
+ if (auto* vec = ty->As<sem::Vector>()) {
+ width = std::to_string(vec->Width());
+ }
+
+ // Emit the builtin return type unique to this overload. This does not
+ // exist in the AST, so it will not be generated in Generate().
+ if (!EmitStructType(&helpers_,
+ intrinsic->ReturnType()->As<sem::Struct>())) {
+ return false;
+ }
+
+ line(b) << "int" << width << " exp;";
+ line(b) << "float" << width << " sig = frexp(" << in << ", exp);";
+ line(b) << "return {sig, exp};";
+ return true;
+ });
+ }
+
+ // DEPRECATED
+ return CallIntrinsicHelper(
+ out, expr, intrinsic,
+ [&](TextBuffer* b, const std::vector<std::string>& params) {
+ auto* ty = intrinsic->Parameters()[0]->Type();
+ auto in = params[0];
+ auto out_exp = params[1];
+
+ std::string width;
+ if (auto* vec = ty->As<sem::Vector>()) {
+ width = std::to_string(vec->Width());
+ }
+
+ line(b) << "int" << width << " exp;";
+ line(b) << "float" << width << " sig = frexp(" << in << ", exp);";
+ line(b) << "*" << out_exp << " = exp;";
+ line(b) << "return sig;";
+ return true;
+ });
+}
+
std::string GeneratorImpl::generate_builtin_name(
const sem::Intrinsic* intrinsic) {
std::string out = "";
@@ -1846,7 +1928,8 @@
bool GeneratorImpl::EmitType(std::ostream& out,
const sem::Type* type,
- const std::string& name) {
+ const std::string& name,
+ bool* name_printed /* = nullptr */) {
if (auto* atomic = type->As<sem::Atomic>()) {
if (atomic->Type()->Is<sem::I32>()) {
out << "atomic_int";
@@ -1877,6 +1960,9 @@
}
if (!name.empty()) {
out << " " << name;
+ if (name_printed) {
+ *name_printed = true;
+ }
}
for (uint32_t size : sizes) {
out << "[" << size << "]";
@@ -1914,6 +2000,9 @@
out << " ";
if (ptr->StoreType()->Is<sem::Array>()) {
std::string inner = "(*" + name + ")";
+ if (name_printed) {
+ *name_printed = true;
+ }
if (!EmitType(out, ptr->StoreType(), inner)) {
return false;
}
@@ -1922,6 +2011,9 @@
return false;
}
out << "* " << name;
+ if (name_printed) {
+ *name_printed = true;
+ }
}
return true;
}
@@ -1934,7 +2026,7 @@
if (auto* str = type->As<sem::Struct>()) {
// The struct type emits as just the name. The declaration would be emitted
// as part of emitting the declared types.
- out << program_->Symbols().NameFor(str->Declaration()->name());
+ out << StructName(str);
return true;
}
@@ -2031,6 +2123,19 @@
return false;
}
+bool GeneratorImpl::EmitTypeAndName(std::ostream& out,
+ const sem::Type* type,
+ const std::string& name) {
+ bool name_printed = false;
+ if (!EmitType(out, type, name, &name_printed)) {
+ return false;
+ }
+ if (!name_printed) {
+ out << " " << name;
+ }
+ return true;
+}
+
bool GeneratorImpl::EmitStorageClass(std::ostream& out, ast::StorageClass sc) {
switch (sc) {
case ast::StorageClass::kFunction:
@@ -2069,9 +2174,8 @@
return EmitType(out, type, name);
}
-bool GeneratorImpl::EmitStructType(const sem::Struct* str) {
- line() << "struct " << program_->Symbols().NameFor(str->Declaration()->name())
- << " {";
+bool GeneratorImpl::EmitStructType(TextBuffer* b, const sem::Struct* str) {
+ line(b) << "struct " << StructName(str) << " {";
bool is_host_shareable = str->IsHostShareable();
@@ -2089,16 +2193,17 @@
name = UniqueIdentifier("tint_pad");
} while (str->FindMember(program_->Symbols().Get(name)));
- auto out = line();
+ auto out = line(b);
add_byte_offset_comment(out, msl_offset);
out << "int8_t " << name << "[" << size << "];";
};
- increment_indent();
+ b->IncrementIndent();
+
uint32_t msl_offset = 0;
for (auto* mem : str->Members()) {
- auto out = line();
- auto name = program_->Symbols().NameFor(mem->Declaration()->symbol());
+ auto out = line(b);
+ auto name = program_->Symbols().NameFor(mem->Name());
auto wgsl_offset = mem->Offset();
if (is_host_shareable) {
@@ -2135,53 +2240,56 @@
}
// Emit decorations
- for (auto* deco : mem->Declaration()->decorations()) {
- if (auto* builtin = deco->As<ast::BuiltinDecoration>()) {
- auto attr = builtin_to_attribute(builtin->value());
- if (attr.empty()) {
- diagnostics_.add_error(diag::System::Writer, "unknown builtin");
- return false;
- }
- out << " [[" << attr << "]]";
- } else if (auto* loc = deco->As<ast::LocationDecoration>()) {
- auto& pipeline_stage_uses = str->PipelineStageUses();
- if (pipeline_stage_uses.size() != 1) {
- TINT_ICE(Writer, diagnostics_)
- << "invalid entry point IO struct uses";
- }
+ if (auto* decl = mem->Declaration()) {
+ for (auto* deco : decl->decorations()) {
+ if (auto* builtin = deco->As<ast::BuiltinDecoration>()) {
+ auto attr = builtin_to_attribute(builtin->value());
+ if (attr.empty()) {
+ diagnostics_.add_error(diag::System::Writer, "unknown builtin");
+ return false;
+ }
+ out << " [[" << attr << "]]";
+ } else if (auto* loc = deco->As<ast::LocationDecoration>()) {
+ auto& pipeline_stage_uses = str->PipelineStageUses();
+ if (pipeline_stage_uses.size() != 1) {
+ TINT_ICE(Writer, diagnostics_)
+ << "invalid entry point IO struct uses";
+ }
- if (pipeline_stage_uses.count(sem::PipelineStageUsage::kVertexInput)) {
- out << " [[attribute(" + std::to_string(loc->value()) + ")]]";
- } else if (pipeline_stage_uses.count(
- sem::PipelineStageUsage::kVertexOutput)) {
- out << " [[user(locn" + std::to_string(loc->value()) + ")]]";
- } else if (pipeline_stage_uses.count(
- sem::PipelineStageUsage::kFragmentInput)) {
- out << " [[user(locn" + std::to_string(loc->value()) + ")]]";
- } else if (pipeline_stage_uses.count(
- sem::PipelineStageUsage::kFragmentOutput)) {
- out << " [[color(" + std::to_string(loc->value()) + ")]]";
- } else {
+ if (pipeline_stage_uses.count(
+ sem::PipelineStageUsage::kVertexInput)) {
+ out << " [[attribute(" + std::to_string(loc->value()) + ")]]";
+ } else if (pipeline_stage_uses.count(
+ sem::PipelineStageUsage::kVertexOutput)) {
+ out << " [[user(locn" + std::to_string(loc->value()) + ")]]";
+ } else if (pipeline_stage_uses.count(
+ sem::PipelineStageUsage::kFragmentInput)) {
+ out << " [[user(locn" + std::to_string(loc->value()) + ")]]";
+ } else if (pipeline_stage_uses.count(
+ sem::PipelineStageUsage::kFragmentOutput)) {
+ out << " [[color(" + std::to_string(loc->value()) + ")]]";
+ } else {
+ TINT_ICE(Writer, diagnostics_)
+ << "invalid use of location decoration";
+ }
+ } else if (auto* interpolate = deco->As<ast::InterpolateDecoration>()) {
+ auto attr = interpolation_to_attribute(interpolate->type(),
+ interpolate->sampling());
+ if (attr.empty()) {
+ diagnostics_.add_error(diag::System::Writer,
+ "unknown interpolation attribute");
+ return false;
+ }
+ out << " [[" << attr << "]]";
+ } else if (deco->Is<ast::InvariantDecoration>()) {
+ out << " [[invariant]]";
+ has_invariant_ = true;
+ } else if (!deco->IsAnyOf<ast::StructMemberOffsetDecoration,
+ ast::StructMemberAlignDecoration,
+ ast::StructMemberSizeDecoration>()) {
TINT_ICE(Writer, diagnostics_)
- << "invalid use of location decoration";
+ << "unhandled struct member attribute: " << deco->name();
}
- } else if (auto* interpolate = deco->As<ast::InterpolateDecoration>()) {
- auto attr = interpolation_to_attribute(interpolate->type(),
- interpolate->sampling());
- if (attr.empty()) {
- diagnostics_.add_error(diag::System::Writer,
- "unknown interpolation attribute");
- return false;
- }
- out << " [[" << attr << "]]";
- } else if (deco->Is<ast::InvariantDecoration>()) {
- out << " [[invariant]]";
- has_invariant_ = true;
- } else if (!deco->IsAnyOf<ast::StructMemberOffsetDecoration,
- ast::StructMemberAlignDecoration,
- ast::StructMemberSizeDecoration>()) {
- TINT_ICE(Writer, diagnostics_)
- << "unhandled struct member attribute: " << deco->name();
}
}
@@ -2204,9 +2312,9 @@
add_padding(str->Size() - msl_offset, msl_offset);
}
- decrement_indent();
+ b->DecrementIndent();
- line() << "};";
+ line(b) << "};";
return true;
}
@@ -2406,6 +2514,72 @@
return {};
}
+template <typename F>
+bool GeneratorImpl::CallIntrinsicHelper(std::ostream& out,
+ ast::CallExpression* call,
+ const sem::Intrinsic* intrinsic,
+ F&& build) {
+ // Generate the helper function if it hasn't been created already
+ auto fn = utils::GetOrCreate(intrinsics_, intrinsic, [&]() -> std::string {
+ TextBuffer b;
+ TINT_DEFER(helpers_.Append(b));
+
+ auto fn_name =
+ UniqueIdentifier(std::string("tint_") + sem::str(intrinsic->Type()));
+ std::vector<std::string> parameter_names;
+ {
+ auto decl = line(&b);
+ if (!EmitTypeAndName(decl, intrinsic->ReturnType(), fn_name)) {
+ return "";
+ }
+ {
+ ScopedParen sp(decl);
+ for (auto* param : intrinsic->Parameters()) {
+ if (!parameter_names.empty()) {
+ decl << ", ";
+ }
+ auto param_name = "param_" + std::to_string(parameter_names.size());
+ if (!EmitTypeAndName(decl, param->Type(), param_name)) {
+ return "";
+ }
+ parameter_names.emplace_back(std::move(param_name));
+ }
+ }
+ decl << " {";
+ }
+ {
+ ScopedIndent si(&b);
+ if (!build(&b, parameter_names)) {
+ return "";
+ }
+ }
+ line(&b) << "}";
+ line(&b);
+ return fn_name;
+ });
+
+ if (fn.empty()) {
+ return false;
+ }
+
+ // Call the helper
+ out << fn;
+ {
+ ScopedParen sp(out);
+ bool first = true;
+ for (auto* arg : call->params()) {
+ if (!first) {
+ out << ", ";
+ }
+ first = false;
+ if (!EmitExpression(out, arg)) {
+ return false;
+ }
+ }
+ }
+ return true;
+}
+
} // namespace msl
} // namespace writer
} // namespace tint
diff --git a/src/writer/msl/generator_impl.h b/src/writer/msl/generator_impl.h
index fde3c9a..899025b 100644
--- a/src/writer/msl/generator_impl.h
+++ b/src/writer/msl/generator_impl.h
@@ -126,6 +126,22 @@
bool EmitTextureCall(std::ostream& out,
ast::CallExpression* expr,
const sem::Intrinsic* intrinsic);
+ /// Handles generating a call to the `modf()` intrinsic
+ /// @param out the output of the expression stream
+ /// @param expr the call expression
+ /// @param intrinsic the semantic information for the intrinsic
+ /// @returns true if the call expression is emitted
+ bool EmitModfCall(std::ostream& out,
+ ast::CallExpression* expr,
+ const sem::Intrinsic* intrinsic);
+ /// Handles generating a call to the `frexp()` intrinsic
+ /// @param out the output of the expression stream
+ /// @param expr the call expression
+ /// @param intrinsic the semantic information for the intrinsic
+ /// @returns true if the call expression is emitted
+ bool EmitFrexpCall(std::ostream& out,
+ ast::CallExpression* expr,
+ const sem::Intrinsic* intrinsic);
/// Handles a case statement
/// @param stmt the statement
/// @returns true if the statement was emitted successfully
@@ -218,10 +234,20 @@
/// @param out the output of the type stream
/// @param type the type to generate
/// @param name the name of the variable, only used for array emission
+ /// @param name_printed (optional) if not nullptr and an array was printed
/// @returns true if the type is emitted
bool EmitType(std::ostream& out,
const sem::Type* type,
- const std::string& name);
+ const std::string& name,
+ bool* name_printed = nullptr);
+ /// Handles generating type and name
+ /// @param out the output stream
+ /// @param type the type to generate
+ /// @param name the name to emit
+ /// @returns true if the type is emitted
+ bool EmitTypeAndName(std::ostream& out,
+ const sem::Type* type,
+ const std::string& name);
/// Handles generating a storage class
/// @param out the output of the type stream
/// @param sc the storage class to generate
@@ -238,9 +264,10 @@
const sem::Type* type,
const std::string& name);
/// Handles generating a struct declaration
+ /// @param buffer the text buffer that the type declaration will be written to
/// @param str the struct to generate
/// @returns true if the struct is emitted
- bool EmitStructType(const sem::Struct* str);
+ bool EmitStructType(TextBuffer* buffer, const sem::Struct* str);
/// Handles emitting a type constructor
/// @param out the output of the expression stream
/// @param expr the type constructor expression
@@ -291,6 +318,25 @@
uint32_t align;
};
+ /// CallIntrinsicHelper will call the intrinsic helper function, creating it
+ /// if it hasn't been built already. If the intrinsic needs to be built then
+ /// CallIntrinsicHelper will generate the function signature and will call
+ /// `build` to emit the body of the function.
+ /// @param out the output of the expression stream
+ /// @param call the call expression
+ /// @param intrinsic the semantic information for the intrinsic
+ /// @param build a function with the signature:
+ /// `bool(TextBuffer* buffer, const std::vector<std::string>& params)`
+ /// Where:
+ /// `buffer` is the body of the generated function
+ /// `params` is the name of all the generated function parameters
+ /// @returns true if the call expression is emitted
+ template <typename F>
+ bool CallIntrinsicHelper(std::ostream& out,
+ ast::CallExpression* call,
+ const sem::Intrinsic* intrinsic,
+ F&& build);
+
TextBuffer helpers_; // Helper functions emitted at the top of the output
/// @returns the MSL packed type size and alignment in bytes for the given
@@ -308,6 +354,8 @@
/// True if an invariant attribute has been generated.
bool has_invariant_ = false;
+
+ std::unordered_map<const sem::Intrinsic*, std::string> intrinsics_;
};
} // namespace msl
diff --git a/src/writer/msl/generator_impl_type_test.cc b/src/writer/msl/generator_impl_type_test.cc
index 646ae7a..09e3bc8 100644
--- a/src/writer/msl/generator_impl_type_test.cc
+++ b/src/writer/msl/generator_impl_type_test.cc
@@ -219,9 +219,10 @@
GeneratorImpl& gen = Build();
+ TextGenerator::TextBuffer buf;
auto* sem_s = program->TypeOf(s)->As<sem::Struct>();
- ASSERT_TRUE(gen.EmitStructType(sem_s)) << gen.error();
- EXPECT_EQ(gen.result(), R"(struct S {
+ ASSERT_TRUE(gen.EmitStructType(&buf, sem_s)) << gen.error();
+ EXPECT_EQ(buf.String(), R"(struct S {
int a;
float b;
};
@@ -269,8 +270,9 @@
GeneratorImpl& gen = Build();
+ TextGenerator::TextBuffer buf;
auto* sem_s = program->TypeOf(s)->As<sem::Struct>();
- ASSERT_TRUE(gen.EmitStructType(sem_s)) << gen.error();
+ ASSERT_TRUE(gen.EmitStructType(&buf, sem_s)) << gen.error();
// ALL_FIELDS() calls the macro FIELD(ADDR, TYPE, NAME, SUFFIX)
// for each field of the structure s.
@@ -320,7 +322,7 @@
" /* " #ADDR " */ " #TYPE " " #NAME #SUFFIX ";\n"
auto* expect = "struct S {\n" ALL_FIELDS() "};\n";
#undef FIELD
- EXPECT_EQ(gen.result(), expect);
+ EXPECT_EQ(buf.String(), expect);
// 1.4 Metal and C++14
// The Metal programming language is a C++14-based Specification with
@@ -378,8 +380,9 @@
GeneratorImpl& gen = Build();
+ TextGenerator::TextBuffer buf;
auto* sem_s = program->TypeOf(s)->As<sem::Struct>();
- ASSERT_TRUE(gen.EmitStructType(sem_s)) << gen.error();
+ ASSERT_TRUE(gen.EmitStructType(&buf, sem_s)) << gen.error();
// ALL_FIELDS() calls the macro FIELD(ADDR, TYPE, NAME, SUFFIX)
// for each field of the structure s.
@@ -397,7 +400,7 @@
" /* " #ADDR " */ " #TYPE " " #NAME #SUFFIX ";\n"
auto* expect = "struct S {\n" ALL_FIELDS() "};\n";
#undef FIELD
- EXPECT_EQ(gen.result(), expect);
+ EXPECT_EQ(buf.String(), expect);
// 1.4 Metal and C++14
// The Metal programming language is a C++14-based Specification with
@@ -472,8 +475,9 @@
GeneratorImpl& gen = Build();
+ TextGenerator::TextBuffer buf;
auto* sem_s = program->TypeOf(s)->As<sem::Struct>();
- ASSERT_TRUE(gen.EmitStructType(sem_s)) << gen.error();
+ ASSERT_TRUE(gen.EmitStructType(&buf, sem_s)) << gen.error();
// ALL_FIELDS() calls the macro FIELD(ADDR, TYPE, NAME, SUFFIX)
// for each field of the structure s.
@@ -492,7 +496,7 @@
" /* " #ADDR " */ " #TYPE " " #NAME #SUFFIX ";\n"
auto* expect = "struct S {\n" ALL_FIELDS() "};\n";
#undef FIELD
- EXPECT_EQ(gen.result(), expect);
+ EXPECT_EQ(buf.String(), expect);
// 1.4 Metal and C++14
// The Metal programming language is a C++14-based Specification with
@@ -557,8 +561,9 @@
GeneratorImpl& gen = Build();
+ TextGenerator::TextBuffer buf;
auto* sem_s = program->TypeOf(s)->As<sem::Struct>();
- ASSERT_TRUE(gen.EmitStructType(sem_s)) << gen.error();
+ ASSERT_TRUE(gen.EmitStructType(&buf, sem_s)) << gen.error();
// ALL_FIELDS() calls the macro FIELD(ADDR, TYPE, NAME, SUFFIX)
// for each field of the structure s.
@@ -574,7 +579,7 @@
" /* " #ADDR " */ " #TYPE " " #NAME #SUFFIX ";\n"
auto* expect = "struct S {\n" ALL_FIELDS() "};\n";
#undef FIELD
- EXPECT_EQ(gen.result(), expect);
+ EXPECT_EQ(buf.String(), expect);
}
TEST_F(MslGeneratorImplTest, AttemptTintPadSymbolCollision) {
@@ -619,9 +624,10 @@
GeneratorImpl& gen = Build();
+ TextGenerator::TextBuffer buf;
auto* sem_s = program->TypeOf(s)->As<sem::Struct>();
- ASSERT_TRUE(gen.EmitStructType(sem_s)) << gen.error();
- EXPECT_EQ(gen.result(), R"(struct S {
+ ASSERT_TRUE(gen.EmitStructType(&buf, sem_s)) << gen.error();
+ EXPECT_EQ(buf.String(), R"(struct S {
/* 0x0000 */ int tint_pad_2;
/* 0x0004 */ int8_t tint_pad_10[124];
/* 0x0080 */ float tint_pad_20;
diff --git a/src/writer/spirv/builder.cc b/src/writer/spirv/builder.cc
index d228564..0791c0a 100644
--- a/src/writer/spirv/builder.cc
+++ b/src/writer/spirv/builder.cc
@@ -162,7 +162,8 @@
case IntrinsicType::kFract:
return GLSLstd450Fract;
case IntrinsicType::kFrexp:
- return GLSLstd450Frexp;
+ return (intrinsic->Parameters().size() == 1) ? GLSLstd450FrexpStruct
+ : GLSLstd450Frexp;
case IntrinsicType::kInverseSqrt:
return GLSLstd450InverseSqrt;
case IntrinsicType::kLdexp:
@@ -192,7 +193,8 @@
case IntrinsicType::kMix:
return GLSLstd450FMix;
case IntrinsicType::kModf:
- return GLSLstd450Modf;
+ return (intrinsic->Parameters().size() == 1) ? GLSLstd450ModfStruct
+ : GLSLstd450Modf;
case IntrinsicType::kNormalize:
return GLSLstd450Normalize;
case IntrinsicType::kPack4x8snorm:
@@ -3932,25 +3934,25 @@
bool Builder::GenerateStructType(const sem::Struct* struct_type,
const Operand& result) {
auto struct_id = result.to_i();
- auto* impl = struct_type->Declaration();
- if (impl->name().IsValid()) {
- push_debug(spv::Op::OpName,
- {Operand::Int(struct_id),
- Operand::String(builder_.Symbols().NameFor(impl->name()))});
+ if (struct_type->Name().IsValid()) {
+ push_debug(
+ spv::Op::OpName,
+ {Operand::Int(struct_id),
+ Operand::String(builder_.Symbols().NameFor(struct_type->Name()))});
}
OperandList ops;
ops.push_back(result);
- if (impl->IsBlockDecorated()) {
+ auto* decl = struct_type->Declaration();
+ if (decl && decl->IsBlockDecorated()) {
push_annot(spv::Op::OpDecorate,
{Operand::Int(struct_id), Operand::Int(SpvDecorationBlock)});
}
- auto& members = impl->members();
- for (uint32_t i = 0; i < members.size(); ++i) {
- auto mem_id = GenerateStructMember(struct_id, i, members[i]);
+ for (uint32_t i = 0; i < struct_type->Members().size(); ++i) {
+ auto mem_id = GenerateStructMember(struct_id, i, struct_type->Members()[i]);
if (mem_id == 0) {
return false;
}
@@ -3964,10 +3966,10 @@
uint32_t Builder::GenerateStructMember(uint32_t struct_id,
uint32_t idx,
- ast::StructMember* member) {
+ const sem::StructMember* member) {
push_debug(spv::Op::OpMemberName,
{Operand::Int(struct_id), Operand::Int(idx),
- Operand::String(builder_.Symbols().NameFor(member->symbol()))});
+ Operand::String(builder_.Symbols().NameFor(member->Name()))});
// Note: This will generate layout annotations for *all* structs, whether or
// not they are used in host-shareable variables. This is officially ok in
@@ -3975,19 +3977,13 @@
// to only generate the layout info for structs used for certain storage
// classes.
- auto* sem_member = builder_.Sem().Get(member);
- if (!sem_member) {
- error_ = "Struct member has no semantic information";
- return 0;
- }
-
push_annot(
spv::Op::OpMemberDecorate,
{Operand::Int(struct_id), Operand::Int(idx),
- Operand::Int(SpvDecorationOffset), Operand::Int(sem_member->Offset())});
+ Operand::Int(SpvDecorationOffset), Operand::Int(member->Offset())});
// Infer and emit matrix layout.
- auto* matrix_type = GetNestedMatrixType(sem_member->Type());
+ auto* matrix_type = GetNestedMatrixType(member->Type());
if (matrix_type) {
push_annot(spv::Op::OpMemberDecorate,
{Operand::Int(struct_id), Operand::Int(idx),
@@ -4004,7 +4000,7 @@
Operand::Int(effective_row_count * scalar_elem_size)});
}
- return GenerateTypeIfNeeded(sem_member->Type());
+ return GenerateTypeIfNeeded(member->Type());
}
bool Builder::GenerateVectorType(const sem::Vector* vec,
diff --git a/src/writer/spirv/builder.h b/src/writer/spirv/builder.h
index c33db7c..aed54be 100644
--- a/src/writer/spirv/builder.h
+++ b/src/writer/spirv/builder.h
@@ -486,7 +486,7 @@
/// @returns the id of the struct member or 0 on error.
uint32_t GenerateStructMember(uint32_t struct_id,
uint32_t idx,
- ast::StructMember* member);
+ const sem::StructMember* member);
/// Generates a variable declaration statement
/// @param stmt the statement to generate
/// @returns true on successfull generation
diff --git a/src/writer/text_generator.cc b/src/writer/text_generator.cc
index 811f0c5..d6c4f53 100644
--- a/src/writer/text_generator.cc
+++ b/src/writer/text_generator.cc
@@ -17,6 +17,8 @@
#include <algorithm>
#include <limits>
+#include "src/utils/get_or_create.h"
+
namespace tint {
namespace writer {
@@ -29,6 +31,15 @@
return builder_.Symbols().NameFor(builder_.Symbols().New(prefix));
}
+std::string TextGenerator::StructName(const sem::Struct* s) {
+ auto name = builder_.Symbols().NameFor(s->Name());
+ if (name.size() > 0 && name[0] == '_') {
+ name = utils::GetOrCreate(builtin_struct_names_, s,
+ [&] { return UniqueIdentifier(name.substr(1)); });
+ }
+ return name;
+}
+
std::string TextGenerator::TrimSuffix(std::string str,
const std::string& suffix) {
if (str.size() >= suffix.size()) {
diff --git a/src/writer/text_generator.h b/src/writer/text_generator.h
index 876efa6..8b8aeaf 100644
--- a/src/writer/text_generator.h
+++ b/src/writer/text_generator.h
@@ -17,6 +17,7 @@
#include <sstream>
#include <string>
+#include <unordered_map>
#include <utility>
#include <vector>
@@ -29,37 +30,6 @@
/// Helper methods for generators which are creating text output
class TextGenerator {
public:
- /// Constructor
- /// @param program the program used by the generator
- explicit TextGenerator(const Program* program);
- ~TextGenerator();
-
- /// Increment the emitter indent level
- void increment_indent() { current_buffer_->IncrementIndent(); }
- /// Decrement the emitter indent level
- void decrement_indent() { current_buffer_->DecrementIndent(); }
-
- /// @returns the result data
- std::string result() const { return main_buffer_.String(); }
-
- /// @returns the list of diagnostics raised by the generator.
- const diag::List& Diagnostics() const { return diagnostics_; }
-
- /// @returns the error
- std::string error() const { return diagnostics_.str(); }
-
- /// @return a new, unique identifier with the given prefix.
- /// @param prefix optional prefix to apply to the generated identifier. If
- /// empty "tint_symbol" will be used.
- std::string UniqueIdentifier(const std::string& prefix = "");
-
- /// @param str the string
- /// @param suffix the suffix to remove
- /// @return returns str without the provided trailing suffix string. If str
- /// doesn't end with suffix, str is returned unchanged.
- std::string TrimSuffix(std::string str, const std::string& suffix);
-
- protected:
/// Line holds a single line of text
struct Line {
/// The indentation of the line in whitespaces
@@ -117,6 +87,44 @@
std::vector<Line> lines;
};
+ /// Constructor
+ /// @param program the program used by the generator
+ explicit TextGenerator(const Program* program);
+ ~TextGenerator();
+
+ /// Increment the emitter indent level
+ void increment_indent() { current_buffer_->IncrementIndent(); }
+ /// Decrement the emitter indent level
+ void decrement_indent() { current_buffer_->DecrementIndent(); }
+
+ /// @returns the result data
+ std::string result() const { return main_buffer_.String(); }
+
+ /// @returns the list of diagnostics raised by the generator.
+ const diag::List& Diagnostics() const { return diagnostics_; }
+
+ /// @returns the error
+ std::string error() const { return diagnostics_.str(); }
+
+ /// @return a new, unique identifier with the given prefix.
+ /// @param prefix optional prefix to apply to the generated identifier. If
+ /// empty "tint_symbol" will be used.
+ std::string UniqueIdentifier(const std::string& prefix = "");
+
+ /// @param s the semantic structure
+ /// @returns the name of the structure, taking special care of builtin
+ /// structures that start with a leading underscore. If the structure is a
+ /// builtin, then the returned name will be a unique name without the leading
+ /// underscore.
+ std::string StructName(const sem::Struct* s);
+
+ /// @param str the string
+ /// @param suffix the suffix to remove
+ /// @return returns str without the provided trailing suffix string. If str
+ /// doesn't end with suffix, str is returned unchanged.
+ std::string TrimSuffix(std::string str, const std::string& suffix);
+
+ protected:
/// LineWriter is a helper that acts as a string buffer, who's content is
/// emitted to the TextBuffer as a single line on destruction.
struct LineWriter {
@@ -224,6 +232,8 @@
private:
/// The primary text buffer that the generator will emit
TextBuffer main_buffer_;
+ /// Map of builtin structure to unique generated name
+ std::unordered_map<const sem::Struct*, std::string> builtin_struct_names_;
};
} // namespace writer
diff --git a/test/intrinsics/frexp.wgsl b/test/intrinsics/frexp.wgsl
index 54217fe..fed55e5 100644
--- a/test/intrinsics/frexp.wgsl
+++ b/test/intrinsics/frexp.wgsl
@@ -1,5 +1,6 @@
[[stage(compute), workgroup_size(1)]]
fn main() {
- var exponent : i32;
- let significand : f32 = frexp(1.23, &exponent);
+ let res = frexp(1.23);
+ let exp : i32 = res.exp;
+ let sig : f32 = res.sig;
}
diff --git a/test/intrinsics/frexp.wgsl.expected.hlsl b/test/intrinsics/frexp.wgsl.expected.hlsl
index e35149a..4429974 100644
--- a/test/intrinsics/frexp.wgsl.expected.hlsl
+++ b/test/intrinsics/frexp.wgsl.expected.hlsl
@@ -1,13 +1,18 @@
-float tint_frexp(float param_0, inout int param_1) {
- float float_exp;
- float significand = frexp(param_0, float_exp);
- param_1 = int(float_exp);
- return significand;
+struct frexp_result {
+ float sig;
+ int exp;
+};
+frexp_result tint_frexp(float param_0) {
+ float exp;
+ float sig = frexp(param_0, exp);
+ frexp_result result = {sig, int(exp)};
+ return result;
}
[numthreads(1, 1, 1)]
void main() {
- int exponent = 0;
- const float significand = tint_frexp(1.230000019f, exponent);
+ const frexp_result res = tint_frexp(1.230000019f);
+ const int exp = res.exp;
+ const float sig = res.sig;
return;
}
diff --git a/test/intrinsics/frexp.wgsl.expected.msl b/test/intrinsics/frexp.wgsl.expected.msl
index cda2b1b..d850760 100644
--- a/test/intrinsics/frexp.wgsl.expected.msl
+++ b/test/intrinsics/frexp.wgsl.expected.msl
@@ -1,9 +1,21 @@
#include <metal_stdlib>
using namespace metal;
+
+struct frexp_result {
+ float sig;
+ int exp;
+};
+frexp_result tint_frexp(float param_0) {
+ int exp;
+ float sig = frexp(param_0, exp);
+ return {sig, exp};
+}
+
kernel void tint_symbol() {
- int exponent = 0;
- float const significand = frexp(1.230000019f, *(&(exponent)));
+ frexp_result const res = tint_frexp(1.230000019f);
+ int const exp = res.exp;
+ float const sig = res.sig;
return;
}
diff --git a/test/intrinsics/frexp.wgsl.expected.spvasm b/test/intrinsics/frexp.wgsl.expected.spvasm
index 7d6543e..f282195 100644
--- a/test/intrinsics/frexp.wgsl.expected.spvasm
+++ b/test/intrinsics/frexp.wgsl.expected.spvasm
@@ -1,25 +1,29 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
-; Bound: 14
+; Bound: 13
; Schema: 0
OpCapability Shader
- %11 = OpExtInstImport "GLSL.std.450"
+ %9 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main"
OpExecutionMode %main LocalSize 1 1 1
OpName %main "main"
- OpName %exponent "exponent"
+ OpName %_frexp_result "_frexp_result"
+ OpMemberName %_frexp_result 0 "sig"
+ OpMemberName %_frexp_result 1 "exp"
+ OpMemberDecorate %_frexp_result 0 Offset 0
+ OpMemberDecorate %_frexp_result 1 Offset 4
%void = OpTypeVoid
%1 = OpTypeFunction %void
- %int = OpTypeInt 32 1
-%_ptr_Function_int = OpTypePointer Function %int
- %8 = OpConstantNull %int
%float = OpTypeFloat 32
+ %int = OpTypeInt 32 1
+%_frexp_result = OpTypeStruct %float %int
%float_1_23000002 = OpConstant %float 1.23000002
%main = OpFunction %void None %1
%4 = OpLabel
- %exponent = OpVariable %_ptr_Function_int Function %8
- %9 = OpExtInst %float %11 Frexp %float_1_23000002 %exponent
+ %5 = OpExtInst %_frexp_result %9 FrexpStruct %float_1_23000002
+ %11 = OpCompositeExtract %int %5 1
+ %12 = OpCompositeExtract %float %5 0
OpReturn
OpFunctionEnd
diff --git a/test/intrinsics/frexp.wgsl.expected.wgsl b/test/intrinsics/frexp.wgsl.expected.wgsl
index d80f8f5..519ffb6 100644
--- a/test/intrinsics/frexp.wgsl.expected.wgsl
+++ b/test/intrinsics/frexp.wgsl.expected.wgsl
@@ -1,5 +1,6 @@
[[stage(compute), workgroup_size(1)]]
fn main() {
- var exponent : i32;
- let significand : f32 = frexp(1.230000019, &(exponent));
+ let res = frexp(1.230000019);
+ let exp : i32 = res.exp;
+ let sig : f32 = res.sig;
}
diff --git a/test/intrinsics/gen/frexp/013caa.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/013caa.wgsl.expected.hlsl
index 9e077f5..8a964ed 100644
--- a/test/intrinsics/gen/frexp/013caa.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/frexp/013caa.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/013caa.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = frexp(vec4<f32>(), &arg_1);
+ ^^^^^
+
float4 tint_frexp(float4 param_0, inout int4 param_1) {
float4 float_exp;
float4 significand = frexp(param_0, float_exp);
diff --git a/test/intrinsics/gen/frexp/013caa.wgsl.expected.msl b/test/intrinsics/gen/frexp/013caa.wgsl.expected.msl
index 1b4ab95..bd2fdbd 100644
--- a/test/intrinsics/gen/frexp/013caa.wgsl.expected.msl
+++ b/test/intrinsics/gen/frexp/013caa.wgsl.expected.msl
@@ -1,13 +1,25 @@
+intrinsics/gen/frexp/013caa.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = frexp(vec4<f32>(), &arg_1);
+ ^^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float4 tint_frexp(float4 param_0, thread int4* param_1) {
+ int4 exp;
+ float4 sig = frexp(param_0, exp);
+ *param_1 = exp;
+ return sig;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void frexp_013caa() {
int4 arg_1 = 0;
- float4 res = frexp(float4(), *(&(arg_1)));
+ float4 res = tint_frexp(float4(), &(arg_1));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/frexp/013caa.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/013caa.wgsl.expected.spvasm
index 9f2dda9..d1e2268 100644
--- a/test/intrinsics/gen/frexp/013caa.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/013caa.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/013caa.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = frexp(vec4<f32>(), &arg_1);
+ ^^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/frexp/013caa.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/013caa.wgsl.expected.wgsl
index 990ed6e..0fccee6 100644
--- a/test/intrinsics/gen/frexp/013caa.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/013caa.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/013caa.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = frexp(vec4<f32>(), &arg_1);
+ ^^^^^
+
fn frexp_013caa() {
var arg_1 : vec4<i32>;
var res : vec4<f32> = frexp(vec4<f32>(), &(arg_1));
diff --git a/test/intrinsics/gen/frexp/0da285.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/0da285.wgsl.expected.hlsl
index 06c20aa..276869f 100644
--- a/test/intrinsics/gen/frexp/0da285.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/frexp/0da285.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/0da285.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = frexp(1.0, &arg_1);
+ ^^^^^
+
float tint_frexp(float param_0, inout int param_1) {
float float_exp;
float significand = frexp(param_0, float_exp);
diff --git a/test/intrinsics/gen/frexp/0da285.wgsl.expected.msl b/test/intrinsics/gen/frexp/0da285.wgsl.expected.msl
index 7763244..b1cbd7b 100644
--- a/test/intrinsics/gen/frexp/0da285.wgsl.expected.msl
+++ b/test/intrinsics/gen/frexp/0da285.wgsl.expected.msl
@@ -1,10 +1,20 @@
-SKIP: FAILED
+intrinsics/gen/frexp/0da285.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = frexp(1.0, &arg_1);
+ ^^^^^
#include <metal_stdlib>
using namespace metal;
+
+float tint_frexp(float param_0, threadgroup int* param_1) {
+ int exp;
+ float sig = frexp(param_0, exp);
+ *param_1 = exp;
+ return sig;
+}
+
void frexp_0da285(threadgroup int* const tint_symbol_1) {
- float res = frexp(1.0f, *(&(*(tint_symbol_1))));
+ float res = tint_frexp(1.0f, &(*(tint_symbol_1)));
}
kernel void compute_main(uint local_invocation_index [[thread_index_in_threadgroup]]) {
@@ -17,44 +27,3 @@
return;
}
-Compilation failed:
-
-program_source:5:15: error: no matching function for call to 'frexp'
- float res = frexp(1.0f, *(&(*(tint_symbol_1))));
- ^~~~~
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:4560:18: note: candidate function not viable: address space mismatch in 2nd argument ('threadgroup int'), parameter type must be 'int &'
-METAL_FUNC float frexp(float x, thread int &exp)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3092:17: note: candidate function not viable: address space mismatch in 2nd argument ('threadgroup int'), parameter type must be 'int &'
-METAL_FUNC half frexp(half x, thread int &exp)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3336:18: note: candidate function not viable: no known conversion from 'threadgroup int' to 'metal::int2 &' (aka 'int2 &') for 2nd argument
-METAL_FUNC half2 frexp(half2 x, thread int2 &exp)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3580:18: note: candidate function not viable: no known conversion from 'threadgroup int' to 'metal::int3 &' (aka 'int3 &') for 2nd argument
-METAL_FUNC half3 frexp(half3 x, thread int3 &exp)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3824:18: note: candidate function not viable: no known conversion from 'threadgroup int' to 'metal::int4 &' (aka 'int4 &') for 2nd argument
-METAL_FUNC half4 frexp(half4 x, thread int4 &exp)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:4804:19: note: candidate function not viable: no known conversion from 'threadgroup int' to 'metal::int2 &' (aka 'int2 &') for 2nd argument
-METAL_FUNC float2 frexp(float2 x, thread int2 &exp)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:5048:19: note: candidate function not viable: no known conversion from 'threadgroup int' to 'metal::int3 &' (aka 'int3 &') for 2nd argument
-METAL_FUNC float3 frexp(float3 x, thread int3 &exp)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:5292:19: note: candidate function not viable: no known conversion from 'threadgroup int' to 'metal::int4 &' (aka 'int4 &') for 2nd argument
-METAL_FUNC float4 frexp(float4 x, thread int4 &exp)
- ^
-program_source:10:31: warning: equality comparison with extraneous parentheses
- if ((local_invocation_index == 0u)) {
- ~~~~~~~~~~~~~~~~~~~~~~~^~~~~
-program_source:10:31: note: remove extraneous parentheses around the comparison to silence this warning
- if ((local_invocation_index == 0u)) {
- ~ ^ ~
-program_source:10:31: note: use '=' to turn this equality comparison into an assignment
- if ((local_invocation_index == 0u)) {
- ^~
- =
-
-
diff --git a/test/intrinsics/gen/frexp/0da285.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/0da285.wgsl.expected.spvasm
index 3ea3539..e6de8e1 100644
--- a/test/intrinsics/gen/frexp/0da285.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/0da285.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/0da285.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = frexp(1.0, &arg_1);
+ ^^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/frexp/0da285.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/0da285.wgsl.expected.wgsl
index a3bf648..d66ac56 100644
--- a/test/intrinsics/gen/frexp/0da285.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/0da285.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/0da285.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = frexp(1.0, &arg_1);
+ ^^^^^
+
var<workgroup> arg_1 : i32;
fn frexp_0da285() {
diff --git a/test/intrinsics/gen/frexp/12f1da.wgsl b/test/intrinsics/gen/frexp/12f1da.wgsl
new file mode 100644
index 0000000..4db8bd9
--- /dev/null
+++ b/test/intrinsics/gen/frexp/12f1da.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2021 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/intrinsic-gen
+// using the template:
+// test/intrinsics/intrinsics.wgsl.tmpl
+// and the intrinsic defintion file:
+// src/intrinsics.def
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// fn frexp(f32) -> _frexp_result
+fn frexp_12f1da() {
+ var res = frexp(1.0);
+}
+
+[[stage(vertex)]]
+fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+ frexp_12f1da();
+ return vec4<f32>();
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+ frexp_12f1da();
+}
+
+[[stage(compute), workgroup_size(1)]]
+fn compute_main() {
+ frexp_12f1da();
+}
diff --git a/test/intrinsics/gen/frexp/12f1da.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/12f1da.wgsl.expected.hlsl
new file mode 100644
index 0000000..caf7961
--- /dev/null
+++ b/test/intrinsics/gen/frexp/12f1da.wgsl.expected.hlsl
@@ -0,0 +1,35 @@
+struct frexp_result {
+ float sig;
+ int exp;
+};
+frexp_result tint_frexp(float param_0) {
+ float exp;
+ float sig = frexp(param_0, exp);
+ frexp_result result = {sig, int(exp)};
+ return result;
+}
+
+void frexp_12f1da() {
+ frexp_result res = tint_frexp(1.0f);
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+tint_symbol vertex_main() {
+ frexp_12f1da();
+ const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
+ return tint_symbol_1;
+}
+
+void fragment_main() {
+ frexp_12f1da();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ frexp_12f1da();
+ return;
+}
diff --git a/test/intrinsics/gen/frexp/12f1da.wgsl.expected.msl b/test/intrinsics/gen/frexp/12f1da.wgsl.expected.msl
new file mode 100644
index 0000000..cf7b0cb
--- /dev/null
+++ b/test/intrinsics/gen/frexp/12f1da.wgsl.expected.msl
@@ -0,0 +1,38 @@
+#include <metal_stdlib>
+
+using namespace metal;
+
+struct frexp_result {
+ float sig;
+ int exp;
+};
+frexp_result tint_frexp(float param_0) {
+ int exp;
+ float sig = frexp(param_0, exp);
+ return {sig, exp};
+}
+
+struct tint_symbol {
+ float4 value [[position]];
+};
+
+void frexp_12f1da() {
+ frexp_result res = tint_frexp(1.0f);
+}
+
+vertex tint_symbol vertex_main() {
+ frexp_12f1da();
+ tint_symbol const tint_symbol_1 = {.value=float4()};
+ return tint_symbol_1;
+}
+
+fragment void fragment_main() {
+ frexp_12f1da();
+ return;
+}
+
+kernel void compute_main() {
+ frexp_12f1da();
+ return;
+}
+
diff --git a/test/intrinsics/gen/frexp/12f1da.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/12f1da.wgsl.expected.spvasm
new file mode 100644
index 0000000..1887cc1
--- /dev/null
+++ b/test/intrinsics/gen/frexp/12f1da.wgsl.expected.spvasm
@@ -0,0 +1,75 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 35
+; Schema: 0
+ OpCapability Shader
+ %16 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical GLSL450
+ OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize %tint_symbol_1
+ OpEntryPoint Fragment %fragment_main "fragment_main"
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %fragment_main OriginUpperLeft
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %tint_pointsize "tint_pointsize"
+ OpName %tint_symbol_1 "tint_symbol_1"
+ OpName %frexp_12f1da "frexp_12f1da"
+ OpName %_frexp_result "_frexp_result"
+ OpMemberName %_frexp_result 0 "sig"
+ OpMemberName %_frexp_result 1 "exp"
+ OpName %res "res"
+ OpName %tint_symbol_2 "tint_symbol_2"
+ OpName %tint_symbol "tint_symbol"
+ OpName %vertex_main "vertex_main"
+ OpName %fragment_main "fragment_main"
+ OpName %compute_main "compute_main"
+ OpDecorate %tint_pointsize BuiltIn PointSize
+ OpDecorate %tint_symbol_1 BuiltIn Position
+ OpMemberDecorate %_frexp_result 0 Offset 0
+ OpMemberDecorate %_frexp_result 1 Offset 4
+ %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+ %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+ %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %8 = OpConstantNull %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+ %void = OpTypeVoid
+ %9 = OpTypeFunction %void
+ %int = OpTypeInt 32 1
+%_frexp_result = OpTypeStruct %float %int
+ %float_1 = OpConstant %float 1
+%_ptr_Function__frexp_result = OpTypePointer Function %_frexp_result
+ %20 = OpConstantNull %_frexp_result
+ %21 = OpTypeFunction %void %v4float
+%frexp_12f1da = OpFunction %void None %9
+ %12 = OpLabel
+ %res = OpVariable %_ptr_Function__frexp_result Function %20
+ %13 = OpExtInst %_frexp_result %16 FrexpStruct %float_1
+ OpStore %res %13
+ OpReturn
+ OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %21
+%tint_symbol = OpFunctionParameter %v4float
+ %24 = OpLabel
+ OpStore %tint_symbol_1 %tint_symbol
+ OpReturn
+ OpFunctionEnd
+%vertex_main = OpFunction %void None %9
+ %26 = OpLabel
+ OpStore %tint_pointsize %float_1
+ %27 = OpFunctionCall %void %frexp_12f1da
+ %28 = OpFunctionCall %void %tint_symbol_2 %8
+ OpReturn
+ OpFunctionEnd
+%fragment_main = OpFunction %void None %9
+ %30 = OpLabel
+ %31 = OpFunctionCall %void %frexp_12f1da
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %9
+ %33 = OpLabel
+ %34 = OpFunctionCall %void %frexp_12f1da
+ OpReturn
+ OpFunctionEnd
diff --git a/test/intrinsics/gen/frexp/12f1da.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/12f1da.wgsl.expected.wgsl
new file mode 100644
index 0000000..76b85c3
--- /dev/null
+++ b/test/intrinsics/gen/frexp/12f1da.wgsl.expected.wgsl
@@ -0,0 +1,19 @@
+fn frexp_12f1da() {
+ var res = frexp(1.0);
+}
+
+[[stage(vertex)]]
+fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+ frexp_12f1da();
+ return vec4<f32>();
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+ frexp_12f1da();
+}
+
+[[stage(compute), workgroup_size(1)]]
+fn compute_main() {
+ frexp_12f1da();
+}
diff --git a/test/intrinsics/gen/frexp/15edf3.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/15edf3.wgsl.expected.hlsl
index cd65967..446b4b9 100644
--- a/test/intrinsics/gen/frexp/15edf3.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/frexp/15edf3.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/15edf3.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = frexp(vec2<f32>(), &arg_1);
+ ^^^^^
+
float2 tint_frexp(float2 param_0, inout int2 param_1) {
float2 float_exp;
float2 significand = frexp(param_0, float_exp);
diff --git a/test/intrinsics/gen/frexp/15edf3.wgsl.expected.msl b/test/intrinsics/gen/frexp/15edf3.wgsl.expected.msl
index 35452ee..0a3ab3e 100644
--- a/test/intrinsics/gen/frexp/15edf3.wgsl.expected.msl
+++ b/test/intrinsics/gen/frexp/15edf3.wgsl.expected.msl
@@ -1,13 +1,25 @@
+intrinsics/gen/frexp/15edf3.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = frexp(vec2<f32>(), &arg_1);
+ ^^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float2 tint_frexp(float2 param_0, thread int2* param_1) {
+ int2 exp;
+ float2 sig = frexp(param_0, exp);
+ *param_1 = exp;
+ return sig;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void frexp_15edf3() {
int2 arg_1 = 0;
- float2 res = frexp(float2(), *(&(arg_1)));
+ float2 res = tint_frexp(float2(), &(arg_1));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/frexp/15edf3.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/15edf3.wgsl.expected.spvasm
index e624b76..702a52c 100644
--- a/test/intrinsics/gen/frexp/15edf3.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/15edf3.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/15edf3.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = frexp(vec2<f32>(), &arg_1);
+ ^^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/frexp/15edf3.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/15edf3.wgsl.expected.wgsl
index 7424945..66dc841 100644
--- a/test/intrinsics/gen/frexp/15edf3.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/15edf3.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/15edf3.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = frexp(vec2<f32>(), &arg_1);
+ ^^^^^
+
fn frexp_15edf3() {
var arg_1 : vec2<i32>;
var res : vec2<f32> = frexp(vec2<f32>(), &(arg_1));
diff --git a/test/intrinsics/gen/frexp/19ab15.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/19ab15.wgsl.expected.hlsl
index e35f419..40eef60 100644
--- a/test/intrinsics/gen/frexp/19ab15.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/frexp/19ab15.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/19ab15.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = frexp(vec4<f32>(), &arg_1);
+ ^^^^^
+
float4 tint_frexp(float4 param_0, inout int4 param_1) {
float4 float_exp;
float4 significand = frexp(param_0, float_exp);
diff --git a/test/intrinsics/gen/frexp/19ab15.wgsl.expected.msl b/test/intrinsics/gen/frexp/19ab15.wgsl.expected.msl
index 2759c91..b2c38fe 100644
--- a/test/intrinsics/gen/frexp/19ab15.wgsl.expected.msl
+++ b/test/intrinsics/gen/frexp/19ab15.wgsl.expected.msl
@@ -1,13 +1,25 @@
+intrinsics/gen/frexp/19ab15.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = frexp(vec4<f32>(), &arg_1);
+ ^^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float4 tint_frexp(float4 param_0, thread int4* param_1) {
+ int4 exp;
+ float4 sig = frexp(param_0, exp);
+ *param_1 = exp;
+ return sig;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void frexp_19ab15() {
int4 arg_1 = 0;
- float4 res = frexp(float4(), *(&(arg_1)));
+ float4 res = tint_frexp(float4(), &(arg_1));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/frexp/19ab15.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/19ab15.wgsl.expected.spvasm
index e11b4a2..ed54aad 100644
--- a/test/intrinsics/gen/frexp/19ab15.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/19ab15.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/19ab15.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = frexp(vec4<f32>(), &arg_1);
+ ^^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/frexp/19ab15.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/19ab15.wgsl.expected.wgsl
index 4bc6335..16cfe37 100644
--- a/test/intrinsics/gen/frexp/19ab15.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/19ab15.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/19ab15.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = frexp(vec4<f32>(), &arg_1);
+ ^^^^^
+
fn frexp_19ab15() {
var arg_1 : vec4<i32>;
var res : vec4<f32> = frexp(vec4<f32>(), &(arg_1));
diff --git a/test/intrinsics/gen/frexp/2052e9.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/2052e9.wgsl.expected.hlsl
index bddd0e2..32b7550 100644
--- a/test/intrinsics/gen/frexp/2052e9.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/frexp/2052e9.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/2052e9.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = frexp(vec4<f32>(), &arg_1);
+ ^^^^^
+
float4 tint_frexp(float4 param_0, inout int4 param_1) {
float4 float_exp;
float4 significand = frexp(param_0, float_exp);
diff --git a/test/intrinsics/gen/frexp/2052e9.wgsl.expected.msl b/test/intrinsics/gen/frexp/2052e9.wgsl.expected.msl
index 5568b87..c3c1293 100644
--- a/test/intrinsics/gen/frexp/2052e9.wgsl.expected.msl
+++ b/test/intrinsics/gen/frexp/2052e9.wgsl.expected.msl
@@ -1,13 +1,25 @@
+intrinsics/gen/frexp/2052e9.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = frexp(vec4<f32>(), &arg_1);
+ ^^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float4 tint_frexp(float4 param_0, thread int4* param_1) {
+ int4 exp;
+ float4 sig = frexp(param_0, exp);
+ *param_1 = exp;
+ return sig;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void frexp_2052e9() {
int4 arg_1 = 0;
- float4 res = frexp(float4(), *(&(arg_1)));
+ float4 res = tint_frexp(float4(), &(arg_1));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/frexp/2052e9.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/2052e9.wgsl.expected.spvasm
index 9a2809d..6646081 100644
--- a/test/intrinsics/gen/frexp/2052e9.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/2052e9.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/2052e9.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = frexp(vec4<f32>(), &arg_1);
+ ^^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/frexp/2052e9.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/2052e9.wgsl.expected.wgsl
index 07203f9..48eb9c0 100644
--- a/test/intrinsics/gen/frexp/2052e9.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/2052e9.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/2052e9.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = frexp(vec4<f32>(), &arg_1);
+ ^^^^^
+
fn frexp_2052e9() {
var arg_1 : vec4<i32>;
var res : vec4<f32> = frexp(vec4<f32>(), &(arg_1));
diff --git a/test/intrinsics/gen/frexp/40fc9b.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/40fc9b.wgsl.expected.hlsl
index c7452b4..90c074a 100644
--- a/test/intrinsics/gen/frexp/40fc9b.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/frexp/40fc9b.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/40fc9b.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = frexp(vec3<f32>(), &arg_1);
+ ^^^^^
+
float3 tint_frexp(float3 param_0, inout int3 param_1) {
float3 float_exp;
float3 significand = frexp(param_0, float_exp);
diff --git a/test/intrinsics/gen/frexp/40fc9b.wgsl.expected.msl b/test/intrinsics/gen/frexp/40fc9b.wgsl.expected.msl
index cd1d5ea..fbab4cb 100644
--- a/test/intrinsics/gen/frexp/40fc9b.wgsl.expected.msl
+++ b/test/intrinsics/gen/frexp/40fc9b.wgsl.expected.msl
@@ -1,10 +1,20 @@
-SKIP: FAILED
+intrinsics/gen/frexp/40fc9b.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = frexp(vec3<f32>(), &arg_1);
+ ^^^^^
#include <metal_stdlib>
using namespace metal;
+
+float3 tint_frexp(float3 param_0, threadgroup int3* param_1) {
+ int3 exp;
+ float3 sig = frexp(param_0, exp);
+ *param_1 = exp;
+ return sig;
+}
+
void frexp_40fc9b(threadgroup int3* const tint_symbol_1) {
- float3 res = frexp(float3(), *(&(*(tint_symbol_1))));
+ float3 res = tint_frexp(float3(), &(*(tint_symbol_1)));
}
kernel void compute_main(uint local_invocation_index [[thread_index_in_threadgroup]]) {
@@ -17,44 +27,3 @@
return;
}
-Compilation failed:
-
-program_source:5:16: error: no matching function for call to 'frexp'
- float3 res = frexp(float3(), *(&(*(tint_symbol_1))));
- ^~~~~
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:5048:19: note: candidate function not viable: address space mismatch in 2nd argument ('threadgroup int3' (vector of 3 'int' values)), parameter type must be 'metal::int3 &' (aka 'int3 &')
-METAL_FUNC float3 frexp(float3 x, thread int3 &exp)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3092:17: note: candidate function not viable: no known conversion from 'float3' (vector of 3 'float' values) to 'half' for 1st argument
-METAL_FUNC half frexp(half x, thread int &exp)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3336:18: note: candidate function not viable: no known conversion from 'float3' (vector of 3 'float' values) to 'metal::half2' (aka 'half2') for 1st argument
-METAL_FUNC half2 frexp(half2 x, thread int2 &exp)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3580:18: note: candidate function not viable: no known conversion from 'float3' (vector of 3 'float' values) to 'metal::half3' (aka 'half3') for 1st argument
-METAL_FUNC half3 frexp(half3 x, thread int3 &exp)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3824:18: note: candidate function not viable: no known conversion from 'float3' (vector of 3 'float' values) to 'metal::half4' (aka 'half4') for 1st argument
-METAL_FUNC half4 frexp(half4 x, thread int4 &exp)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:4560:18: note: candidate function not viable: no known conversion from 'float3' (vector of 3 'float' values) to 'float' for 1st argument
-METAL_FUNC float frexp(float x, thread int &exp)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:4804:19: note: candidate function not viable: no known conversion from 'float3' (vector of 3 'float' values) to 'metal::float2' (aka 'float2') for 1st argument
-METAL_FUNC float2 frexp(float2 x, thread int2 &exp)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:5292:19: note: candidate function not viable: no known conversion from 'float3' (vector of 3 'float' values) to 'metal::float4' (aka 'float4') for 1st argument
-METAL_FUNC float4 frexp(float4 x, thread int4 &exp)
- ^
-program_source:10:31: warning: equality comparison with extraneous parentheses
- if ((local_invocation_index == 0u)) {
- ~~~~~~~~~~~~~~~~~~~~~~~^~~~~
-program_source:10:31: note: remove extraneous parentheses around the comparison to silence this warning
- if ((local_invocation_index == 0u)) {
- ~ ^ ~
-program_source:10:31: note: use '=' to turn this equality comparison into an assignment
- if ((local_invocation_index == 0u)) {
- ^~
- =
-
-
diff --git a/test/intrinsics/gen/frexp/40fc9b.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/40fc9b.wgsl.expected.spvasm
index 2facf1b..379017c 100644
--- a/test/intrinsics/gen/frexp/40fc9b.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/40fc9b.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/40fc9b.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = frexp(vec3<f32>(), &arg_1);
+ ^^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/frexp/40fc9b.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/40fc9b.wgsl.expected.wgsl
index 7452296..05b42fd 100644
--- a/test/intrinsics/gen/frexp/40fc9b.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/40fc9b.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/40fc9b.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = frexp(vec3<f32>(), &arg_1);
+ ^^^^^
+
var<workgroup> arg_1 : vec3<i32>;
fn frexp_40fc9b() {
diff --git a/test/intrinsics/gen/frexp/41e931.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/41e931.wgsl.expected.hlsl
index 080b770..da408a3 100644
--- a/test/intrinsics/gen/frexp/41e931.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/frexp/41e931.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/41e931.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = frexp(1.0, &arg_1);
+ ^^^^^
+
float tint_frexp(float param_0, inout int param_1) {
float float_exp;
float significand = frexp(param_0, float_exp);
diff --git a/test/intrinsics/gen/frexp/41e931.wgsl.expected.msl b/test/intrinsics/gen/frexp/41e931.wgsl.expected.msl
index a562b55..9e60f17 100644
--- a/test/intrinsics/gen/frexp/41e931.wgsl.expected.msl
+++ b/test/intrinsics/gen/frexp/41e931.wgsl.expected.msl
@@ -1,13 +1,25 @@
+intrinsics/gen/frexp/41e931.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = frexp(1.0, &arg_1);
+ ^^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float tint_frexp(float param_0, thread int* param_1) {
+ int exp;
+ float sig = frexp(param_0, exp);
+ *param_1 = exp;
+ return sig;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void frexp_41e931() {
int arg_1 = 0;
- float res = frexp(1.0f, *(&(arg_1)));
+ float res = tint_frexp(1.0f, &(arg_1));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/frexp/41e931.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/41e931.wgsl.expected.spvasm
index fb8b59b..b9cce46 100644
--- a/test/intrinsics/gen/frexp/41e931.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/41e931.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/41e931.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = frexp(1.0, &arg_1);
+ ^^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/frexp/41e931.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/41e931.wgsl.expected.wgsl
index 0c6e160..afe0e12 100644
--- a/test/intrinsics/gen/frexp/41e931.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/41e931.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/41e931.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = frexp(1.0, &arg_1);
+ ^^^^^
+
fn frexp_41e931() {
var arg_1 : i32;
var res : f32 = frexp(1.0, &(arg_1));
diff --git a/test/intrinsics/gen/frexp/481e59.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/481e59.wgsl.expected.hlsl
index 668bc6e..ef6c94e 100644
--- a/test/intrinsics/gen/frexp/481e59.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/frexp/481e59.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/481e59.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = frexp(1.0, &arg_1);
+ ^^^^^
+
float tint_frexp(float param_0, inout int param_1) {
float float_exp;
float significand = frexp(param_0, float_exp);
diff --git a/test/intrinsics/gen/frexp/481e59.wgsl.expected.msl b/test/intrinsics/gen/frexp/481e59.wgsl.expected.msl
index 23f14ce..cb21d9b 100644
--- a/test/intrinsics/gen/frexp/481e59.wgsl.expected.msl
+++ b/test/intrinsics/gen/frexp/481e59.wgsl.expected.msl
@@ -1,13 +1,25 @@
+intrinsics/gen/frexp/481e59.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = frexp(1.0, &arg_1);
+ ^^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float tint_frexp(float param_0, thread int* param_1) {
+ int exp;
+ float sig = frexp(param_0, exp);
+ *param_1 = exp;
+ return sig;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void frexp_481e59() {
int arg_1 = 0;
- float res = frexp(1.0f, *(&(arg_1)));
+ float res = tint_frexp(1.0f, &(arg_1));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/frexp/481e59.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/481e59.wgsl.expected.spvasm
index 9b2cd5a..703c948 100644
--- a/test/intrinsics/gen/frexp/481e59.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/481e59.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/481e59.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = frexp(1.0, &arg_1);
+ ^^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/frexp/481e59.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/481e59.wgsl.expected.wgsl
index ec1d927..e305a6d 100644
--- a/test/intrinsics/gen/frexp/481e59.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/481e59.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/481e59.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = frexp(1.0, &arg_1);
+ ^^^^^
+
fn frexp_481e59() {
var arg_1 : i32;
var res : f32 = frexp(1.0, &(arg_1));
diff --git a/test/intrinsics/gen/frexp/5a141e.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/5a141e.wgsl.expected.hlsl
index 53500da..84a57f9 100644
--- a/test/intrinsics/gen/frexp/5a141e.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/frexp/5a141e.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/5a141e.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = frexp(vec3<f32>(), &arg_1);
+ ^^^^^
+
float3 tint_frexp(float3 param_0, inout int3 param_1) {
float3 float_exp;
float3 significand = frexp(param_0, float_exp);
diff --git a/test/intrinsics/gen/frexp/5a141e.wgsl.expected.msl b/test/intrinsics/gen/frexp/5a141e.wgsl.expected.msl
index 0f1bc32..fc06cdb 100644
--- a/test/intrinsics/gen/frexp/5a141e.wgsl.expected.msl
+++ b/test/intrinsics/gen/frexp/5a141e.wgsl.expected.msl
@@ -1,13 +1,25 @@
+intrinsics/gen/frexp/5a141e.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = frexp(vec3<f32>(), &arg_1);
+ ^^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float3 tint_frexp(float3 param_0, thread int3* param_1) {
+ int3 exp;
+ float3 sig = frexp(param_0, exp);
+ *param_1 = exp;
+ return sig;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void frexp_5a141e() {
int3 arg_1 = 0;
- float3 res = frexp(float3(), *(&(arg_1)));
+ float3 res = tint_frexp(float3(), &(arg_1));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/frexp/5a141e.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/5a141e.wgsl.expected.spvasm
index 25145e1..46ccae0 100644
--- a/test/intrinsics/gen/frexp/5a141e.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/5a141e.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/5a141e.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = frexp(vec3<f32>(), &arg_1);
+ ^^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/frexp/5a141e.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/5a141e.wgsl.expected.wgsl
index 6ee87a8..697ee96 100644
--- a/test/intrinsics/gen/frexp/5a141e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/5a141e.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/5a141e.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = frexp(vec3<f32>(), &arg_1);
+ ^^^^^
+
fn frexp_5a141e() {
var arg_1 : vec3<i32>;
var res : vec3<f32> = frexp(vec3<f32>(), &(arg_1));
diff --git a/test/intrinsics/gen/frexp/6d0058.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/6d0058.wgsl.expected.hlsl
index 10803d1..eddcbc5 100644
--- a/test/intrinsics/gen/frexp/6d0058.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/frexp/6d0058.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/6d0058.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = frexp(vec3<f32>(), &arg_1);
+ ^^^^^
+
float3 tint_frexp(float3 param_0, inout int3 param_1) {
float3 float_exp;
float3 significand = frexp(param_0, float_exp);
diff --git a/test/intrinsics/gen/frexp/6d0058.wgsl.expected.msl b/test/intrinsics/gen/frexp/6d0058.wgsl.expected.msl
index 4bb1c13..0c30348 100644
--- a/test/intrinsics/gen/frexp/6d0058.wgsl.expected.msl
+++ b/test/intrinsics/gen/frexp/6d0058.wgsl.expected.msl
@@ -1,13 +1,25 @@
+intrinsics/gen/frexp/6d0058.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = frexp(vec3<f32>(), &arg_1);
+ ^^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float3 tint_frexp(float3 param_0, thread int3* param_1) {
+ int3 exp;
+ float3 sig = frexp(param_0, exp);
+ *param_1 = exp;
+ return sig;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void frexp_6d0058() {
int3 arg_1 = 0;
- float3 res = frexp(float3(), *(&(arg_1)));
+ float3 res = tint_frexp(float3(), &(arg_1));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/frexp/6d0058.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/6d0058.wgsl.expected.spvasm
index 51638f6..cbeae7b 100644
--- a/test/intrinsics/gen/frexp/6d0058.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/6d0058.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/6d0058.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = frexp(vec3<f32>(), &arg_1);
+ ^^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/frexp/6d0058.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/6d0058.wgsl.expected.wgsl
index 172066b..336437e 100644
--- a/test/intrinsics/gen/frexp/6d0058.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/6d0058.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/6d0058.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = frexp(vec3<f32>(), &arg_1);
+ ^^^^^
+
fn frexp_6d0058() {
var arg_1 : vec3<i32>;
var res : vec3<f32> = frexp(vec3<f32>(), &(arg_1));
diff --git a/test/intrinsics/gen/frexp/6efa09.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/6efa09.wgsl.expected.hlsl
index 7960528..d967d1c 100644
--- a/test/intrinsics/gen/frexp/6efa09.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/frexp/6efa09.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/6efa09.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = frexp(vec3<f32>(), &arg_1);
+ ^^^^^
+
float3 tint_frexp(float3 param_0, inout int3 param_1) {
float3 float_exp;
float3 significand = frexp(param_0, float_exp);
diff --git a/test/intrinsics/gen/frexp/6efa09.wgsl.expected.msl b/test/intrinsics/gen/frexp/6efa09.wgsl.expected.msl
index 58fc2c7..3911450 100644
--- a/test/intrinsics/gen/frexp/6efa09.wgsl.expected.msl
+++ b/test/intrinsics/gen/frexp/6efa09.wgsl.expected.msl
@@ -1,12 +1,24 @@
+intrinsics/gen/frexp/6efa09.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = frexp(vec3<f32>(), &arg_1);
+ ^^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float3 tint_frexp(float3 param_0, thread int3* param_1) {
+ int3 exp;
+ float3 sig = frexp(param_0, exp);
+ *param_1 = exp;
+ return sig;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void frexp_6efa09(thread int3* const tint_symbol_2) {
- float3 res = frexp(float3(), *(&(*(tint_symbol_2))));
+ float3 res = tint_frexp(float3(), &(*(tint_symbol_2)));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/frexp/6efa09.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/6efa09.wgsl.expected.spvasm
index 0991859..869f633 100644
--- a/test/intrinsics/gen/frexp/6efa09.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/6efa09.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/6efa09.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = frexp(vec3<f32>(), &arg_1);
+ ^^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/frexp/6efa09.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/6efa09.wgsl.expected.wgsl
index 8d5c133..6605ee7 100644
--- a/test/intrinsics/gen/frexp/6efa09.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/6efa09.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/6efa09.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = frexp(vec3<f32>(), &arg_1);
+ ^^^^^
+
var<private> arg_1 : vec3<i32>;
fn frexp_6efa09() {
diff --git a/test/intrinsics/gen/frexp/a0eb3b.wgsl b/test/intrinsics/gen/frexp/a0eb3b.wgsl
new file mode 100644
index 0000000..beca50c
--- /dev/null
+++ b/test/intrinsics/gen/frexp/a0eb3b.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2021 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/intrinsic-gen
+// using the template:
+// test/intrinsics/intrinsics.wgsl.tmpl
+// and the intrinsic defintion file:
+// src/intrinsics.def
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// fn frexp(vec<3, f32>) -> _frexp_result_vec<3>
+fn frexp_a0eb3b() {
+ var res = frexp(vec3<f32>());
+}
+
+[[stage(vertex)]]
+fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+ frexp_a0eb3b();
+ return vec4<f32>();
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+ frexp_a0eb3b();
+}
+
+[[stage(compute), workgroup_size(1)]]
+fn compute_main() {
+ frexp_a0eb3b();
+}
diff --git a/test/intrinsics/gen/frexp/a0eb3b.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/a0eb3b.wgsl.expected.hlsl
new file mode 100644
index 0000000..2ca0a68
--- /dev/null
+++ b/test/intrinsics/gen/frexp/a0eb3b.wgsl.expected.hlsl
@@ -0,0 +1,35 @@
+struct frexp_result_vec3 {
+ float3 sig;
+ int3 exp;
+};
+frexp_result_vec3 tint_frexp(float3 param_0) {
+ float3 exp;
+ float3 sig = frexp(param_0, exp);
+ frexp_result_vec3 result = {sig, int3(exp)};
+ return result;
+}
+
+void frexp_a0eb3b() {
+ frexp_result_vec3 res = tint_frexp(float3(0.0f, 0.0f, 0.0f));
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+tint_symbol vertex_main() {
+ frexp_a0eb3b();
+ const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
+ return tint_symbol_1;
+}
+
+void fragment_main() {
+ frexp_a0eb3b();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ frexp_a0eb3b();
+ return;
+}
diff --git a/test/intrinsics/gen/frexp/a0eb3b.wgsl.expected.msl b/test/intrinsics/gen/frexp/a0eb3b.wgsl.expected.msl
new file mode 100644
index 0000000..6ca1b90
--- /dev/null
+++ b/test/intrinsics/gen/frexp/a0eb3b.wgsl.expected.msl
@@ -0,0 +1,38 @@
+#include <metal_stdlib>
+
+using namespace metal;
+
+struct frexp_result_vec3 {
+ float3 sig;
+ int3 exp;
+};
+frexp_result_vec3 tint_frexp(float3 param_0) {
+ int3 exp;
+ float3 sig = frexp(param_0, exp);
+ return {sig, exp};
+}
+
+struct tint_symbol {
+ float4 value [[position]];
+};
+
+void frexp_a0eb3b() {
+ frexp_result_vec3 res = tint_frexp(float3());
+}
+
+vertex tint_symbol vertex_main() {
+ frexp_a0eb3b();
+ tint_symbol const tint_symbol_1 = {.value=float4()};
+ return tint_symbol_1;
+}
+
+fragment void fragment_main() {
+ frexp_a0eb3b();
+ return;
+}
+
+kernel void compute_main() {
+ frexp_a0eb3b();
+ return;
+}
+
diff --git a/test/intrinsics/gen/frexp/a0eb3b.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/a0eb3b.wgsl.expected.spvasm
new file mode 100644
index 0000000..3049fc1
--- /dev/null
+++ b/test/intrinsics/gen/frexp/a0eb3b.wgsl.expected.spvasm
@@ -0,0 +1,78 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 38
+; Schema: 0
+ OpCapability Shader
+ %18 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical GLSL450
+ OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize %tint_symbol_1
+ OpEntryPoint Fragment %fragment_main "fragment_main"
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %fragment_main OriginUpperLeft
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %tint_pointsize "tint_pointsize"
+ OpName %tint_symbol_1 "tint_symbol_1"
+ OpName %frexp_a0eb3b "frexp_a0eb3b"
+ OpName %_frexp_result_vec3 "_frexp_result_vec3"
+ OpMemberName %_frexp_result_vec3 0 "sig"
+ OpMemberName %_frexp_result_vec3 1 "exp"
+ OpName %res "res"
+ OpName %tint_symbol_2 "tint_symbol_2"
+ OpName %tint_symbol "tint_symbol"
+ OpName %vertex_main "vertex_main"
+ OpName %fragment_main "fragment_main"
+ OpName %compute_main "compute_main"
+ OpDecorate %tint_pointsize BuiltIn PointSize
+ OpDecorate %tint_symbol_1 BuiltIn Position
+ OpMemberDecorate %_frexp_result_vec3 0 Offset 0
+ OpMemberDecorate %_frexp_result_vec3 1 Offset 16
+ %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+ %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+ %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %8 = OpConstantNull %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+ %void = OpTypeVoid
+ %9 = OpTypeFunction %void
+ %v3float = OpTypeVector %float 3
+ %int = OpTypeInt 32 1
+ %v3int = OpTypeVector %int 3
+%_frexp_result_vec3 = OpTypeStruct %v3float %v3int
+ %19 = OpConstantNull %v3float
+%_ptr_Function__frexp_result_vec3 = OpTypePointer Function %_frexp_result_vec3
+ %22 = OpConstantNull %_frexp_result_vec3
+ %23 = OpTypeFunction %void %v4float
+ %float_1 = OpConstant %float 1
+%frexp_a0eb3b = OpFunction %void None %9
+ %12 = OpLabel
+ %res = OpVariable %_ptr_Function__frexp_result_vec3 Function %22
+ %13 = OpExtInst %_frexp_result_vec3 %18 FrexpStruct %19
+ OpStore %res %13
+ OpReturn
+ OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %23
+%tint_symbol = OpFunctionParameter %v4float
+ %26 = OpLabel
+ OpStore %tint_symbol_1 %tint_symbol
+ OpReturn
+ OpFunctionEnd
+%vertex_main = OpFunction %void None %9
+ %28 = OpLabel
+ OpStore %tint_pointsize %float_1
+ %30 = OpFunctionCall %void %frexp_a0eb3b
+ %31 = OpFunctionCall %void %tint_symbol_2 %8
+ OpReturn
+ OpFunctionEnd
+%fragment_main = OpFunction %void None %9
+ %33 = OpLabel
+ %34 = OpFunctionCall %void %frexp_a0eb3b
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %9
+ %36 = OpLabel
+ %37 = OpFunctionCall %void %frexp_a0eb3b
+ OpReturn
+ OpFunctionEnd
diff --git a/test/intrinsics/gen/frexp/a0eb3b.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/a0eb3b.wgsl.expected.wgsl
new file mode 100644
index 0000000..fba88d3
--- /dev/null
+++ b/test/intrinsics/gen/frexp/a0eb3b.wgsl.expected.wgsl
@@ -0,0 +1,19 @@
+fn frexp_a0eb3b() {
+ var res = frexp(vec3<f32>());
+}
+
+[[stage(vertex)]]
+fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+ frexp_a0eb3b();
+ return vec4<f32>();
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+ frexp_a0eb3b();
+}
+
+[[stage(compute), workgroup_size(1)]]
+fn compute_main() {
+ frexp_a0eb3b();
+}
diff --git a/test/intrinsics/gen/frexp/a2a617.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/a2a617.wgsl.expected.hlsl
index 68180a7..df13399 100644
--- a/test/intrinsics/gen/frexp/a2a617.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/frexp/a2a617.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/a2a617.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = frexp(1.0, &arg_1);
+ ^^^^^
+
float tint_frexp(float param_0, inout int param_1) {
float float_exp;
float significand = frexp(param_0, float_exp);
diff --git a/test/intrinsics/gen/frexp/a2a617.wgsl.expected.msl b/test/intrinsics/gen/frexp/a2a617.wgsl.expected.msl
index 802e9f0..5ab05d4 100644
--- a/test/intrinsics/gen/frexp/a2a617.wgsl.expected.msl
+++ b/test/intrinsics/gen/frexp/a2a617.wgsl.expected.msl
@@ -1,12 +1,24 @@
+intrinsics/gen/frexp/a2a617.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = frexp(1.0, &arg_1);
+ ^^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float tint_frexp(float param_0, thread int* param_1) {
+ int exp;
+ float sig = frexp(param_0, exp);
+ *param_1 = exp;
+ return sig;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void frexp_a2a617(thread int* const tint_symbol_2) {
- float res = frexp(1.0f, *(&(*(tint_symbol_2))));
+ float res = tint_frexp(1.0f, &(*(tint_symbol_2)));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/frexp/a2a617.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/a2a617.wgsl.expected.spvasm
index 182842e..955c165 100644
--- a/test/intrinsics/gen/frexp/a2a617.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/a2a617.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/a2a617.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = frexp(1.0, &arg_1);
+ ^^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/frexp/a2a617.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/a2a617.wgsl.expected.wgsl
index a563123..e5fdacd 100644
--- a/test/intrinsics/gen/frexp/a2a617.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/a2a617.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/a2a617.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = frexp(1.0, &arg_1);
+ ^^^^^
+
var<private> arg_1 : i32;
fn frexp_a2a617() {
diff --git a/test/intrinsics/gen/frexp/a3f940.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/a3f940.wgsl.expected.hlsl
index f540a08..0c05d53 100644
--- a/test/intrinsics/gen/frexp/a3f940.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/frexp/a3f940.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/a3f940.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = frexp(vec2<f32>(), &arg_1);
+ ^^^^^
+
float2 tint_frexp(float2 param_0, inout int2 param_1) {
float2 float_exp;
float2 significand = frexp(param_0, float_exp);
diff --git a/test/intrinsics/gen/frexp/a3f940.wgsl.expected.msl b/test/intrinsics/gen/frexp/a3f940.wgsl.expected.msl
index 7f841e0..b259049 100644
--- a/test/intrinsics/gen/frexp/a3f940.wgsl.expected.msl
+++ b/test/intrinsics/gen/frexp/a3f940.wgsl.expected.msl
@@ -1,10 +1,20 @@
-SKIP: FAILED
+intrinsics/gen/frexp/a3f940.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = frexp(vec2<f32>(), &arg_1);
+ ^^^^^
#include <metal_stdlib>
using namespace metal;
+
+float2 tint_frexp(float2 param_0, threadgroup int2* param_1) {
+ int2 exp;
+ float2 sig = frexp(param_0, exp);
+ *param_1 = exp;
+ return sig;
+}
+
void frexp_a3f940(threadgroup int2* const tint_symbol_1) {
- float2 res = frexp(float2(), *(&(*(tint_symbol_1))));
+ float2 res = tint_frexp(float2(), &(*(tint_symbol_1)));
}
kernel void compute_main(uint local_invocation_index [[thread_index_in_threadgroup]]) {
@@ -17,44 +27,3 @@
return;
}
-Compilation failed:
-
-program_source:5:16: error: no matching function for call to 'frexp'
- float2 res = frexp(float2(), *(&(*(tint_symbol_1))));
- ^~~~~
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:4804:19: note: candidate function not viable: address space mismatch in 2nd argument ('threadgroup int2' (vector of 2 'int' values)), parameter type must be 'metal::int2 &' (aka 'int2 &')
-METAL_FUNC float2 frexp(float2 x, thread int2 &exp)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3092:17: note: candidate function not viable: no known conversion from 'float2' (vector of 2 'float' values) to 'half' for 1st argument
-METAL_FUNC half frexp(half x, thread int &exp)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3336:18: note: candidate function not viable: no known conversion from 'float2' (vector of 2 'float' values) to 'metal::half2' (aka 'half2') for 1st argument
-METAL_FUNC half2 frexp(half2 x, thread int2 &exp)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3580:18: note: candidate function not viable: no known conversion from 'float2' (vector of 2 'float' values) to 'metal::half3' (aka 'half3') for 1st argument
-METAL_FUNC half3 frexp(half3 x, thread int3 &exp)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3824:18: note: candidate function not viable: no known conversion from 'float2' (vector of 2 'float' values) to 'metal::half4' (aka 'half4') for 1st argument
-METAL_FUNC half4 frexp(half4 x, thread int4 &exp)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:4560:18: note: candidate function not viable: no known conversion from 'float2' (vector of 2 'float' values) to 'float' for 1st argument
-METAL_FUNC float frexp(float x, thread int &exp)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:5048:19: note: candidate function not viable: no known conversion from 'float2' (vector of 2 'float' values) to 'metal::float3' (aka 'float3') for 1st argument
-METAL_FUNC float3 frexp(float3 x, thread int3 &exp)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:5292:19: note: candidate function not viable: no known conversion from 'float2' (vector of 2 'float' values) to 'metal::float4' (aka 'float4') for 1st argument
-METAL_FUNC float4 frexp(float4 x, thread int4 &exp)
- ^
-program_source:10:31: warning: equality comparison with extraneous parentheses
- if ((local_invocation_index == 0u)) {
- ~~~~~~~~~~~~~~~~~~~~~~~^~~~~
-program_source:10:31: note: remove extraneous parentheses around the comparison to silence this warning
- if ((local_invocation_index == 0u)) {
- ~ ^ ~
-program_source:10:31: note: use '=' to turn this equality comparison into an assignment
- if ((local_invocation_index == 0u)) {
- ^~
- =
-
-
diff --git a/test/intrinsics/gen/frexp/a3f940.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/a3f940.wgsl.expected.spvasm
index 11801b6..e0c3785 100644
--- a/test/intrinsics/gen/frexp/a3f940.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/a3f940.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/a3f940.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = frexp(vec2<f32>(), &arg_1);
+ ^^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/frexp/a3f940.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/a3f940.wgsl.expected.wgsl
index 745f7d5..b40075f 100644
--- a/test/intrinsics/gen/frexp/a3f940.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/a3f940.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/a3f940.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = frexp(vec2<f32>(), &arg_1);
+ ^^^^^
+
var<workgroup> arg_1 : vec2<i32>;
fn frexp_a3f940() {
diff --git a/test/intrinsics/gen/frexp/a951b5.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/a951b5.wgsl.expected.hlsl
index f88516c..88c9565 100644
--- a/test/intrinsics/gen/frexp/a951b5.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/frexp/a951b5.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/a951b5.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = frexp(vec2<f32>(), &arg_1);
+ ^^^^^
+
float2 tint_frexp(float2 param_0, inout int2 param_1) {
float2 float_exp;
float2 significand = frexp(param_0, float_exp);
diff --git a/test/intrinsics/gen/frexp/a951b5.wgsl.expected.msl b/test/intrinsics/gen/frexp/a951b5.wgsl.expected.msl
index 7f3a315..56dd076 100644
--- a/test/intrinsics/gen/frexp/a951b5.wgsl.expected.msl
+++ b/test/intrinsics/gen/frexp/a951b5.wgsl.expected.msl
@@ -1,13 +1,25 @@
+intrinsics/gen/frexp/a951b5.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = frexp(vec2<f32>(), &arg_1);
+ ^^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float2 tint_frexp(float2 param_0, thread int2* param_1) {
+ int2 exp;
+ float2 sig = frexp(param_0, exp);
+ *param_1 = exp;
+ return sig;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void frexp_a951b5() {
int2 arg_1 = 0;
- float2 res = frexp(float2(), *(&(arg_1)));
+ float2 res = tint_frexp(float2(), &(arg_1));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/frexp/a951b5.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/a951b5.wgsl.expected.spvasm
index 8f5353e..49ad292 100644
--- a/test/intrinsics/gen/frexp/a951b5.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/a951b5.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/a951b5.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = frexp(vec2<f32>(), &arg_1);
+ ^^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/frexp/a951b5.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/a951b5.wgsl.expected.wgsl
index 44449dd..431a4a7 100644
--- a/test/intrinsics/gen/frexp/a951b5.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/a951b5.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/a951b5.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = frexp(vec2<f32>(), &arg_1);
+ ^^^^^
+
fn frexp_a951b5() {
var arg_1 : vec2<i32>;
var res : vec2<f32> = frexp(vec2<f32>(), &(arg_1));
diff --git a/test/intrinsics/gen/frexp/b45525.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/b45525.wgsl.expected.hlsl
index f9e83b8..28ee0ea 100644
--- a/test/intrinsics/gen/frexp/b45525.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/frexp/b45525.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/b45525.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = frexp(vec4<f32>(), &arg_1);
+ ^^^^^
+
float4 tint_frexp(float4 param_0, inout int4 param_1) {
float4 float_exp;
float4 significand = frexp(param_0, float_exp);
diff --git a/test/intrinsics/gen/frexp/b45525.wgsl.expected.msl b/test/intrinsics/gen/frexp/b45525.wgsl.expected.msl
index d77f3a2..537576a 100644
--- a/test/intrinsics/gen/frexp/b45525.wgsl.expected.msl
+++ b/test/intrinsics/gen/frexp/b45525.wgsl.expected.msl
@@ -1,12 +1,24 @@
+intrinsics/gen/frexp/b45525.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = frexp(vec4<f32>(), &arg_1);
+ ^^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float4 tint_frexp(float4 param_0, thread int4* param_1) {
+ int4 exp;
+ float4 sig = frexp(param_0, exp);
+ *param_1 = exp;
+ return sig;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void frexp_b45525(thread int4* const tint_symbol_2) {
- float4 res = frexp(float4(), *(&(*(tint_symbol_2))));
+ float4 res = tint_frexp(float4(), &(*(tint_symbol_2)));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/frexp/b45525.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/b45525.wgsl.expected.spvasm
index 8280479..f3c321a 100644
--- a/test/intrinsics/gen/frexp/b45525.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/b45525.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/b45525.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = frexp(vec4<f32>(), &arg_1);
+ ^^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/frexp/b45525.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/b45525.wgsl.expected.wgsl
index d9cff0a..b31806c 100644
--- a/test/intrinsics/gen/frexp/b45525.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/b45525.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/b45525.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = frexp(vec4<f32>(), &arg_1);
+ ^^^^^
+
var<private> arg_1 : vec4<i32>;
fn frexp_b45525() {
diff --git a/test/intrinsics/gen/frexp/b87f4e.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/b87f4e.wgsl.expected.hlsl
index ddb2f5f..a39bf1e 100644
--- a/test/intrinsics/gen/frexp/b87f4e.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/frexp/b87f4e.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/b87f4e.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = frexp(vec4<f32>(), &arg_1);
+ ^^^^^
+
float4 tint_frexp(float4 param_0, inout int4 param_1) {
float4 float_exp;
float4 significand = frexp(param_0, float_exp);
diff --git a/test/intrinsics/gen/frexp/b87f4e.wgsl.expected.msl b/test/intrinsics/gen/frexp/b87f4e.wgsl.expected.msl
index dbbfcb5..d3107ae 100644
--- a/test/intrinsics/gen/frexp/b87f4e.wgsl.expected.msl
+++ b/test/intrinsics/gen/frexp/b87f4e.wgsl.expected.msl
@@ -1,10 +1,20 @@
-SKIP: FAILED
+intrinsics/gen/frexp/b87f4e.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = frexp(vec4<f32>(), &arg_1);
+ ^^^^^
#include <metal_stdlib>
using namespace metal;
+
+float4 tint_frexp(float4 param_0, threadgroup int4* param_1) {
+ int4 exp;
+ float4 sig = frexp(param_0, exp);
+ *param_1 = exp;
+ return sig;
+}
+
void frexp_b87f4e(threadgroup int4* const tint_symbol_1) {
- float4 res = frexp(float4(), *(&(*(tint_symbol_1))));
+ float4 res = tint_frexp(float4(), &(*(tint_symbol_1)));
}
kernel void compute_main(uint local_invocation_index [[thread_index_in_threadgroup]]) {
@@ -17,44 +27,3 @@
return;
}
-Compilation failed:
-
-program_source:5:16: error: no matching function for call to 'frexp'
- float4 res = frexp(float4(), *(&(*(tint_symbol_1))));
- ^~~~~
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:5292:19: note: candidate function not viable: address space mismatch in 2nd argument ('threadgroup int4' (vector of 4 'int' values)), parameter type must be 'metal::int4 &' (aka 'int4 &')
-METAL_FUNC float4 frexp(float4 x, thread int4 &exp)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3092:17: note: candidate function not viable: no known conversion from 'float4' (vector of 4 'float' values) to 'half' for 1st argument
-METAL_FUNC half frexp(half x, thread int &exp)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3336:18: note: candidate function not viable: no known conversion from 'float4' (vector of 4 'float' values) to 'metal::half2' (aka 'half2') for 1st argument
-METAL_FUNC half2 frexp(half2 x, thread int2 &exp)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3580:18: note: candidate function not viable: no known conversion from 'float4' (vector of 4 'float' values) to 'metal::half3' (aka 'half3') for 1st argument
-METAL_FUNC half3 frexp(half3 x, thread int3 &exp)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3824:18: note: candidate function not viable: no known conversion from 'float4' (vector of 4 'float' values) to 'metal::half4' (aka 'half4') for 1st argument
-METAL_FUNC half4 frexp(half4 x, thread int4 &exp)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:4560:18: note: candidate function not viable: no known conversion from 'float4' (vector of 4 'float' values) to 'float' for 1st argument
-METAL_FUNC float frexp(float x, thread int &exp)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:4804:19: note: candidate function not viable: no known conversion from 'float4' (vector of 4 'float' values) to 'metal::float2' (aka 'float2') for 1st argument
-METAL_FUNC float2 frexp(float2 x, thread int2 &exp)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:5048:19: note: candidate function not viable: no known conversion from 'float4' (vector of 4 'float' values) to 'metal::float3' (aka 'float3') for 1st argument
-METAL_FUNC float3 frexp(float3 x, thread int3 &exp)
- ^
-program_source:10:31: warning: equality comparison with extraneous parentheses
- if ((local_invocation_index == 0u)) {
- ~~~~~~~~~~~~~~~~~~~~~~~^~~~~
-program_source:10:31: note: remove extraneous parentheses around the comparison to silence this warning
- if ((local_invocation_index == 0u)) {
- ~ ^ ~
-program_source:10:31: note: use '=' to turn this equality comparison into an assignment
- if ((local_invocation_index == 0u)) {
- ^~
- =
-
-
diff --git a/test/intrinsics/gen/frexp/b87f4e.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/b87f4e.wgsl.expected.spvasm
index f8c3322..1d9d9af 100644
--- a/test/intrinsics/gen/frexp/b87f4e.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/b87f4e.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/b87f4e.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = frexp(vec4<f32>(), &arg_1);
+ ^^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/frexp/b87f4e.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/b87f4e.wgsl.expected.wgsl
index b9ed9da..2d23758 100644
--- a/test/intrinsics/gen/frexp/b87f4e.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/b87f4e.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/b87f4e.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = frexp(vec4<f32>(), &arg_1);
+ ^^^^^
+
var<workgroup> arg_1 : vec4<i32>;
fn frexp_b87f4e() {
diff --git a/test/intrinsics/gen/frexp/b9e4de.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/b9e4de.wgsl.expected.hlsl
index 1b06a32..527404b 100644
--- a/test/intrinsics/gen/frexp/b9e4de.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/frexp/b9e4de.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/b9e4de.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = frexp(vec3<f32>(), &arg_1);
+ ^^^^^
+
float3 tint_frexp(float3 param_0, inout int3 param_1) {
float3 float_exp;
float3 significand = frexp(param_0, float_exp);
diff --git a/test/intrinsics/gen/frexp/b9e4de.wgsl.expected.msl b/test/intrinsics/gen/frexp/b9e4de.wgsl.expected.msl
index 55c997b..937b87f 100644
--- a/test/intrinsics/gen/frexp/b9e4de.wgsl.expected.msl
+++ b/test/intrinsics/gen/frexp/b9e4de.wgsl.expected.msl
@@ -1,13 +1,25 @@
+intrinsics/gen/frexp/b9e4de.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = frexp(vec3<f32>(), &arg_1);
+ ^^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float3 tint_frexp(float3 param_0, thread int3* param_1) {
+ int3 exp;
+ float3 sig = frexp(param_0, exp);
+ *param_1 = exp;
+ return sig;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void frexp_b9e4de() {
int3 arg_1 = 0;
- float3 res = frexp(float3(), *(&(arg_1)));
+ float3 res = tint_frexp(float3(), &(arg_1));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/frexp/b9e4de.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/b9e4de.wgsl.expected.spvasm
index 1d6285c..0687916 100644
--- a/test/intrinsics/gen/frexp/b9e4de.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/b9e4de.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/b9e4de.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = frexp(vec3<f32>(), &arg_1);
+ ^^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/frexp/b9e4de.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/b9e4de.wgsl.expected.wgsl
index 38c0091..7c137ca 100644
--- a/test/intrinsics/gen/frexp/b9e4de.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/b9e4de.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/b9e4de.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = frexp(vec3<f32>(), &arg_1);
+ ^^^^^
+
fn frexp_b9e4de() {
var arg_1 : vec3<i32>;
var res : vec3<f32> = frexp(vec3<f32>(), &(arg_1));
diff --git a/test/intrinsics/gen/frexp/c084e3.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/c084e3.wgsl.expected.hlsl
index 7db21c8..b264ed9 100644
--- a/test/intrinsics/gen/frexp/c084e3.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/frexp/c084e3.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/c084e3.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = frexp(vec2<f32>(), &arg_1);
+ ^^^^^
+
float2 tint_frexp(float2 param_0, inout int2 param_1) {
float2 float_exp;
float2 significand = frexp(param_0, float_exp);
diff --git a/test/intrinsics/gen/frexp/c084e3.wgsl.expected.msl b/test/intrinsics/gen/frexp/c084e3.wgsl.expected.msl
index b2c4648..3bd387e 100644
--- a/test/intrinsics/gen/frexp/c084e3.wgsl.expected.msl
+++ b/test/intrinsics/gen/frexp/c084e3.wgsl.expected.msl
@@ -1,12 +1,24 @@
+intrinsics/gen/frexp/c084e3.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = frexp(vec2<f32>(), &arg_1);
+ ^^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float2 tint_frexp(float2 param_0, thread int2* param_1) {
+ int2 exp;
+ float2 sig = frexp(param_0, exp);
+ *param_1 = exp;
+ return sig;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void frexp_c084e3(thread int2* const tint_symbol_2) {
- float2 res = frexp(float2(), *(&(*(tint_symbol_2))));
+ float2 res = tint_frexp(float2(), &(*(tint_symbol_2)));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/frexp/c084e3.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/c084e3.wgsl.expected.spvasm
index 5e2d7a9..ac5c4a0 100644
--- a/test/intrinsics/gen/frexp/c084e3.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/c084e3.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/c084e3.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = frexp(vec2<f32>(), &arg_1);
+ ^^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/frexp/c084e3.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/c084e3.wgsl.expected.wgsl
index 7a2d8c6..f924d31 100644
--- a/test/intrinsics/gen/frexp/c084e3.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/c084e3.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/c084e3.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = frexp(vec2<f32>(), &arg_1);
+ ^^^^^
+
var<private> arg_1 : vec2<i32>;
fn frexp_c084e3() {
diff --git a/test/intrinsics/gen/frexp/d06c2c.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/d06c2c.wgsl.expected.hlsl
index b806072..1efdb62 100644
--- a/test/intrinsics/gen/frexp/d06c2c.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/frexp/d06c2c.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/d06c2c.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = frexp(vec2<f32>(), &arg_1);
+ ^^^^^
+
float2 tint_frexp(float2 param_0, inout int2 param_1) {
float2 float_exp;
float2 significand = frexp(param_0, float_exp);
diff --git a/test/intrinsics/gen/frexp/d06c2c.wgsl.expected.msl b/test/intrinsics/gen/frexp/d06c2c.wgsl.expected.msl
index 4b10b99..8f580e1 100644
--- a/test/intrinsics/gen/frexp/d06c2c.wgsl.expected.msl
+++ b/test/intrinsics/gen/frexp/d06c2c.wgsl.expected.msl
@@ -1,13 +1,25 @@
+intrinsics/gen/frexp/d06c2c.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = frexp(vec2<f32>(), &arg_1);
+ ^^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float2 tint_frexp(float2 param_0, thread int2* param_1) {
+ int2 exp;
+ float2 sig = frexp(param_0, exp);
+ *param_1 = exp;
+ return sig;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void frexp_d06c2c() {
int2 arg_1 = 0;
- float2 res = frexp(float2(), *(&(arg_1)));
+ float2 res = tint_frexp(float2(), &(arg_1));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/frexp/d06c2c.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/d06c2c.wgsl.expected.spvasm
index 45cf3cc..2b15722 100644
--- a/test/intrinsics/gen/frexp/d06c2c.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/d06c2c.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/d06c2c.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = frexp(vec2<f32>(), &arg_1);
+ ^^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/frexp/d06c2c.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/d06c2c.wgsl.expected.wgsl
index 1dcaaf6..1680cd9 100644
--- a/test/intrinsics/gen/frexp/d06c2c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/d06c2c.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/d06c2c.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = frexp(vec2<f32>(), &arg_1);
+ ^^^^^
+
fn frexp_d06c2c() {
var arg_1 : vec2<i32>;
var res : vec2<f32> = frexp(vec2<f32>(), &(arg_1));
diff --git a/test/intrinsics/gen/frexp/d80367.wgsl b/test/intrinsics/gen/frexp/d80367.wgsl
new file mode 100644
index 0000000..bd8112b
--- /dev/null
+++ b/test/intrinsics/gen/frexp/d80367.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2021 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/intrinsic-gen
+// using the template:
+// test/intrinsics/intrinsics.wgsl.tmpl
+// and the intrinsic defintion file:
+// src/intrinsics.def
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// fn frexp(vec<4, f32>) -> _frexp_result_vec<4>
+fn frexp_d80367() {
+ var res = frexp(vec4<f32>());
+}
+
+[[stage(vertex)]]
+fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+ frexp_d80367();
+ return vec4<f32>();
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+ frexp_d80367();
+}
+
+[[stage(compute), workgroup_size(1)]]
+fn compute_main() {
+ frexp_d80367();
+}
diff --git a/test/intrinsics/gen/frexp/d80367.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/d80367.wgsl.expected.hlsl
new file mode 100644
index 0000000..18b14d4
--- /dev/null
+++ b/test/intrinsics/gen/frexp/d80367.wgsl.expected.hlsl
@@ -0,0 +1,35 @@
+struct frexp_result_vec4 {
+ float4 sig;
+ int4 exp;
+};
+frexp_result_vec4 tint_frexp(float4 param_0) {
+ float4 exp;
+ float4 sig = frexp(param_0, exp);
+ frexp_result_vec4 result = {sig, int4(exp)};
+ return result;
+}
+
+void frexp_d80367() {
+ frexp_result_vec4 res = tint_frexp(float4(0.0f, 0.0f, 0.0f, 0.0f));
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+tint_symbol vertex_main() {
+ frexp_d80367();
+ const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
+ return tint_symbol_1;
+}
+
+void fragment_main() {
+ frexp_d80367();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ frexp_d80367();
+ return;
+}
diff --git a/test/intrinsics/gen/frexp/d80367.wgsl.expected.msl b/test/intrinsics/gen/frexp/d80367.wgsl.expected.msl
new file mode 100644
index 0000000..036089b
--- /dev/null
+++ b/test/intrinsics/gen/frexp/d80367.wgsl.expected.msl
@@ -0,0 +1,38 @@
+#include <metal_stdlib>
+
+using namespace metal;
+
+struct frexp_result_vec4 {
+ float4 sig;
+ int4 exp;
+};
+frexp_result_vec4 tint_frexp(float4 param_0) {
+ int4 exp;
+ float4 sig = frexp(param_0, exp);
+ return {sig, exp};
+}
+
+struct tint_symbol {
+ float4 value [[position]];
+};
+
+void frexp_d80367() {
+ frexp_result_vec4 res = tint_frexp(float4());
+}
+
+vertex tint_symbol vertex_main() {
+ frexp_d80367();
+ tint_symbol const tint_symbol_1 = {.value=float4()};
+ return tint_symbol_1;
+}
+
+fragment void fragment_main() {
+ frexp_d80367();
+ return;
+}
+
+kernel void compute_main() {
+ frexp_d80367();
+ return;
+}
+
diff --git a/test/intrinsics/gen/frexp/d80367.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/d80367.wgsl.expected.spvasm
new file mode 100644
index 0000000..03f674e
--- /dev/null
+++ b/test/intrinsics/gen/frexp/d80367.wgsl.expected.spvasm
@@ -0,0 +1,76 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 36
+; Schema: 0
+ OpCapability Shader
+ %17 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical GLSL450
+ OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize %tint_symbol_1
+ OpEntryPoint Fragment %fragment_main "fragment_main"
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %fragment_main OriginUpperLeft
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %tint_pointsize "tint_pointsize"
+ OpName %tint_symbol_1 "tint_symbol_1"
+ OpName %frexp_d80367 "frexp_d80367"
+ OpName %_frexp_result_vec4 "_frexp_result_vec4"
+ OpMemberName %_frexp_result_vec4 0 "sig"
+ OpMemberName %_frexp_result_vec4 1 "exp"
+ OpName %res "res"
+ OpName %tint_symbol_2 "tint_symbol_2"
+ OpName %tint_symbol "tint_symbol"
+ OpName %vertex_main "vertex_main"
+ OpName %fragment_main "fragment_main"
+ OpName %compute_main "compute_main"
+ OpDecorate %tint_pointsize BuiltIn PointSize
+ OpDecorate %tint_symbol_1 BuiltIn Position
+ OpMemberDecorate %_frexp_result_vec4 0 Offset 0
+ OpMemberDecorate %_frexp_result_vec4 1 Offset 16
+ %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+ %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+ %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %8 = OpConstantNull %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+ %void = OpTypeVoid
+ %9 = OpTypeFunction %void
+ %int = OpTypeInt 32 1
+ %v4int = OpTypeVector %int 4
+%_frexp_result_vec4 = OpTypeStruct %v4float %v4int
+%_ptr_Function__frexp_result_vec4 = OpTypePointer Function %_frexp_result_vec4
+ %20 = OpConstantNull %_frexp_result_vec4
+ %21 = OpTypeFunction %void %v4float
+ %float_1 = OpConstant %float 1
+%frexp_d80367 = OpFunction %void None %9
+ %12 = OpLabel
+ %res = OpVariable %_ptr_Function__frexp_result_vec4 Function %20
+ %13 = OpExtInst %_frexp_result_vec4 %17 FrexpStruct %8
+ OpStore %res %13
+ OpReturn
+ OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %21
+%tint_symbol = OpFunctionParameter %v4float
+ %24 = OpLabel
+ OpStore %tint_symbol_1 %tint_symbol
+ OpReturn
+ OpFunctionEnd
+%vertex_main = OpFunction %void None %9
+ %26 = OpLabel
+ OpStore %tint_pointsize %float_1
+ %28 = OpFunctionCall %void %frexp_d80367
+ %29 = OpFunctionCall %void %tint_symbol_2 %8
+ OpReturn
+ OpFunctionEnd
+%fragment_main = OpFunction %void None %9
+ %31 = OpLabel
+ %32 = OpFunctionCall %void %frexp_d80367
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %9
+ %34 = OpLabel
+ %35 = OpFunctionCall %void %frexp_d80367
+ OpReturn
+ OpFunctionEnd
diff --git a/test/intrinsics/gen/frexp/d80367.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/d80367.wgsl.expected.wgsl
new file mode 100644
index 0000000..0c60003
--- /dev/null
+++ b/test/intrinsics/gen/frexp/d80367.wgsl.expected.wgsl
@@ -0,0 +1,19 @@
+fn frexp_d80367() {
+ var res = frexp(vec4<f32>());
+}
+
+[[stage(vertex)]]
+fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+ frexp_d80367();
+ return vec4<f32>();
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+ frexp_d80367();
+}
+
+[[stage(compute), workgroup_size(1)]]
+fn compute_main() {
+ frexp_d80367();
+}
diff --git a/test/intrinsics/gen/frexp/db0637.wgsl b/test/intrinsics/gen/frexp/db0637.wgsl
new file mode 100644
index 0000000..9afab3a
--- /dev/null
+++ b/test/intrinsics/gen/frexp/db0637.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2021 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/intrinsic-gen
+// using the template:
+// test/intrinsics/intrinsics.wgsl.tmpl
+// and the intrinsic defintion file:
+// src/intrinsics.def
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// fn frexp(vec<2, f32>) -> _frexp_result_vec<2>
+fn frexp_db0637() {
+ var res = frexp(vec2<f32>());
+}
+
+[[stage(vertex)]]
+fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+ frexp_db0637();
+ return vec4<f32>();
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+ frexp_db0637();
+}
+
+[[stage(compute), workgroup_size(1)]]
+fn compute_main() {
+ frexp_db0637();
+}
diff --git a/test/intrinsics/gen/frexp/db0637.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/db0637.wgsl.expected.hlsl
new file mode 100644
index 0000000..8ae0b21
--- /dev/null
+++ b/test/intrinsics/gen/frexp/db0637.wgsl.expected.hlsl
@@ -0,0 +1,35 @@
+struct frexp_result_vec2 {
+ float2 sig;
+ int2 exp;
+};
+frexp_result_vec2 tint_frexp(float2 param_0) {
+ float2 exp;
+ float2 sig = frexp(param_0, exp);
+ frexp_result_vec2 result = {sig, int2(exp)};
+ return result;
+}
+
+void frexp_db0637() {
+ frexp_result_vec2 res = tint_frexp(float2(0.0f, 0.0f));
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+tint_symbol vertex_main() {
+ frexp_db0637();
+ const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
+ return tint_symbol_1;
+}
+
+void fragment_main() {
+ frexp_db0637();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ frexp_db0637();
+ return;
+}
diff --git a/test/intrinsics/gen/frexp/db0637.wgsl.expected.msl b/test/intrinsics/gen/frexp/db0637.wgsl.expected.msl
new file mode 100644
index 0000000..26b3332
--- /dev/null
+++ b/test/intrinsics/gen/frexp/db0637.wgsl.expected.msl
@@ -0,0 +1,38 @@
+#include <metal_stdlib>
+
+using namespace metal;
+
+struct frexp_result_vec2 {
+ float2 sig;
+ int2 exp;
+};
+frexp_result_vec2 tint_frexp(float2 param_0) {
+ int2 exp;
+ float2 sig = frexp(param_0, exp);
+ return {sig, exp};
+}
+
+struct tint_symbol {
+ float4 value [[position]];
+};
+
+void frexp_db0637() {
+ frexp_result_vec2 res = tint_frexp(float2());
+}
+
+vertex tint_symbol vertex_main() {
+ frexp_db0637();
+ tint_symbol const tint_symbol_1 = {.value=float4()};
+ return tint_symbol_1;
+}
+
+fragment void fragment_main() {
+ frexp_db0637();
+ return;
+}
+
+kernel void compute_main() {
+ frexp_db0637();
+ return;
+}
+
diff --git a/test/intrinsics/gen/frexp/db0637.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/db0637.wgsl.expected.spvasm
new file mode 100644
index 0000000..df21833
--- /dev/null
+++ b/test/intrinsics/gen/frexp/db0637.wgsl.expected.spvasm
@@ -0,0 +1,78 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 38
+; Schema: 0
+ OpCapability Shader
+ %18 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical GLSL450
+ OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize %tint_symbol_1
+ OpEntryPoint Fragment %fragment_main "fragment_main"
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %fragment_main OriginUpperLeft
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %tint_pointsize "tint_pointsize"
+ OpName %tint_symbol_1 "tint_symbol_1"
+ OpName %frexp_db0637 "frexp_db0637"
+ OpName %_frexp_result_vec2 "_frexp_result_vec2"
+ OpMemberName %_frexp_result_vec2 0 "sig"
+ OpMemberName %_frexp_result_vec2 1 "exp"
+ OpName %res "res"
+ OpName %tint_symbol_2 "tint_symbol_2"
+ OpName %tint_symbol "tint_symbol"
+ OpName %vertex_main "vertex_main"
+ OpName %fragment_main "fragment_main"
+ OpName %compute_main "compute_main"
+ OpDecorate %tint_pointsize BuiltIn PointSize
+ OpDecorate %tint_symbol_1 BuiltIn Position
+ OpMemberDecorate %_frexp_result_vec2 0 Offset 0
+ OpMemberDecorate %_frexp_result_vec2 1 Offset 8
+ %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+ %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+ %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %8 = OpConstantNull %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+ %void = OpTypeVoid
+ %9 = OpTypeFunction %void
+ %v2float = OpTypeVector %float 2
+ %int = OpTypeInt 32 1
+ %v2int = OpTypeVector %int 2
+%_frexp_result_vec2 = OpTypeStruct %v2float %v2int
+ %19 = OpConstantNull %v2float
+%_ptr_Function__frexp_result_vec2 = OpTypePointer Function %_frexp_result_vec2
+ %22 = OpConstantNull %_frexp_result_vec2
+ %23 = OpTypeFunction %void %v4float
+ %float_1 = OpConstant %float 1
+%frexp_db0637 = OpFunction %void None %9
+ %12 = OpLabel
+ %res = OpVariable %_ptr_Function__frexp_result_vec2 Function %22
+ %13 = OpExtInst %_frexp_result_vec2 %18 FrexpStruct %19
+ OpStore %res %13
+ OpReturn
+ OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %23
+%tint_symbol = OpFunctionParameter %v4float
+ %26 = OpLabel
+ OpStore %tint_symbol_1 %tint_symbol
+ OpReturn
+ OpFunctionEnd
+%vertex_main = OpFunction %void None %9
+ %28 = OpLabel
+ OpStore %tint_pointsize %float_1
+ %30 = OpFunctionCall %void %frexp_db0637
+ %31 = OpFunctionCall %void %tint_symbol_2 %8
+ OpReturn
+ OpFunctionEnd
+%fragment_main = OpFunction %void None %9
+ %33 = OpLabel
+ %34 = OpFunctionCall %void %frexp_db0637
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %9
+ %36 = OpLabel
+ %37 = OpFunctionCall %void %frexp_db0637
+ OpReturn
+ OpFunctionEnd
diff --git a/test/intrinsics/gen/frexp/db0637.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/db0637.wgsl.expected.wgsl
new file mode 100644
index 0000000..c56e615
--- /dev/null
+++ b/test/intrinsics/gen/frexp/db0637.wgsl.expected.wgsl
@@ -0,0 +1,19 @@
+fn frexp_db0637() {
+ var res = frexp(vec2<f32>());
+}
+
+[[stage(vertex)]]
+fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+ frexp_db0637();
+ return vec4<f32>();
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+ frexp_db0637();
+}
+
+[[stage(compute), workgroup_size(1)]]
+fn compute_main() {
+ frexp_db0637();
+}
diff --git a/test/intrinsics/gen/frexp/e061dd.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/e061dd.wgsl.expected.hlsl
index 8aa4d20..3fd7e82 100644
--- a/test/intrinsics/gen/frexp/e061dd.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/frexp/e061dd.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/e061dd.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = frexp(1.0, &arg_1);
+ ^^^^^
+
float tint_frexp(float param_0, inout int param_1) {
float float_exp;
float significand = frexp(param_0, float_exp);
diff --git a/test/intrinsics/gen/frexp/e061dd.wgsl.expected.msl b/test/intrinsics/gen/frexp/e061dd.wgsl.expected.msl
index 5b7adae..a773306 100644
--- a/test/intrinsics/gen/frexp/e061dd.wgsl.expected.msl
+++ b/test/intrinsics/gen/frexp/e061dd.wgsl.expected.msl
@@ -1,13 +1,25 @@
+intrinsics/gen/frexp/e061dd.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = frexp(1.0, &arg_1);
+ ^^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float tint_frexp(float param_0, thread int* param_1) {
+ int exp;
+ float sig = frexp(param_0, exp);
+ *param_1 = exp;
+ return sig;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void frexp_e061dd() {
int arg_1 = 0;
- float res = frexp(1.0f, *(&(arg_1)));
+ float res = tint_frexp(1.0f, &(arg_1));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/frexp/e061dd.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/e061dd.wgsl.expected.spvasm
index b580d60..1504a09 100644
--- a/test/intrinsics/gen/frexp/e061dd.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/e061dd.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/e061dd.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = frexp(1.0, &arg_1);
+ ^^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/frexp/e061dd.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/e061dd.wgsl.expected.wgsl
index a69a43c..feb5bad 100644
--- a/test/intrinsics/gen/frexp/e061dd.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/e061dd.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/frexp/e061dd.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = frexp(1.0, &arg_1);
+ ^^^^^
+
fn frexp_e061dd() {
var arg_1 : i32;
var res : f32 = frexp(1.0, &(arg_1));
diff --git a/test/intrinsics/gen/modf/1d59e5.wgsl.expected.hlsl b/test/intrinsics/gen/modf/1d59e5.wgsl.expected.hlsl
index 5f0f807..2207d2e 100644
--- a/test/intrinsics/gen/modf/1d59e5.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/modf/1d59e5.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/1d59e5.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = modf(vec4<f32>(), &arg_1);
+ ^^^^
+
groupshared float4 arg_1;
void modf_1d59e5() {
diff --git a/test/intrinsics/gen/modf/1d59e5.wgsl.expected.msl b/test/intrinsics/gen/modf/1d59e5.wgsl.expected.msl
index ae1675b..a078817 100644
--- a/test/intrinsics/gen/modf/1d59e5.wgsl.expected.msl
+++ b/test/intrinsics/gen/modf/1d59e5.wgsl.expected.msl
@@ -1,10 +1,20 @@
-SKIP: FAILED
+intrinsics/gen/modf/1d59e5.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = modf(vec4<f32>(), &arg_1);
+ ^^^^
#include <metal_stdlib>
using namespace metal;
+
+float4 tint_modf(float4 param_0, threadgroup float4* param_1) {
+ float4 whole;
+ float4 fract = modf(param_0, whole);
+ *param_1 = whole;
+ return fract;
+}
+
void modf_1d59e5(threadgroup float4* const tint_symbol_1) {
- float4 res = modf(float4(), *(&(*(tint_symbol_1))));
+ float4 res = tint_modf(float4(), &(*(tint_symbol_1)));
}
kernel void compute_main(uint local_invocation_index [[thread_index_in_threadgroup]]) {
@@ -17,44 +27,3 @@
return;
}
-Compilation failed:
-
-program_source:5:16: error: no matching function for call to 'modf'
- float4 res = modf(float4(), *(&(*(tint_symbol_1))));
- ^~~~
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:5342:19: note: candidate function not viable: address space mismatch in 2nd argument ('threadgroup float4' (vector of 4 'float' values)), parameter type must be 'metal::float4 &' (aka 'float4 &')
-METAL_FUNC float4 modf(float4 x, thread float4 &intval)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3142:17: note: candidate function not viable: no known conversion from 'float4' (vector of 4 'float' values) to 'half' for 1st argument
-METAL_FUNC half modf(half x, thread half &intval)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3386:18: note: candidate function not viable: no known conversion from 'float4' (vector of 4 'float' values) to 'metal::half2' (aka 'half2') for 1st argument
-METAL_FUNC half2 modf(half2 x, thread half2 &intval)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3630:18: note: candidate function not viable: no known conversion from 'float4' (vector of 4 'float' values) to 'metal::half3' (aka 'half3') for 1st argument
-METAL_FUNC half3 modf(half3 x, thread half3 &intval)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3874:18: note: candidate function not viable: no known conversion from 'float4' (vector of 4 'float' values) to 'metal::half4' (aka 'half4') for 1st argument
-METAL_FUNC half4 modf(half4 x, thread half4 &intval)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:4610:18: note: candidate function not viable: no known conversion from 'float4' (vector of 4 'float' values) to 'float' for 1st argument
-METAL_FUNC float modf(float x, thread float &intval)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:4854:19: note: candidate function not viable: no known conversion from 'float4' (vector of 4 'float' values) to 'metal::float2' (aka 'float2') for 1st argument
-METAL_FUNC float2 modf(float2 x, thread float2 &intval)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:5098:19: note: candidate function not viable: no known conversion from 'float4' (vector of 4 'float' values) to 'metal::float3' (aka 'float3') for 1st argument
-METAL_FUNC float3 modf(float3 x, thread float3 &intval)
- ^
-program_source:10:31: warning: equality comparison with extraneous parentheses
- if ((local_invocation_index == 0u)) {
- ~~~~~~~~~~~~~~~~~~~~~~~^~~~~
-program_source:10:31: note: remove extraneous parentheses around the comparison to silence this warning
- if ((local_invocation_index == 0u)) {
- ~ ^ ~
-program_source:10:31: note: use '=' to turn this equality comparison into an assignment
- if ((local_invocation_index == 0u)) {
- ^~
- =
-
-
diff --git a/test/intrinsics/gen/modf/1d59e5.wgsl.expected.spvasm b/test/intrinsics/gen/modf/1d59e5.wgsl.expected.spvasm
index b999664..717b2e2 100644
--- a/test/intrinsics/gen/modf/1d59e5.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/1d59e5.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/1d59e5.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = modf(vec4<f32>(), &arg_1);
+ ^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/modf/1d59e5.wgsl.expected.wgsl b/test/intrinsics/gen/modf/1d59e5.wgsl.expected.wgsl
index d94d6b1..3a82932 100644
--- a/test/intrinsics/gen/modf/1d59e5.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/1d59e5.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/1d59e5.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = modf(vec4<f32>(), &arg_1);
+ ^^^^
+
var<workgroup> arg_1 : vec4<f32>;
fn modf_1d59e5() {
diff --git a/test/intrinsics/gen/modf/2199f1.wgsl b/test/intrinsics/gen/modf/2199f1.wgsl
new file mode 100644
index 0000000..c9cecd6
--- /dev/null
+++ b/test/intrinsics/gen/modf/2199f1.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2021 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/intrinsic-gen
+// using the template:
+// test/intrinsics/intrinsics.wgsl.tmpl
+// and the intrinsic defintion file:
+// src/intrinsics.def
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// fn modf(vec<3, f32>) -> _modf_result_vec<3>
+fn modf_2199f1() {
+ var res = modf(vec3<f32>());
+}
+
+[[stage(vertex)]]
+fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+ modf_2199f1();
+ return vec4<f32>();
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+ modf_2199f1();
+}
+
+[[stage(compute), workgroup_size(1)]]
+fn compute_main() {
+ modf_2199f1();
+}
diff --git a/test/intrinsics/gen/modf/2199f1.wgsl.expected.hlsl b/test/intrinsics/gen/modf/2199f1.wgsl.expected.hlsl
new file mode 100644
index 0000000..9b4570e
--- /dev/null
+++ b/test/intrinsics/gen/modf/2199f1.wgsl.expected.hlsl
@@ -0,0 +1,35 @@
+struct modf_result_vec3 {
+ float3 fract;
+ float3 whole;
+};
+modf_result_vec3 tint_modf(float3 param_0) {
+ float3 whole;
+ float3 fract = modf(param_0, whole);
+ modf_result_vec3 result = {fract, whole};
+ return result;
+}
+
+void modf_2199f1() {
+ modf_result_vec3 res = tint_modf(float3(0.0f, 0.0f, 0.0f));
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+tint_symbol vertex_main() {
+ modf_2199f1();
+ const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
+ return tint_symbol_1;
+}
+
+void fragment_main() {
+ modf_2199f1();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ modf_2199f1();
+ return;
+}
diff --git a/test/intrinsics/gen/modf/2199f1.wgsl.expected.msl b/test/intrinsics/gen/modf/2199f1.wgsl.expected.msl
new file mode 100644
index 0000000..233b91c
--- /dev/null
+++ b/test/intrinsics/gen/modf/2199f1.wgsl.expected.msl
@@ -0,0 +1,38 @@
+#include <metal_stdlib>
+
+using namespace metal;
+
+struct modf_result_vec3 {
+ float3 fract;
+ float3 whole;
+};
+modf_result_vec3 tint_modf(float3 param_0) {
+ float3 whole;
+ float3 fract = modf(param_0, whole);
+ return {fract, whole};
+}
+
+struct tint_symbol {
+ float4 value [[position]];
+};
+
+void modf_2199f1() {
+ modf_result_vec3 res = tint_modf(float3());
+}
+
+vertex tint_symbol vertex_main() {
+ modf_2199f1();
+ tint_symbol const tint_symbol_1 = {.value=float4()};
+ return tint_symbol_1;
+}
+
+fragment void fragment_main() {
+ modf_2199f1();
+ return;
+}
+
+kernel void compute_main() {
+ modf_2199f1();
+ return;
+}
+
diff --git a/test/intrinsics/gen/modf/2199f1.wgsl.expected.spvasm b/test/intrinsics/gen/modf/2199f1.wgsl.expected.spvasm
new file mode 100644
index 0000000..998b149
--- /dev/null
+++ b/test/intrinsics/gen/modf/2199f1.wgsl.expected.spvasm
@@ -0,0 +1,76 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 36
+; Schema: 0
+ OpCapability Shader
+ %16 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical GLSL450
+ OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize %tint_symbol_1
+ OpEntryPoint Fragment %fragment_main "fragment_main"
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %fragment_main OriginUpperLeft
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %tint_pointsize "tint_pointsize"
+ OpName %tint_symbol_1 "tint_symbol_1"
+ OpName %modf_2199f1 "modf_2199f1"
+ OpName %_modf_result_vec3 "_modf_result_vec3"
+ OpMemberName %_modf_result_vec3 0 "fract"
+ OpMemberName %_modf_result_vec3 1 "whole"
+ OpName %res "res"
+ OpName %tint_symbol_2 "tint_symbol_2"
+ OpName %tint_symbol "tint_symbol"
+ OpName %vertex_main "vertex_main"
+ OpName %fragment_main "fragment_main"
+ OpName %compute_main "compute_main"
+ OpDecorate %tint_pointsize BuiltIn PointSize
+ OpDecorate %tint_symbol_1 BuiltIn Position
+ OpMemberDecorate %_modf_result_vec3 0 Offset 0
+ OpMemberDecorate %_modf_result_vec3 1 Offset 16
+ %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+ %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+ %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %8 = OpConstantNull %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+ %void = OpTypeVoid
+ %9 = OpTypeFunction %void
+ %v3float = OpTypeVector %float 3
+%_modf_result_vec3 = OpTypeStruct %v3float %v3float
+ %17 = OpConstantNull %v3float
+%_ptr_Function__modf_result_vec3 = OpTypePointer Function %_modf_result_vec3
+ %20 = OpConstantNull %_modf_result_vec3
+ %21 = OpTypeFunction %void %v4float
+ %float_1 = OpConstant %float 1
+%modf_2199f1 = OpFunction %void None %9
+ %12 = OpLabel
+ %res = OpVariable %_ptr_Function__modf_result_vec3 Function %20
+ %13 = OpExtInst %_modf_result_vec3 %16 ModfStruct %17
+ OpStore %res %13
+ OpReturn
+ OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %21
+%tint_symbol = OpFunctionParameter %v4float
+ %24 = OpLabel
+ OpStore %tint_symbol_1 %tint_symbol
+ OpReturn
+ OpFunctionEnd
+%vertex_main = OpFunction %void None %9
+ %26 = OpLabel
+ OpStore %tint_pointsize %float_1
+ %28 = OpFunctionCall %void %modf_2199f1
+ %29 = OpFunctionCall %void %tint_symbol_2 %8
+ OpReturn
+ OpFunctionEnd
+%fragment_main = OpFunction %void None %9
+ %31 = OpLabel
+ %32 = OpFunctionCall %void %modf_2199f1
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %9
+ %34 = OpLabel
+ %35 = OpFunctionCall %void %modf_2199f1
+ OpReturn
+ OpFunctionEnd
diff --git a/test/intrinsics/gen/modf/2199f1.wgsl.expected.wgsl b/test/intrinsics/gen/modf/2199f1.wgsl.expected.wgsl
new file mode 100644
index 0000000..8a55a22
--- /dev/null
+++ b/test/intrinsics/gen/modf/2199f1.wgsl.expected.wgsl
@@ -0,0 +1,19 @@
+fn modf_2199f1() {
+ var res = modf(vec3<f32>());
+}
+
+[[stage(vertex)]]
+fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+ modf_2199f1();
+ return vec4<f32>();
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+ modf_2199f1();
+}
+
+[[stage(compute), workgroup_size(1)]]
+fn compute_main() {
+ modf_2199f1();
+}
diff --git a/test/intrinsics/gen/modf/353f7d.wgsl.expected.hlsl b/test/intrinsics/gen/modf/353f7d.wgsl.expected.hlsl
index b677940..7661a49 100644
--- a/test/intrinsics/gen/modf/353f7d.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/modf/353f7d.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/353f7d.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = modf(1.0, &arg_1);
+ ^^^^
+
void modf_353f7d() {
float arg_1 = 0.0f;
float res = modf(1.0f, arg_1);
diff --git a/test/intrinsics/gen/modf/353f7d.wgsl.expected.msl b/test/intrinsics/gen/modf/353f7d.wgsl.expected.msl
index 256dd45..67dafcf 100644
--- a/test/intrinsics/gen/modf/353f7d.wgsl.expected.msl
+++ b/test/intrinsics/gen/modf/353f7d.wgsl.expected.msl
@@ -1,13 +1,25 @@
+intrinsics/gen/modf/353f7d.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = modf(1.0, &arg_1);
+ ^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float tint_modf(float param_0, thread float* param_1) {
+ float whole;
+ float fract = modf(param_0, whole);
+ *param_1 = whole;
+ return fract;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void modf_353f7d() {
float arg_1 = 0.0f;
- float res = modf(1.0f, *(&(arg_1)));
+ float res = tint_modf(1.0f, &(arg_1));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/modf/353f7d.wgsl.expected.spvasm b/test/intrinsics/gen/modf/353f7d.wgsl.expected.spvasm
index 8252221..83763b8 100644
--- a/test/intrinsics/gen/modf/353f7d.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/353f7d.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/353f7d.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = modf(1.0, &arg_1);
+ ^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/modf/353f7d.wgsl.expected.wgsl b/test/intrinsics/gen/modf/353f7d.wgsl.expected.wgsl
index 247d8c1..f57dfff 100644
--- a/test/intrinsics/gen/modf/353f7d.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/353f7d.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/353f7d.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = modf(1.0, &arg_1);
+ ^^^^
+
fn modf_353f7d() {
var arg_1 : f32;
var res : f32 = modf(1.0, &(arg_1));
diff --git a/test/intrinsics/gen/modf/3b79d5.wgsl.expected.hlsl b/test/intrinsics/gen/modf/3b79d5.wgsl.expected.hlsl
index 4f4e6fd..7d4c708 100644
--- a/test/intrinsics/gen/modf/3b79d5.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/modf/3b79d5.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/3b79d5.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = modf(vec3<f32>(), &arg_1);
+ ^^^^
+
void modf_3b79d5() {
float3 arg_1 = float3(0.0f, 0.0f, 0.0f);
float3 res = modf(float3(0.0f, 0.0f, 0.0f), arg_1);
diff --git a/test/intrinsics/gen/modf/3b79d5.wgsl.expected.msl b/test/intrinsics/gen/modf/3b79d5.wgsl.expected.msl
index 31af906..2881b41 100644
--- a/test/intrinsics/gen/modf/3b79d5.wgsl.expected.msl
+++ b/test/intrinsics/gen/modf/3b79d5.wgsl.expected.msl
@@ -1,13 +1,25 @@
+intrinsics/gen/modf/3b79d5.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = modf(vec3<f32>(), &arg_1);
+ ^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float3 tint_modf(float3 param_0, thread float3* param_1) {
+ float3 whole;
+ float3 fract = modf(param_0, whole);
+ *param_1 = whole;
+ return fract;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void modf_3b79d5() {
float3 arg_1 = 0.0f;
- float3 res = modf(float3(), *(&(arg_1)));
+ float3 res = tint_modf(float3(), &(arg_1));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/modf/3b79d5.wgsl.expected.spvasm b/test/intrinsics/gen/modf/3b79d5.wgsl.expected.spvasm
index 545e00f..9a2e520 100644
--- a/test/intrinsics/gen/modf/3b79d5.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/3b79d5.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/3b79d5.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = modf(vec3<f32>(), &arg_1);
+ ^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/modf/3b79d5.wgsl.expected.wgsl b/test/intrinsics/gen/modf/3b79d5.wgsl.expected.wgsl
index 78f7646..616c2b8 100644
--- a/test/intrinsics/gen/modf/3b79d5.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/3b79d5.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/3b79d5.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = modf(vec3<f32>(), &arg_1);
+ ^^^^
+
fn modf_3b79d5() {
var arg_1 : vec3<f32>;
var res : vec3<f32> = modf(vec3<f32>(), &(arg_1));
diff --git a/test/intrinsics/gen/modf/3d00e2.wgsl.expected.hlsl b/test/intrinsics/gen/modf/3d00e2.wgsl.expected.hlsl
index 2020461..5f97ee4 100644
--- a/test/intrinsics/gen/modf/3d00e2.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/modf/3d00e2.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/3d00e2.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = modf(vec4<f32>(), &arg_1);
+ ^^^^
+
static float4 arg_1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
void modf_3d00e2() {
diff --git a/test/intrinsics/gen/modf/3d00e2.wgsl.expected.msl b/test/intrinsics/gen/modf/3d00e2.wgsl.expected.msl
index d7ce378..10b1b38 100644
--- a/test/intrinsics/gen/modf/3d00e2.wgsl.expected.msl
+++ b/test/intrinsics/gen/modf/3d00e2.wgsl.expected.msl
@@ -1,12 +1,24 @@
+intrinsics/gen/modf/3d00e2.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = modf(vec4<f32>(), &arg_1);
+ ^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float4 tint_modf(float4 param_0, thread float4* param_1) {
+ float4 whole;
+ float4 fract = modf(param_0, whole);
+ *param_1 = whole;
+ return fract;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void modf_3d00e2(thread float4* const tint_symbol_2) {
- float4 res = modf(float4(), *(&(*(tint_symbol_2))));
+ float4 res = tint_modf(float4(), &(*(tint_symbol_2)));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/modf/3d00e2.wgsl.expected.spvasm b/test/intrinsics/gen/modf/3d00e2.wgsl.expected.spvasm
index 2bc383b..35ccc6a 100644
--- a/test/intrinsics/gen/modf/3d00e2.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/3d00e2.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/3d00e2.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = modf(vec4<f32>(), &arg_1);
+ ^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/modf/3d00e2.wgsl.expected.wgsl b/test/intrinsics/gen/modf/3d00e2.wgsl.expected.wgsl
index 6175df8..8f08f94 100644
--- a/test/intrinsics/gen/modf/3d00e2.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/3d00e2.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/3d00e2.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = modf(vec4<f32>(), &arg_1);
+ ^^^^
+
var<private> arg_1 : vec4<f32>;
fn modf_3d00e2() {
diff --git a/test/intrinsics/gen/modf/4bb324.wgsl.expected.hlsl b/test/intrinsics/gen/modf/4bb324.wgsl.expected.hlsl
index 3401374..caf030c 100644
--- a/test/intrinsics/gen/modf/4bb324.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/modf/4bb324.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/4bb324.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = modf(vec4<f32>(), &arg_1);
+ ^^^^
+
void modf_4bb324() {
float4 arg_1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
float4 res = modf(float4(0.0f, 0.0f, 0.0f, 0.0f), arg_1);
diff --git a/test/intrinsics/gen/modf/4bb324.wgsl.expected.msl b/test/intrinsics/gen/modf/4bb324.wgsl.expected.msl
index 50d7c15..e87e26c 100644
--- a/test/intrinsics/gen/modf/4bb324.wgsl.expected.msl
+++ b/test/intrinsics/gen/modf/4bb324.wgsl.expected.msl
@@ -1,13 +1,25 @@
+intrinsics/gen/modf/4bb324.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = modf(vec4<f32>(), &arg_1);
+ ^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float4 tint_modf(float4 param_0, thread float4* param_1) {
+ float4 whole;
+ float4 fract = modf(param_0, whole);
+ *param_1 = whole;
+ return fract;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void modf_4bb324() {
float4 arg_1 = 0.0f;
- float4 res = modf(float4(), *(&(arg_1)));
+ float4 res = tint_modf(float4(), &(arg_1));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/modf/4bb324.wgsl.expected.spvasm b/test/intrinsics/gen/modf/4bb324.wgsl.expected.spvasm
index 6c2baae..e654ee6 100644
--- a/test/intrinsics/gen/modf/4bb324.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/4bb324.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/4bb324.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = modf(vec4<f32>(), &arg_1);
+ ^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/modf/4bb324.wgsl.expected.wgsl b/test/intrinsics/gen/modf/4bb324.wgsl.expected.wgsl
index 4cc1f48..61a8ca8 100644
--- a/test/intrinsics/gen/modf/4bb324.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/4bb324.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/4bb324.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = modf(vec4<f32>(), &arg_1);
+ ^^^^
+
fn modf_4bb324() {
var arg_1 : vec4<f32>;
var res : vec4<f32> = modf(vec4<f32>(), &(arg_1));
diff --git a/test/intrinsics/gen/modf/4fe3d9.wgsl.expected.hlsl b/test/intrinsics/gen/modf/4fe3d9.wgsl.expected.hlsl
index dec22ac..2731d81 100644
--- a/test/intrinsics/gen/modf/4fe3d9.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/modf/4fe3d9.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/4fe3d9.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = modf(vec3<f32>(), &arg_1);
+ ^^^^
+
void modf_4fe3d9() {
float3 arg_1 = float3(0.0f, 0.0f, 0.0f);
float3 res = modf(float3(0.0f, 0.0f, 0.0f), arg_1);
diff --git a/test/intrinsics/gen/modf/4fe3d9.wgsl.expected.msl b/test/intrinsics/gen/modf/4fe3d9.wgsl.expected.msl
index 49e45d3..66c8950 100644
--- a/test/intrinsics/gen/modf/4fe3d9.wgsl.expected.msl
+++ b/test/intrinsics/gen/modf/4fe3d9.wgsl.expected.msl
@@ -1,13 +1,25 @@
+intrinsics/gen/modf/4fe3d9.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = modf(vec3<f32>(), &arg_1);
+ ^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float3 tint_modf(float3 param_0, thread float3* param_1) {
+ float3 whole;
+ float3 fract = modf(param_0, whole);
+ *param_1 = whole;
+ return fract;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void modf_4fe3d9() {
float3 arg_1 = 0.0f;
- float3 res = modf(float3(), *(&(arg_1)));
+ float3 res = tint_modf(float3(), &(arg_1));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/modf/4fe3d9.wgsl.expected.spvasm b/test/intrinsics/gen/modf/4fe3d9.wgsl.expected.spvasm
index 9bd4558..a5dbaa0 100644
--- a/test/intrinsics/gen/modf/4fe3d9.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/4fe3d9.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/4fe3d9.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = modf(vec3<f32>(), &arg_1);
+ ^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/modf/4fe3d9.wgsl.expected.wgsl b/test/intrinsics/gen/modf/4fe3d9.wgsl.expected.wgsl
index 0f8e2a3..c145208 100644
--- a/test/intrinsics/gen/modf/4fe3d9.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/4fe3d9.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/4fe3d9.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = modf(vec3<f32>(), &arg_1);
+ ^^^^
+
fn modf_4fe3d9() {
var arg_1 : vec3<f32>;
var res : vec3<f32> = modf(vec3<f32>(), &(arg_1));
diff --git a/test/intrinsics/gen/modf/51e4c6.wgsl.expected.hlsl b/test/intrinsics/gen/modf/51e4c6.wgsl.expected.hlsl
index 8b28ed7..0d22edf 100644
--- a/test/intrinsics/gen/modf/51e4c6.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/modf/51e4c6.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/51e4c6.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = modf(vec2<f32>(), &arg_1);
+ ^^^^
+
void modf_51e4c6() {
float2 arg_1 = float2(0.0f, 0.0f);
float2 res = modf(float2(0.0f, 0.0f), arg_1);
diff --git a/test/intrinsics/gen/modf/51e4c6.wgsl.expected.msl b/test/intrinsics/gen/modf/51e4c6.wgsl.expected.msl
index 7cdaac4..ad760d5 100644
--- a/test/intrinsics/gen/modf/51e4c6.wgsl.expected.msl
+++ b/test/intrinsics/gen/modf/51e4c6.wgsl.expected.msl
@@ -1,13 +1,25 @@
+intrinsics/gen/modf/51e4c6.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = modf(vec2<f32>(), &arg_1);
+ ^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float2 tint_modf(float2 param_0, thread float2* param_1) {
+ float2 whole;
+ float2 fract = modf(param_0, whole);
+ *param_1 = whole;
+ return fract;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void modf_51e4c6() {
float2 arg_1 = 0.0f;
- float2 res = modf(float2(), *(&(arg_1)));
+ float2 res = tint_modf(float2(), &(arg_1));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/modf/51e4c6.wgsl.expected.spvasm b/test/intrinsics/gen/modf/51e4c6.wgsl.expected.spvasm
index 8952ffa..515cd31 100644
--- a/test/intrinsics/gen/modf/51e4c6.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/51e4c6.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/51e4c6.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = modf(vec2<f32>(), &arg_1);
+ ^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/modf/51e4c6.wgsl.expected.wgsl b/test/intrinsics/gen/modf/51e4c6.wgsl.expected.wgsl
index 209a9fb..700ffe5 100644
--- a/test/intrinsics/gen/modf/51e4c6.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/51e4c6.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/51e4c6.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = modf(vec2<f32>(), &arg_1);
+ ^^^^
+
fn modf_51e4c6() {
var arg_1 : vec2<f32>;
var res : vec2<f32> = modf(vec2<f32>(), &(arg_1));
diff --git a/test/intrinsics/gen/modf/546e09.wgsl.expected.hlsl b/test/intrinsics/gen/modf/546e09.wgsl.expected.hlsl
index 2df7bdf..1fcd41c 100644
--- a/test/intrinsics/gen/modf/546e09.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/modf/546e09.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/546e09.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = modf(1.0, &arg_1);
+ ^^^^
+
void modf_546e09() {
float arg_1 = 0.0f;
float res = modf(1.0f, arg_1);
diff --git a/test/intrinsics/gen/modf/546e09.wgsl.expected.msl b/test/intrinsics/gen/modf/546e09.wgsl.expected.msl
index 64e3475..a00cf02 100644
--- a/test/intrinsics/gen/modf/546e09.wgsl.expected.msl
+++ b/test/intrinsics/gen/modf/546e09.wgsl.expected.msl
@@ -1,13 +1,25 @@
+intrinsics/gen/modf/546e09.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = modf(1.0, &arg_1);
+ ^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float tint_modf(float param_0, thread float* param_1) {
+ float whole;
+ float fract = modf(param_0, whole);
+ *param_1 = whole;
+ return fract;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void modf_546e09() {
float arg_1 = 0.0f;
- float res = modf(1.0f, *(&(arg_1)));
+ float res = tint_modf(1.0f, &(arg_1));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/modf/546e09.wgsl.expected.spvasm b/test/intrinsics/gen/modf/546e09.wgsl.expected.spvasm
index 5a56fcf..8c70ec3 100644
--- a/test/intrinsics/gen/modf/546e09.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/546e09.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/546e09.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = modf(1.0, &arg_1);
+ ^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/modf/546e09.wgsl.expected.wgsl b/test/intrinsics/gen/modf/546e09.wgsl.expected.wgsl
index 331c087..ab9908d 100644
--- a/test/intrinsics/gen/modf/546e09.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/546e09.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/546e09.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = modf(1.0, &arg_1);
+ ^^^^
+
fn modf_546e09() {
var arg_1 : f32;
var res : f32 = modf(1.0, &(arg_1));
diff --git a/test/intrinsics/gen/modf/5e8476.wgsl.expected.hlsl b/test/intrinsics/gen/modf/5e8476.wgsl.expected.hlsl
index 8fabfe2..dbe27e6 100644
--- a/test/intrinsics/gen/modf/5e8476.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/modf/5e8476.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/5e8476.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = modf(1.0, &arg_1);
+ ^^^^
+
static float arg_1 = 0.0f;
void modf_5e8476() {
diff --git a/test/intrinsics/gen/modf/5e8476.wgsl.expected.msl b/test/intrinsics/gen/modf/5e8476.wgsl.expected.msl
index 7b9a4e6..531930f 100644
--- a/test/intrinsics/gen/modf/5e8476.wgsl.expected.msl
+++ b/test/intrinsics/gen/modf/5e8476.wgsl.expected.msl
@@ -1,12 +1,24 @@
+intrinsics/gen/modf/5e8476.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = modf(1.0, &arg_1);
+ ^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float tint_modf(float param_0, thread float* param_1) {
+ float whole;
+ float fract = modf(param_0, whole);
+ *param_1 = whole;
+ return fract;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void modf_5e8476(thread float* const tint_symbol_2) {
- float res = modf(1.0f, *(&(*(tint_symbol_2))));
+ float res = tint_modf(1.0f, &(*(tint_symbol_2)));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/modf/5e8476.wgsl.expected.spvasm b/test/intrinsics/gen/modf/5e8476.wgsl.expected.spvasm
index f3a8bdb..f9c55e2 100644
--- a/test/intrinsics/gen/modf/5e8476.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/5e8476.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/5e8476.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = modf(1.0, &arg_1);
+ ^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/modf/5e8476.wgsl.expected.wgsl b/test/intrinsics/gen/modf/5e8476.wgsl.expected.wgsl
index 6d26235..5888c21 100644
--- a/test/intrinsics/gen/modf/5e8476.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/5e8476.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/5e8476.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = modf(1.0, &arg_1);
+ ^^^^
+
var<private> arg_1 : f32;
fn modf_5e8476() {
diff --git a/test/intrinsics/gen/modf/684d46.wgsl b/test/intrinsics/gen/modf/684d46.wgsl
new file mode 100644
index 0000000..d983b72
--- /dev/null
+++ b/test/intrinsics/gen/modf/684d46.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2021 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/intrinsic-gen
+// using the template:
+// test/intrinsics/intrinsics.wgsl.tmpl
+// and the intrinsic defintion file:
+// src/intrinsics.def
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// fn modf(f32) -> _modf_result
+fn modf_684d46() {
+ var res = modf(1.0);
+}
+
+[[stage(vertex)]]
+fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+ modf_684d46();
+ return vec4<f32>();
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+ modf_684d46();
+}
+
+[[stage(compute), workgroup_size(1)]]
+fn compute_main() {
+ modf_684d46();
+}
diff --git a/test/intrinsics/gen/modf/684d46.wgsl.expected.hlsl b/test/intrinsics/gen/modf/684d46.wgsl.expected.hlsl
new file mode 100644
index 0000000..77b05b7
--- /dev/null
+++ b/test/intrinsics/gen/modf/684d46.wgsl.expected.hlsl
@@ -0,0 +1,35 @@
+struct modf_result {
+ float fract;
+ float whole;
+};
+modf_result tint_modf(float param_0) {
+ float whole;
+ float fract = modf(param_0, whole);
+ modf_result result = {fract, whole};
+ return result;
+}
+
+void modf_684d46() {
+ modf_result res = tint_modf(1.0f);
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+tint_symbol vertex_main() {
+ modf_684d46();
+ const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
+ return tint_symbol_1;
+}
+
+void fragment_main() {
+ modf_684d46();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ modf_684d46();
+ return;
+}
diff --git a/test/intrinsics/gen/modf/684d46.wgsl.expected.msl b/test/intrinsics/gen/modf/684d46.wgsl.expected.msl
new file mode 100644
index 0000000..9944617
--- /dev/null
+++ b/test/intrinsics/gen/modf/684d46.wgsl.expected.msl
@@ -0,0 +1,38 @@
+#include <metal_stdlib>
+
+using namespace metal;
+
+struct modf_result {
+ float fract;
+ float whole;
+};
+modf_result tint_modf(float param_0) {
+ float whole;
+ float fract = modf(param_0, whole);
+ return {fract, whole};
+}
+
+struct tint_symbol {
+ float4 value [[position]];
+};
+
+void modf_684d46() {
+ modf_result res = tint_modf(1.0f);
+}
+
+vertex tint_symbol vertex_main() {
+ modf_684d46();
+ tint_symbol const tint_symbol_1 = {.value=float4()};
+ return tint_symbol_1;
+}
+
+fragment void fragment_main() {
+ modf_684d46();
+ return;
+}
+
+kernel void compute_main() {
+ modf_684d46();
+ return;
+}
+
diff --git a/test/intrinsics/gen/modf/684d46.wgsl.expected.spvasm b/test/intrinsics/gen/modf/684d46.wgsl.expected.spvasm
new file mode 100644
index 0000000..9a37b68
--- /dev/null
+++ b/test/intrinsics/gen/modf/684d46.wgsl.expected.spvasm
@@ -0,0 +1,74 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 34
+; Schema: 0
+ OpCapability Shader
+ %15 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical GLSL450
+ OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize %tint_symbol_1
+ OpEntryPoint Fragment %fragment_main "fragment_main"
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %fragment_main OriginUpperLeft
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %tint_pointsize "tint_pointsize"
+ OpName %tint_symbol_1 "tint_symbol_1"
+ OpName %modf_684d46 "modf_684d46"
+ OpName %_modf_result "_modf_result"
+ OpMemberName %_modf_result 0 "fract"
+ OpMemberName %_modf_result 1 "whole"
+ OpName %res "res"
+ OpName %tint_symbol_2 "tint_symbol_2"
+ OpName %tint_symbol "tint_symbol"
+ OpName %vertex_main "vertex_main"
+ OpName %fragment_main "fragment_main"
+ OpName %compute_main "compute_main"
+ OpDecorate %tint_pointsize BuiltIn PointSize
+ OpDecorate %tint_symbol_1 BuiltIn Position
+ OpMemberDecorate %_modf_result 0 Offset 0
+ OpMemberDecorate %_modf_result 1 Offset 4
+ %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+ %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+ %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %8 = OpConstantNull %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+ %void = OpTypeVoid
+ %9 = OpTypeFunction %void
+%_modf_result = OpTypeStruct %float %float
+ %float_1 = OpConstant %float 1
+%_ptr_Function__modf_result = OpTypePointer Function %_modf_result
+ %19 = OpConstantNull %_modf_result
+ %20 = OpTypeFunction %void %v4float
+%modf_684d46 = OpFunction %void None %9
+ %12 = OpLabel
+ %res = OpVariable %_ptr_Function__modf_result Function %19
+ %13 = OpExtInst %_modf_result %15 ModfStruct %float_1
+ OpStore %res %13
+ OpReturn
+ OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %20
+%tint_symbol = OpFunctionParameter %v4float
+ %23 = OpLabel
+ OpStore %tint_symbol_1 %tint_symbol
+ OpReturn
+ OpFunctionEnd
+%vertex_main = OpFunction %void None %9
+ %25 = OpLabel
+ OpStore %tint_pointsize %float_1
+ %26 = OpFunctionCall %void %modf_684d46
+ %27 = OpFunctionCall %void %tint_symbol_2 %8
+ OpReturn
+ OpFunctionEnd
+%fragment_main = OpFunction %void None %9
+ %29 = OpLabel
+ %30 = OpFunctionCall %void %modf_684d46
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %9
+ %32 = OpLabel
+ %33 = OpFunctionCall %void %modf_684d46
+ OpReturn
+ OpFunctionEnd
diff --git a/test/intrinsics/gen/modf/684d46.wgsl.expected.wgsl b/test/intrinsics/gen/modf/684d46.wgsl.expected.wgsl
new file mode 100644
index 0000000..3686ead
--- /dev/null
+++ b/test/intrinsics/gen/modf/684d46.wgsl.expected.wgsl
@@ -0,0 +1,19 @@
+fn modf_684d46() {
+ var res = modf(1.0);
+}
+
+[[stage(vertex)]]
+fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+ modf_684d46();
+ return vec4<f32>();
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+ modf_684d46();
+}
+
+[[stage(compute), workgroup_size(1)]]
+fn compute_main() {
+ modf_684d46();
+}
diff --git a/test/intrinsics/gen/modf/86441c.wgsl.expected.hlsl b/test/intrinsics/gen/modf/86441c.wgsl.expected.hlsl
index 21ca45c..8106372 100644
--- a/test/intrinsics/gen/modf/86441c.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/modf/86441c.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/86441c.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = modf(vec2<f32>(), &arg_1);
+ ^^^^
+
void modf_86441c() {
float2 arg_1 = float2(0.0f, 0.0f);
float2 res = modf(float2(0.0f, 0.0f), arg_1);
diff --git a/test/intrinsics/gen/modf/86441c.wgsl.expected.msl b/test/intrinsics/gen/modf/86441c.wgsl.expected.msl
index 900085d..bd5a595 100644
--- a/test/intrinsics/gen/modf/86441c.wgsl.expected.msl
+++ b/test/intrinsics/gen/modf/86441c.wgsl.expected.msl
@@ -1,13 +1,25 @@
+intrinsics/gen/modf/86441c.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = modf(vec2<f32>(), &arg_1);
+ ^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float2 tint_modf(float2 param_0, thread float2* param_1) {
+ float2 whole;
+ float2 fract = modf(param_0, whole);
+ *param_1 = whole;
+ return fract;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void modf_86441c() {
float2 arg_1 = 0.0f;
- float2 res = modf(float2(), *(&(arg_1)));
+ float2 res = tint_modf(float2(), &(arg_1));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/modf/86441c.wgsl.expected.spvasm b/test/intrinsics/gen/modf/86441c.wgsl.expected.spvasm
index 7a41b14..3567057 100644
--- a/test/intrinsics/gen/modf/86441c.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/86441c.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/86441c.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = modf(vec2<f32>(), &arg_1);
+ ^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/modf/86441c.wgsl.expected.wgsl b/test/intrinsics/gen/modf/86441c.wgsl.expected.wgsl
index a9c1e38..f2940fe 100644
--- a/test/intrinsics/gen/modf/86441c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/86441c.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/86441c.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = modf(vec2<f32>(), &arg_1);
+ ^^^^
+
fn modf_86441c() {
var arg_1 : vec2<f32>;
var res : vec2<f32> = modf(vec2<f32>(), &(arg_1));
diff --git a/test/intrinsics/gen/modf/955651.wgsl.expected.hlsl b/test/intrinsics/gen/modf/955651.wgsl.expected.hlsl
index 02cf941..de9a0a0 100644
--- a/test/intrinsics/gen/modf/955651.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/modf/955651.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/955651.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = modf(vec3<f32>(), &arg_1);
+ ^^^^
+
void modf_955651() {
float3 arg_1 = float3(0.0f, 0.0f, 0.0f);
float3 res = modf(float3(0.0f, 0.0f, 0.0f), arg_1);
diff --git a/test/intrinsics/gen/modf/955651.wgsl.expected.msl b/test/intrinsics/gen/modf/955651.wgsl.expected.msl
index 25b521c..937fbe1 100644
--- a/test/intrinsics/gen/modf/955651.wgsl.expected.msl
+++ b/test/intrinsics/gen/modf/955651.wgsl.expected.msl
@@ -1,13 +1,25 @@
+intrinsics/gen/modf/955651.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = modf(vec3<f32>(), &arg_1);
+ ^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float3 tint_modf(float3 param_0, thread float3* param_1) {
+ float3 whole;
+ float3 fract = modf(param_0, whole);
+ *param_1 = whole;
+ return fract;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void modf_955651() {
float3 arg_1 = 0.0f;
- float3 res = modf(float3(), *(&(arg_1)));
+ float3 res = tint_modf(float3(), &(arg_1));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/modf/955651.wgsl.expected.spvasm b/test/intrinsics/gen/modf/955651.wgsl.expected.spvasm
index 192d324..01fe4be 100644
--- a/test/intrinsics/gen/modf/955651.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/955651.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/955651.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = modf(vec3<f32>(), &arg_1);
+ ^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/modf/955651.wgsl.expected.wgsl b/test/intrinsics/gen/modf/955651.wgsl.expected.wgsl
index bf94c38..aab1a1e 100644
--- a/test/intrinsics/gen/modf/955651.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/955651.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/955651.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = modf(vec3<f32>(), &arg_1);
+ ^^^^
+
fn modf_955651() {
var arg_1 : vec3<f32>;
var res : vec3<f32> = modf(vec3<f32>(), &(arg_1));
diff --git a/test/intrinsics/gen/modf/9b44a9.wgsl b/test/intrinsics/gen/modf/9b44a9.wgsl
new file mode 100644
index 0000000..2556b01
--- /dev/null
+++ b/test/intrinsics/gen/modf/9b44a9.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2021 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/intrinsic-gen
+// using the template:
+// test/intrinsics/intrinsics.wgsl.tmpl
+// and the intrinsic defintion file:
+// src/intrinsics.def
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// fn modf(vec<4, f32>) -> _modf_result_vec<4>
+fn modf_9b44a9() {
+ var res = modf(vec4<f32>());
+}
+
+[[stage(vertex)]]
+fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+ modf_9b44a9();
+ return vec4<f32>();
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+ modf_9b44a9();
+}
+
+[[stage(compute), workgroup_size(1)]]
+fn compute_main() {
+ modf_9b44a9();
+}
diff --git a/test/intrinsics/gen/modf/9b44a9.wgsl.expected.hlsl b/test/intrinsics/gen/modf/9b44a9.wgsl.expected.hlsl
new file mode 100644
index 0000000..56faa20
--- /dev/null
+++ b/test/intrinsics/gen/modf/9b44a9.wgsl.expected.hlsl
@@ -0,0 +1,35 @@
+struct modf_result_vec4 {
+ float4 fract;
+ float4 whole;
+};
+modf_result_vec4 tint_modf(float4 param_0) {
+ float4 whole;
+ float4 fract = modf(param_0, whole);
+ modf_result_vec4 result = {fract, whole};
+ return result;
+}
+
+void modf_9b44a9() {
+ modf_result_vec4 res = tint_modf(float4(0.0f, 0.0f, 0.0f, 0.0f));
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+tint_symbol vertex_main() {
+ modf_9b44a9();
+ const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
+ return tint_symbol_1;
+}
+
+void fragment_main() {
+ modf_9b44a9();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ modf_9b44a9();
+ return;
+}
diff --git a/test/intrinsics/gen/modf/9b44a9.wgsl.expected.msl b/test/intrinsics/gen/modf/9b44a9.wgsl.expected.msl
new file mode 100644
index 0000000..86541b3
--- /dev/null
+++ b/test/intrinsics/gen/modf/9b44a9.wgsl.expected.msl
@@ -0,0 +1,38 @@
+#include <metal_stdlib>
+
+using namespace metal;
+
+struct modf_result_vec4 {
+ float4 fract;
+ float4 whole;
+};
+modf_result_vec4 tint_modf(float4 param_0) {
+ float4 whole;
+ float4 fract = modf(param_0, whole);
+ return {fract, whole};
+}
+
+struct tint_symbol {
+ float4 value [[position]];
+};
+
+void modf_9b44a9() {
+ modf_result_vec4 res = tint_modf(float4());
+}
+
+vertex tint_symbol vertex_main() {
+ modf_9b44a9();
+ tint_symbol const tint_symbol_1 = {.value=float4()};
+ return tint_symbol_1;
+}
+
+fragment void fragment_main() {
+ modf_9b44a9();
+ return;
+}
+
+kernel void compute_main() {
+ modf_9b44a9();
+ return;
+}
+
diff --git a/test/intrinsics/gen/modf/9b44a9.wgsl.expected.spvasm b/test/intrinsics/gen/modf/9b44a9.wgsl.expected.spvasm
new file mode 100644
index 0000000..c15a37c
--- /dev/null
+++ b/test/intrinsics/gen/modf/9b44a9.wgsl.expected.spvasm
@@ -0,0 +1,74 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 34
+; Schema: 0
+ OpCapability Shader
+ %15 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical GLSL450
+ OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize %tint_symbol_1
+ OpEntryPoint Fragment %fragment_main "fragment_main"
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %fragment_main OriginUpperLeft
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %tint_pointsize "tint_pointsize"
+ OpName %tint_symbol_1 "tint_symbol_1"
+ OpName %modf_9b44a9 "modf_9b44a9"
+ OpName %_modf_result_vec4 "_modf_result_vec4"
+ OpMemberName %_modf_result_vec4 0 "fract"
+ OpMemberName %_modf_result_vec4 1 "whole"
+ OpName %res "res"
+ OpName %tint_symbol_2 "tint_symbol_2"
+ OpName %tint_symbol "tint_symbol"
+ OpName %vertex_main "vertex_main"
+ OpName %fragment_main "fragment_main"
+ OpName %compute_main "compute_main"
+ OpDecorate %tint_pointsize BuiltIn PointSize
+ OpDecorate %tint_symbol_1 BuiltIn Position
+ OpMemberDecorate %_modf_result_vec4 0 Offset 0
+ OpMemberDecorate %_modf_result_vec4 1 Offset 16
+ %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+ %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+ %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %8 = OpConstantNull %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+ %void = OpTypeVoid
+ %9 = OpTypeFunction %void
+%_modf_result_vec4 = OpTypeStruct %v4float %v4float
+%_ptr_Function__modf_result_vec4 = OpTypePointer Function %_modf_result_vec4
+ %18 = OpConstantNull %_modf_result_vec4
+ %19 = OpTypeFunction %void %v4float
+ %float_1 = OpConstant %float 1
+%modf_9b44a9 = OpFunction %void None %9
+ %12 = OpLabel
+ %res = OpVariable %_ptr_Function__modf_result_vec4 Function %18
+ %13 = OpExtInst %_modf_result_vec4 %15 ModfStruct %8
+ OpStore %res %13
+ OpReturn
+ OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %19
+%tint_symbol = OpFunctionParameter %v4float
+ %22 = OpLabel
+ OpStore %tint_symbol_1 %tint_symbol
+ OpReturn
+ OpFunctionEnd
+%vertex_main = OpFunction %void None %9
+ %24 = OpLabel
+ OpStore %tint_pointsize %float_1
+ %26 = OpFunctionCall %void %modf_9b44a9
+ %27 = OpFunctionCall %void %tint_symbol_2 %8
+ OpReturn
+ OpFunctionEnd
+%fragment_main = OpFunction %void None %9
+ %29 = OpLabel
+ %30 = OpFunctionCall %void %modf_9b44a9
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %9
+ %32 = OpLabel
+ %33 = OpFunctionCall %void %modf_9b44a9
+ OpReturn
+ OpFunctionEnd
diff --git a/test/intrinsics/gen/modf/9b44a9.wgsl.expected.wgsl b/test/intrinsics/gen/modf/9b44a9.wgsl.expected.wgsl
new file mode 100644
index 0000000..2009bff
--- /dev/null
+++ b/test/intrinsics/gen/modf/9b44a9.wgsl.expected.wgsl
@@ -0,0 +1,19 @@
+fn modf_9b44a9() {
+ var res = modf(vec4<f32>());
+}
+
+[[stage(vertex)]]
+fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+ modf_9b44a9();
+ return vec4<f32>();
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+ modf_9b44a9();
+}
+
+[[stage(compute), workgroup_size(1)]]
+fn compute_main() {
+ modf_9b44a9();
+}
diff --git a/test/intrinsics/gen/modf/9c6a91.wgsl.expected.hlsl b/test/intrinsics/gen/modf/9c6a91.wgsl.expected.hlsl
index 26b8eaf..112167d 100644
--- a/test/intrinsics/gen/modf/9c6a91.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/modf/9c6a91.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/9c6a91.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = modf(vec2<f32>(), &arg_1);
+ ^^^^
+
static float2 arg_1 = float2(0.0f, 0.0f);
void modf_9c6a91() {
diff --git a/test/intrinsics/gen/modf/9c6a91.wgsl.expected.msl b/test/intrinsics/gen/modf/9c6a91.wgsl.expected.msl
index 475c8e0..b702b5c 100644
--- a/test/intrinsics/gen/modf/9c6a91.wgsl.expected.msl
+++ b/test/intrinsics/gen/modf/9c6a91.wgsl.expected.msl
@@ -1,12 +1,24 @@
+intrinsics/gen/modf/9c6a91.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = modf(vec2<f32>(), &arg_1);
+ ^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float2 tint_modf(float2 param_0, thread float2* param_1) {
+ float2 whole;
+ float2 fract = modf(param_0, whole);
+ *param_1 = whole;
+ return fract;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void modf_9c6a91(thread float2* const tint_symbol_2) {
- float2 res = modf(float2(), *(&(*(tint_symbol_2))));
+ float2 res = tint_modf(float2(), &(*(tint_symbol_2)));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/modf/9c6a91.wgsl.expected.spvasm b/test/intrinsics/gen/modf/9c6a91.wgsl.expected.spvasm
index 73bad5d..5ebe38b 100644
--- a/test/intrinsics/gen/modf/9c6a91.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/9c6a91.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/9c6a91.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = modf(vec2<f32>(), &arg_1);
+ ^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/modf/9c6a91.wgsl.expected.wgsl b/test/intrinsics/gen/modf/9c6a91.wgsl.expected.wgsl
index 87aae4f..dff1475 100644
--- a/test/intrinsics/gen/modf/9c6a91.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/9c6a91.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/9c6a91.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = modf(vec2<f32>(), &arg_1);
+ ^^^^
+
var<private> arg_1 : vec2<f32>;
fn modf_9c6a91() {
diff --git a/test/intrinsics/gen/modf/9cecfc.wgsl.expected.hlsl b/test/intrinsics/gen/modf/9cecfc.wgsl.expected.hlsl
index 72befc3..1197885 100644
--- a/test/intrinsics/gen/modf/9cecfc.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/modf/9cecfc.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/9cecfc.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = modf(vec3<f32>(), &arg_1);
+ ^^^^
+
static float3 arg_1 = float3(0.0f, 0.0f, 0.0f);
void modf_9cecfc() {
diff --git a/test/intrinsics/gen/modf/9cecfc.wgsl.expected.msl b/test/intrinsics/gen/modf/9cecfc.wgsl.expected.msl
index 617d3c7..2a8186e 100644
--- a/test/intrinsics/gen/modf/9cecfc.wgsl.expected.msl
+++ b/test/intrinsics/gen/modf/9cecfc.wgsl.expected.msl
@@ -1,12 +1,24 @@
+intrinsics/gen/modf/9cecfc.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = modf(vec3<f32>(), &arg_1);
+ ^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float3 tint_modf(float3 param_0, thread float3* param_1) {
+ float3 whole;
+ float3 fract = modf(param_0, whole);
+ *param_1 = whole;
+ return fract;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void modf_9cecfc(thread float3* const tint_symbol_2) {
- float3 res = modf(float3(), *(&(*(tint_symbol_2))));
+ float3 res = tint_modf(float3(), &(*(tint_symbol_2)));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/modf/9cecfc.wgsl.expected.spvasm b/test/intrinsics/gen/modf/9cecfc.wgsl.expected.spvasm
index 0700451..70dd5db 100644
--- a/test/intrinsics/gen/modf/9cecfc.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/9cecfc.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/9cecfc.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = modf(vec3<f32>(), &arg_1);
+ ^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/modf/9cecfc.wgsl.expected.wgsl b/test/intrinsics/gen/modf/9cecfc.wgsl.expected.wgsl
index 48ea3c8..7ad6c49 100644
--- a/test/intrinsics/gen/modf/9cecfc.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/9cecfc.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/9cecfc.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = modf(vec3<f32>(), &arg_1);
+ ^^^^
+
var<private> arg_1 : vec3<f32>;
fn modf_9cecfc() {
diff --git a/test/intrinsics/gen/modf/a128ab.wgsl.expected.hlsl b/test/intrinsics/gen/modf/a128ab.wgsl.expected.hlsl
index b900c7b..8bb5fd8 100644
--- a/test/intrinsics/gen/modf/a128ab.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/modf/a128ab.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/a128ab.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = modf(vec2<f32>(), &arg_1);
+ ^^^^
+
groupshared float2 arg_1;
void modf_a128ab() {
diff --git a/test/intrinsics/gen/modf/a128ab.wgsl.expected.msl b/test/intrinsics/gen/modf/a128ab.wgsl.expected.msl
index bc45ed1..175efd8 100644
--- a/test/intrinsics/gen/modf/a128ab.wgsl.expected.msl
+++ b/test/intrinsics/gen/modf/a128ab.wgsl.expected.msl
@@ -1,10 +1,20 @@
-SKIP: FAILED
+intrinsics/gen/modf/a128ab.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = modf(vec2<f32>(), &arg_1);
+ ^^^^
#include <metal_stdlib>
using namespace metal;
+
+float2 tint_modf(float2 param_0, threadgroup float2* param_1) {
+ float2 whole;
+ float2 fract = modf(param_0, whole);
+ *param_1 = whole;
+ return fract;
+}
+
void modf_a128ab(threadgroup float2* const tint_symbol_1) {
- float2 res = modf(float2(), *(&(*(tint_symbol_1))));
+ float2 res = tint_modf(float2(), &(*(tint_symbol_1)));
}
kernel void compute_main(uint local_invocation_index [[thread_index_in_threadgroup]]) {
@@ -17,44 +27,3 @@
return;
}
-Compilation failed:
-
-program_source:5:16: error: no matching function for call to 'modf'
- float2 res = modf(float2(), *(&(*(tint_symbol_1))));
- ^~~~
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:4854:19: note: candidate function not viable: address space mismatch in 2nd argument ('threadgroup float2' (vector of 2 'float' values)), parameter type must be 'metal::float2 &' (aka 'float2 &')
-METAL_FUNC float2 modf(float2 x, thread float2 &intval)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3142:17: note: candidate function not viable: no known conversion from 'float2' (vector of 2 'float' values) to 'half' for 1st argument
-METAL_FUNC half modf(half x, thread half &intval)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3386:18: note: candidate function not viable: no known conversion from 'float2' (vector of 2 'float' values) to 'metal::half2' (aka 'half2') for 1st argument
-METAL_FUNC half2 modf(half2 x, thread half2 &intval)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3630:18: note: candidate function not viable: no known conversion from 'float2' (vector of 2 'float' values) to 'metal::half3' (aka 'half3') for 1st argument
-METAL_FUNC half3 modf(half3 x, thread half3 &intval)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3874:18: note: candidate function not viable: no known conversion from 'float2' (vector of 2 'float' values) to 'metal::half4' (aka 'half4') for 1st argument
-METAL_FUNC half4 modf(half4 x, thread half4 &intval)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:4610:18: note: candidate function not viable: no known conversion from 'float2' (vector of 2 'float' values) to 'float' for 1st argument
-METAL_FUNC float modf(float x, thread float &intval)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:5098:19: note: candidate function not viable: no known conversion from 'float2' (vector of 2 'float' values) to 'metal::float3' (aka 'float3') for 1st argument
-METAL_FUNC float3 modf(float3 x, thread float3 &intval)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:5342:19: note: candidate function not viable: no known conversion from 'float2' (vector of 2 'float' values) to 'metal::float4' (aka 'float4') for 1st argument
-METAL_FUNC float4 modf(float4 x, thread float4 &intval)
- ^
-program_source:10:31: warning: equality comparison with extraneous parentheses
- if ((local_invocation_index == 0u)) {
- ~~~~~~~~~~~~~~~~~~~~~~~^~~~~
-program_source:10:31: note: remove extraneous parentheses around the comparison to silence this warning
- if ((local_invocation_index == 0u)) {
- ~ ^ ~
-program_source:10:31: note: use '=' to turn this equality comparison into an assignment
- if ((local_invocation_index == 0u)) {
- ^~
- =
-
-
diff --git a/test/intrinsics/gen/modf/a128ab.wgsl.expected.spvasm b/test/intrinsics/gen/modf/a128ab.wgsl.expected.spvasm
index ef64e6d..bb3dca7 100644
--- a/test/intrinsics/gen/modf/a128ab.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/a128ab.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/a128ab.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = modf(vec2<f32>(), &arg_1);
+ ^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/modf/a128ab.wgsl.expected.wgsl b/test/intrinsics/gen/modf/a128ab.wgsl.expected.wgsl
index fffc39b..89a4a28 100644
--- a/test/intrinsics/gen/modf/a128ab.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/a128ab.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/a128ab.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = modf(vec2<f32>(), &arg_1);
+ ^^^^
+
var<workgroup> arg_1 : vec2<f32>;
fn modf_a128ab() {
diff --git a/test/intrinsics/gen/modf/a54eca.wgsl.expected.hlsl b/test/intrinsics/gen/modf/a54eca.wgsl.expected.hlsl
index 59e0e3c..d3ed29a 100644
--- a/test/intrinsics/gen/modf/a54eca.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/modf/a54eca.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/a54eca.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = modf(vec2<f32>(), &arg_1);
+ ^^^^
+
void modf_a54eca() {
float2 arg_1 = float2(0.0f, 0.0f);
float2 res = modf(float2(0.0f, 0.0f), arg_1);
diff --git a/test/intrinsics/gen/modf/a54eca.wgsl.expected.msl b/test/intrinsics/gen/modf/a54eca.wgsl.expected.msl
index 6c583ed..94ea876 100644
--- a/test/intrinsics/gen/modf/a54eca.wgsl.expected.msl
+++ b/test/intrinsics/gen/modf/a54eca.wgsl.expected.msl
@@ -1,13 +1,25 @@
+intrinsics/gen/modf/a54eca.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = modf(vec2<f32>(), &arg_1);
+ ^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float2 tint_modf(float2 param_0, thread float2* param_1) {
+ float2 whole;
+ float2 fract = modf(param_0, whole);
+ *param_1 = whole;
+ return fract;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void modf_a54eca() {
float2 arg_1 = 0.0f;
- float2 res = modf(float2(), *(&(arg_1)));
+ float2 res = tint_modf(float2(), &(arg_1));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/modf/a54eca.wgsl.expected.spvasm b/test/intrinsics/gen/modf/a54eca.wgsl.expected.spvasm
index c8d52c5..99928e1 100644
--- a/test/intrinsics/gen/modf/a54eca.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/a54eca.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/a54eca.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = modf(vec2<f32>(), &arg_1);
+ ^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/modf/a54eca.wgsl.expected.wgsl b/test/intrinsics/gen/modf/a54eca.wgsl.expected.wgsl
index 39c4a77..4e886cd 100644
--- a/test/intrinsics/gen/modf/a54eca.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/a54eca.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/a54eca.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec2<f32> = modf(vec2<f32>(), &arg_1);
+ ^^^^
+
fn modf_a54eca() {
var arg_1 : vec2<f32>;
var res : vec2<f32> = modf(vec2<f32>(), &(arg_1));
diff --git a/test/intrinsics/gen/modf/bb9088.wgsl.expected.hlsl b/test/intrinsics/gen/modf/bb9088.wgsl.expected.hlsl
index 22f570d..7a37367 100644
--- a/test/intrinsics/gen/modf/bb9088.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/modf/bb9088.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/bb9088.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = modf(vec3<f32>(), &arg_1);
+ ^^^^
+
groupshared float3 arg_1;
void modf_bb9088() {
diff --git a/test/intrinsics/gen/modf/bb9088.wgsl.expected.msl b/test/intrinsics/gen/modf/bb9088.wgsl.expected.msl
index 44671b2..45dc355 100644
--- a/test/intrinsics/gen/modf/bb9088.wgsl.expected.msl
+++ b/test/intrinsics/gen/modf/bb9088.wgsl.expected.msl
@@ -1,10 +1,20 @@
-SKIP: FAILED
+intrinsics/gen/modf/bb9088.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = modf(vec3<f32>(), &arg_1);
+ ^^^^
#include <metal_stdlib>
using namespace metal;
+
+float3 tint_modf(float3 param_0, threadgroup float3* param_1) {
+ float3 whole;
+ float3 fract = modf(param_0, whole);
+ *param_1 = whole;
+ return fract;
+}
+
void modf_bb9088(threadgroup float3* const tint_symbol_1) {
- float3 res = modf(float3(), *(&(*(tint_symbol_1))));
+ float3 res = tint_modf(float3(), &(*(tint_symbol_1)));
}
kernel void compute_main(uint local_invocation_index [[thread_index_in_threadgroup]]) {
@@ -17,44 +27,3 @@
return;
}
-Compilation failed:
-
-program_source:5:16: error: no matching function for call to 'modf'
- float3 res = modf(float3(), *(&(*(tint_symbol_1))));
- ^~~~
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:5098:19: note: candidate function not viable: address space mismatch in 2nd argument ('threadgroup float3' (vector of 3 'float' values)), parameter type must be 'metal::float3 &' (aka 'float3 &')
-METAL_FUNC float3 modf(float3 x, thread float3 &intval)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3142:17: note: candidate function not viable: no known conversion from 'float3' (vector of 3 'float' values) to 'half' for 1st argument
-METAL_FUNC half modf(half x, thread half &intval)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3386:18: note: candidate function not viable: no known conversion from 'float3' (vector of 3 'float' values) to 'metal::half2' (aka 'half2') for 1st argument
-METAL_FUNC half2 modf(half2 x, thread half2 &intval)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3630:18: note: candidate function not viable: no known conversion from 'float3' (vector of 3 'float' values) to 'metal::half3' (aka 'half3') for 1st argument
-METAL_FUNC half3 modf(half3 x, thread half3 &intval)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3874:18: note: candidate function not viable: no known conversion from 'float3' (vector of 3 'float' values) to 'metal::half4' (aka 'half4') for 1st argument
-METAL_FUNC half4 modf(half4 x, thread half4 &intval)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:4610:18: note: candidate function not viable: no known conversion from 'float3' (vector of 3 'float' values) to 'float' for 1st argument
-METAL_FUNC float modf(float x, thread float &intval)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:4854:19: note: candidate function not viable: no known conversion from 'float3' (vector of 3 'float' values) to 'metal::float2' (aka 'float2') for 1st argument
-METAL_FUNC float2 modf(float2 x, thread float2 &intval)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:5342:19: note: candidate function not viable: no known conversion from 'float3' (vector of 3 'float' values) to 'metal::float4' (aka 'float4') for 1st argument
-METAL_FUNC float4 modf(float4 x, thread float4 &intval)
- ^
-program_source:10:31: warning: equality comparison with extraneous parentheses
- if ((local_invocation_index == 0u)) {
- ~~~~~~~~~~~~~~~~~~~~~~~^~~~~
-program_source:10:31: note: remove extraneous parentheses around the comparison to silence this warning
- if ((local_invocation_index == 0u)) {
- ~ ^ ~
-program_source:10:31: note: use '=' to turn this equality comparison into an assignment
- if ((local_invocation_index == 0u)) {
- ^~
- =
-
-
diff --git a/test/intrinsics/gen/modf/bb9088.wgsl.expected.spvasm b/test/intrinsics/gen/modf/bb9088.wgsl.expected.spvasm
index df3e8e6..51b1647 100644
--- a/test/intrinsics/gen/modf/bb9088.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/bb9088.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/bb9088.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = modf(vec3<f32>(), &arg_1);
+ ^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/modf/bb9088.wgsl.expected.wgsl b/test/intrinsics/gen/modf/bb9088.wgsl.expected.wgsl
index bd9e14c..50f629e 100644
--- a/test/intrinsics/gen/modf/bb9088.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/bb9088.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/bb9088.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec3<f32> = modf(vec3<f32>(), &arg_1);
+ ^^^^
+
var<workgroup> arg_1 : vec3<f32>;
fn modf_bb9088() {
diff --git a/test/intrinsics/gen/modf/c87851.wgsl b/test/intrinsics/gen/modf/c87851.wgsl
new file mode 100644
index 0000000..55f7ea8
--- /dev/null
+++ b/test/intrinsics/gen/modf/c87851.wgsl
@@ -0,0 +1,45 @@
+// Copyright 2021 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/intrinsic-gen
+// using the template:
+// test/intrinsics/intrinsics.wgsl.tmpl
+// and the intrinsic defintion file:
+// src/intrinsics.def
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// fn modf(vec<2, f32>) -> _modf_result_vec<2>
+fn modf_c87851() {
+ var res = modf(vec2<f32>());
+}
+
+[[stage(vertex)]]
+fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+ modf_c87851();
+ return vec4<f32>();
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+ modf_c87851();
+}
+
+[[stage(compute), workgroup_size(1)]]
+fn compute_main() {
+ modf_c87851();
+}
diff --git a/test/intrinsics/gen/modf/c87851.wgsl.expected.hlsl b/test/intrinsics/gen/modf/c87851.wgsl.expected.hlsl
new file mode 100644
index 0000000..bffd646
--- /dev/null
+++ b/test/intrinsics/gen/modf/c87851.wgsl.expected.hlsl
@@ -0,0 +1,35 @@
+struct modf_result_vec2 {
+ float2 fract;
+ float2 whole;
+};
+modf_result_vec2 tint_modf(float2 param_0) {
+ float2 whole;
+ float2 fract = modf(param_0, whole);
+ modf_result_vec2 result = {fract, whole};
+ return result;
+}
+
+void modf_c87851() {
+ modf_result_vec2 res = tint_modf(float2(0.0f, 0.0f));
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+tint_symbol vertex_main() {
+ modf_c87851();
+ const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
+ return tint_symbol_1;
+}
+
+void fragment_main() {
+ modf_c87851();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ modf_c87851();
+ return;
+}
diff --git a/test/intrinsics/gen/modf/c87851.wgsl.expected.msl b/test/intrinsics/gen/modf/c87851.wgsl.expected.msl
new file mode 100644
index 0000000..4bcc460
--- /dev/null
+++ b/test/intrinsics/gen/modf/c87851.wgsl.expected.msl
@@ -0,0 +1,38 @@
+#include <metal_stdlib>
+
+using namespace metal;
+
+struct modf_result_vec2 {
+ float2 fract;
+ float2 whole;
+};
+modf_result_vec2 tint_modf(float2 param_0) {
+ float2 whole;
+ float2 fract = modf(param_0, whole);
+ return {fract, whole};
+}
+
+struct tint_symbol {
+ float4 value [[position]];
+};
+
+void modf_c87851() {
+ modf_result_vec2 res = tint_modf(float2());
+}
+
+vertex tint_symbol vertex_main() {
+ modf_c87851();
+ tint_symbol const tint_symbol_1 = {.value=float4()};
+ return tint_symbol_1;
+}
+
+fragment void fragment_main() {
+ modf_c87851();
+ return;
+}
+
+kernel void compute_main() {
+ modf_c87851();
+ return;
+}
+
diff --git a/test/intrinsics/gen/modf/c87851.wgsl.expected.spvasm b/test/intrinsics/gen/modf/c87851.wgsl.expected.spvasm
new file mode 100644
index 0000000..d8cbd3d
--- /dev/null
+++ b/test/intrinsics/gen/modf/c87851.wgsl.expected.spvasm
@@ -0,0 +1,76 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 36
+; Schema: 0
+ OpCapability Shader
+ %16 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical GLSL450
+ OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize %tint_symbol_1
+ OpEntryPoint Fragment %fragment_main "fragment_main"
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %fragment_main OriginUpperLeft
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %tint_pointsize "tint_pointsize"
+ OpName %tint_symbol_1 "tint_symbol_1"
+ OpName %modf_c87851 "modf_c87851"
+ OpName %_modf_result_vec2 "_modf_result_vec2"
+ OpMemberName %_modf_result_vec2 0 "fract"
+ OpMemberName %_modf_result_vec2 1 "whole"
+ OpName %res "res"
+ OpName %tint_symbol_2 "tint_symbol_2"
+ OpName %tint_symbol "tint_symbol"
+ OpName %vertex_main "vertex_main"
+ OpName %fragment_main "fragment_main"
+ OpName %compute_main "compute_main"
+ OpDecorate %tint_pointsize BuiltIn PointSize
+ OpDecorate %tint_symbol_1 BuiltIn Position
+ OpMemberDecorate %_modf_result_vec2 0 Offset 0
+ OpMemberDecorate %_modf_result_vec2 1 Offset 8
+ %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+ %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+ %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %8 = OpConstantNull %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+ %void = OpTypeVoid
+ %9 = OpTypeFunction %void
+ %v2float = OpTypeVector %float 2
+%_modf_result_vec2 = OpTypeStruct %v2float %v2float
+ %17 = OpConstantNull %v2float
+%_ptr_Function__modf_result_vec2 = OpTypePointer Function %_modf_result_vec2
+ %20 = OpConstantNull %_modf_result_vec2
+ %21 = OpTypeFunction %void %v4float
+ %float_1 = OpConstant %float 1
+%modf_c87851 = OpFunction %void None %9
+ %12 = OpLabel
+ %res = OpVariable %_ptr_Function__modf_result_vec2 Function %20
+ %13 = OpExtInst %_modf_result_vec2 %16 ModfStruct %17
+ OpStore %res %13
+ OpReturn
+ OpFunctionEnd
+%tint_symbol_2 = OpFunction %void None %21
+%tint_symbol = OpFunctionParameter %v4float
+ %24 = OpLabel
+ OpStore %tint_symbol_1 %tint_symbol
+ OpReturn
+ OpFunctionEnd
+%vertex_main = OpFunction %void None %9
+ %26 = OpLabel
+ OpStore %tint_pointsize %float_1
+ %28 = OpFunctionCall %void %modf_c87851
+ %29 = OpFunctionCall %void %tint_symbol_2 %8
+ OpReturn
+ OpFunctionEnd
+%fragment_main = OpFunction %void None %9
+ %31 = OpLabel
+ %32 = OpFunctionCall %void %modf_c87851
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %9
+ %34 = OpLabel
+ %35 = OpFunctionCall %void %modf_c87851
+ OpReturn
+ OpFunctionEnd
diff --git a/test/intrinsics/gen/modf/c87851.wgsl.expected.wgsl b/test/intrinsics/gen/modf/c87851.wgsl.expected.wgsl
new file mode 100644
index 0000000..9edd1bf
--- /dev/null
+++ b/test/intrinsics/gen/modf/c87851.wgsl.expected.wgsl
@@ -0,0 +1,19 @@
+fn modf_c87851() {
+ var res = modf(vec2<f32>());
+}
+
+[[stage(vertex)]]
+fn vertex_main() -> [[builtin(position)]] vec4<f32> {
+ modf_c87851();
+ return vec4<f32>();
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+ modf_c87851();
+}
+
+[[stage(compute), workgroup_size(1)]]
+fn compute_main() {
+ modf_c87851();
+}
diff --git a/test/intrinsics/gen/modf/d1d6f6.wgsl.expected.hlsl b/test/intrinsics/gen/modf/d1d6f6.wgsl.expected.hlsl
index afd659d..f017b20 100644
--- a/test/intrinsics/gen/modf/d1d6f6.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/modf/d1d6f6.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/d1d6f6.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = modf(vec4<f32>(), &arg_1);
+ ^^^^
+
void modf_d1d6f6() {
float4 arg_1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
float4 res = modf(float4(0.0f, 0.0f, 0.0f, 0.0f), arg_1);
diff --git a/test/intrinsics/gen/modf/d1d6f6.wgsl.expected.msl b/test/intrinsics/gen/modf/d1d6f6.wgsl.expected.msl
index c2dd7d2..549d90e 100644
--- a/test/intrinsics/gen/modf/d1d6f6.wgsl.expected.msl
+++ b/test/intrinsics/gen/modf/d1d6f6.wgsl.expected.msl
@@ -1,13 +1,25 @@
+intrinsics/gen/modf/d1d6f6.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = modf(vec4<f32>(), &arg_1);
+ ^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float4 tint_modf(float4 param_0, thread float4* param_1) {
+ float4 whole;
+ float4 fract = modf(param_0, whole);
+ *param_1 = whole;
+ return fract;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void modf_d1d6f6() {
float4 arg_1 = 0.0f;
- float4 res = modf(float4(), *(&(arg_1)));
+ float4 res = tint_modf(float4(), &(arg_1));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/modf/d1d6f6.wgsl.expected.spvasm b/test/intrinsics/gen/modf/d1d6f6.wgsl.expected.spvasm
index 1d40f64..aa8a3b8 100644
--- a/test/intrinsics/gen/modf/d1d6f6.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/d1d6f6.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/d1d6f6.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = modf(vec4<f32>(), &arg_1);
+ ^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/modf/d1d6f6.wgsl.expected.wgsl b/test/intrinsics/gen/modf/d1d6f6.wgsl.expected.wgsl
index dd45517..113e0c1 100644
--- a/test/intrinsics/gen/modf/d1d6f6.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/d1d6f6.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/d1d6f6.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = modf(vec4<f32>(), &arg_1);
+ ^^^^
+
fn modf_d1d6f6() {
var arg_1 : vec4<f32>;
var res : vec4<f32> = modf(vec4<f32>(), &(arg_1));
diff --git a/test/intrinsics/gen/modf/e38ae6.wgsl.expected.hlsl b/test/intrinsics/gen/modf/e38ae6.wgsl.expected.hlsl
index 726d9b5..7c29406 100644
--- a/test/intrinsics/gen/modf/e38ae6.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/modf/e38ae6.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/e38ae6.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = modf(1.0, &arg_1);
+ ^^^^
+
groupshared float arg_1;
void modf_e38ae6() {
diff --git a/test/intrinsics/gen/modf/e38ae6.wgsl.expected.msl b/test/intrinsics/gen/modf/e38ae6.wgsl.expected.msl
index 51877e8..5ce4bb3 100644
--- a/test/intrinsics/gen/modf/e38ae6.wgsl.expected.msl
+++ b/test/intrinsics/gen/modf/e38ae6.wgsl.expected.msl
@@ -1,10 +1,20 @@
-SKIP: FAILED
+intrinsics/gen/modf/e38ae6.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = modf(1.0, &arg_1);
+ ^^^^
#include <metal_stdlib>
using namespace metal;
+
+float tint_modf(float param_0, threadgroup float* param_1) {
+ float whole;
+ float fract = modf(param_0, whole);
+ *param_1 = whole;
+ return fract;
+}
+
void modf_e38ae6(threadgroup float* const tint_symbol_1) {
- float res = modf(1.0f, *(&(*(tint_symbol_1))));
+ float res = tint_modf(1.0f, &(*(tint_symbol_1)));
}
kernel void compute_main(uint local_invocation_index [[thread_index_in_threadgroup]]) {
@@ -17,44 +27,3 @@
return;
}
-Compilation failed:
-
-program_source:5:15: error: no matching function for call to 'modf'
- float res = modf(1.0f, *(&(*(tint_symbol_1))));
- ^~~~
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:4610:18: note: candidate function not viable: address space mismatch in 2nd argument ('threadgroup float'), parameter type must be 'float &'
-METAL_FUNC float modf(float x, thread float &intval)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3142:17: note: candidate function not viable: no known conversion from 'threadgroup float' to 'half &' for 2nd argument
-METAL_FUNC half modf(half x, thread half &intval)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3386:18: note: candidate function not viable: no known conversion from 'threadgroup float' to 'metal::half2 &' (aka 'half2 &') for 2nd argument
-METAL_FUNC half2 modf(half2 x, thread half2 &intval)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3630:18: note: candidate function not viable: no known conversion from 'threadgroup float' to 'metal::half3 &' (aka 'half3 &') for 2nd argument
-METAL_FUNC half3 modf(half3 x, thread half3 &intval)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:3874:18: note: candidate function not viable: no known conversion from 'threadgroup float' to 'metal::half4 &' (aka 'half4 &') for 2nd argument
-METAL_FUNC half4 modf(half4 x, thread half4 &intval)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:4854:19: note: candidate function not viable: no known conversion from 'threadgroup float' to 'metal::float2 &' (aka 'float2 &') for 2nd argument
-METAL_FUNC float2 modf(float2 x, thread float2 &intval)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:5098:19: note: candidate function not viable: no known conversion from 'threadgroup float' to 'metal::float3 &' (aka 'float3 &') for 2nd argument
-METAL_FUNC float3 modf(float3 x, thread float3 &intval)
- ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/lib/clang/31001.189/include/metal/metal_math:5342:19: note: candidate function not viable: no known conversion from 'threadgroup float' to 'metal::float4 &' (aka 'float4 &') for 2nd argument
-METAL_FUNC float4 modf(float4 x, thread float4 &intval)
- ^
-program_source:10:31: warning: equality comparison with extraneous parentheses
- if ((local_invocation_index == 0u)) {
- ~~~~~~~~~~~~~~~~~~~~~~~^~~~~
-program_source:10:31: note: remove extraneous parentheses around the comparison to silence this warning
- if ((local_invocation_index == 0u)) {
- ~ ^ ~
-program_source:10:31: note: use '=' to turn this equality comparison into an assignment
- if ((local_invocation_index == 0u)) {
- ^~
- =
-
-
diff --git a/test/intrinsics/gen/modf/e38ae6.wgsl.expected.spvasm b/test/intrinsics/gen/modf/e38ae6.wgsl.expected.spvasm
index 3dfafee..b5fd9e9 100644
--- a/test/intrinsics/gen/modf/e38ae6.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/e38ae6.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/e38ae6.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = modf(1.0, &arg_1);
+ ^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/modf/e38ae6.wgsl.expected.wgsl b/test/intrinsics/gen/modf/e38ae6.wgsl.expected.wgsl
index 6f45f8f..af186d1 100644
--- a/test/intrinsics/gen/modf/e38ae6.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/e38ae6.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/e38ae6.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = modf(1.0, &arg_1);
+ ^^^^
+
var<workgroup> arg_1 : f32;
fn modf_e38ae6() {
diff --git a/test/intrinsics/gen/modf/e83560.wgsl.expected.hlsl b/test/intrinsics/gen/modf/e83560.wgsl.expected.hlsl
index fbd15df..dbc6c6e 100644
--- a/test/intrinsics/gen/modf/e83560.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/modf/e83560.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/e83560.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = modf(vec4<f32>(), &arg_1);
+ ^^^^
+
void modf_e83560() {
float4 arg_1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
float4 res = modf(float4(0.0f, 0.0f, 0.0f, 0.0f), arg_1);
diff --git a/test/intrinsics/gen/modf/e83560.wgsl.expected.msl b/test/intrinsics/gen/modf/e83560.wgsl.expected.msl
index 922a972..28bee9f 100644
--- a/test/intrinsics/gen/modf/e83560.wgsl.expected.msl
+++ b/test/intrinsics/gen/modf/e83560.wgsl.expected.msl
@@ -1,13 +1,25 @@
+intrinsics/gen/modf/e83560.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = modf(vec4<f32>(), &arg_1);
+ ^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float4 tint_modf(float4 param_0, thread float4* param_1) {
+ float4 whole;
+ float4 fract = modf(param_0, whole);
+ *param_1 = whole;
+ return fract;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void modf_e83560() {
float4 arg_1 = 0.0f;
- float4 res = modf(float4(), *(&(arg_1)));
+ float4 res = tint_modf(float4(), &(arg_1));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/modf/e83560.wgsl.expected.spvasm b/test/intrinsics/gen/modf/e83560.wgsl.expected.spvasm
index 8e5622c..99f906d 100644
--- a/test/intrinsics/gen/modf/e83560.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/e83560.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/e83560.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = modf(vec4<f32>(), &arg_1);
+ ^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/modf/e83560.wgsl.expected.wgsl b/test/intrinsics/gen/modf/e83560.wgsl.expected.wgsl
index 55a52e2..719781c 100644
--- a/test/intrinsics/gen/modf/e83560.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/e83560.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/e83560.wgsl:29:24 warning: use of deprecated intrinsic
+ var res: vec4<f32> = modf(vec4<f32>(), &arg_1);
+ ^^^^
+
fn modf_e83560() {
var arg_1 : vec4<f32>;
var res : vec4<f32> = modf(vec4<f32>(), &(arg_1));
diff --git a/test/intrinsics/gen/modf/f90945.wgsl.expected.hlsl b/test/intrinsics/gen/modf/f90945.wgsl.expected.hlsl
index 5e79aa3..7255685 100644
--- a/test/intrinsics/gen/modf/f90945.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/modf/f90945.wgsl.expected.hlsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/f90945.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = modf(1.0, &arg_1);
+ ^^^^
+
void modf_f90945() {
float arg_1 = 0.0f;
float res = modf(1.0f, arg_1);
diff --git a/test/intrinsics/gen/modf/f90945.wgsl.expected.msl b/test/intrinsics/gen/modf/f90945.wgsl.expected.msl
index eed1548..795e7ef 100644
--- a/test/intrinsics/gen/modf/f90945.wgsl.expected.msl
+++ b/test/intrinsics/gen/modf/f90945.wgsl.expected.msl
@@ -1,13 +1,25 @@
+intrinsics/gen/modf/f90945.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = modf(1.0, &arg_1);
+ ^^^^
+
#include <metal_stdlib>
using namespace metal;
+
+float tint_modf(float param_0, thread float* param_1) {
+ float whole;
+ float fract = modf(param_0, whole);
+ *param_1 = whole;
+ return fract;
+}
+
struct tint_symbol {
float4 value [[position]];
};
void modf_f90945() {
float arg_1 = 0.0f;
- float res = modf(1.0f, *(&(arg_1)));
+ float res = tint_modf(1.0f, &(arg_1));
}
vertex tint_symbol vertex_main() {
diff --git a/test/intrinsics/gen/modf/f90945.wgsl.expected.spvasm b/test/intrinsics/gen/modf/f90945.wgsl.expected.spvasm
index 0872a2f..29b6948 100644
--- a/test/intrinsics/gen/modf/f90945.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/f90945.wgsl.expected.spvasm
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/f90945.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = modf(1.0, &arg_1);
+ ^^^^
+
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
diff --git a/test/intrinsics/gen/modf/f90945.wgsl.expected.wgsl b/test/intrinsics/gen/modf/f90945.wgsl.expected.wgsl
index 6665ed2..fb28341 100644
--- a/test/intrinsics/gen/modf/f90945.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/f90945.wgsl.expected.wgsl
@@ -1,3 +1,7 @@
+intrinsics/gen/modf/f90945.wgsl:29:18 warning: use of deprecated intrinsic
+ var res: f32 = modf(1.0, &arg_1);
+ ^^^^
+
fn modf_f90945() {
var arg_1 : f32;
var res : f32 = modf(1.0, &(arg_1));
diff --git a/test/intrinsics/intrinsics.wgsl.tmpl b/test/intrinsics/intrinsics.wgsl.tmpl
index 1751b6d..9ed3c42 100644
--- a/test/intrinsics/intrinsics.wgsl.tmpl
+++ b/test/intrinsics/intrinsics.wgsl.tmpl
@@ -123,7 +123,7 @@
{{- /* Make the call to the intrinsic */ -}}
{{- /*indent*/}} {{/*indent*/ -}}
{{- if .ReturnType -}}
- var res: {{template "Type" .ReturnType}} = {{/* preserve space after = */ -}}
+ var res{{if IsDeclarable .ReturnType}}: {{template "Type" .ReturnType}}{{end}} = {{/* preserve space after = */ -}}
{{- end -}}
{{$function}}(
{{- range $i, $p := .Parameters -}}
diff --git a/test/intrinsics/modf.wgsl b/test/intrinsics/modf.wgsl
index dae3447..f8b1cf3 100644
--- a/test/intrinsics/modf.wgsl
+++ b/test/intrinsics/modf.wgsl
@@ -1,5 +1,6 @@
[[stage(compute), workgroup_size(1)]]
fn main() {
- var whole : f32;
- let frac : f32 = modf(1.23, &whole);
+ let res = modf(1.23);
+ let fract : f32 = res.fract;
+ let whole : f32 = res.whole;
}
diff --git a/test/intrinsics/modf.wgsl.expected.hlsl b/test/intrinsics/modf.wgsl.expected.hlsl
index 200d084..d2bdca4 100644
--- a/test/intrinsics/modf.wgsl.expected.hlsl
+++ b/test/intrinsics/modf.wgsl.expected.hlsl
@@ -1,6 +1,18 @@
+struct modf_result {
+ float fract;
+ float whole;
+};
+modf_result tint_modf(float param_0) {
+ float whole;
+ float fract = modf(param_0, whole);
+ modf_result result = {fract, whole};
+ return result;
+}
+
[numthreads(1, 1, 1)]
void main() {
- float whole = 0.0f;
- const float tint_symbol = modf(1.230000019f, whole);
+ const modf_result res = tint_modf(1.230000019f);
+ const float fract = res.fract;
+ const float whole = res.whole;
return;
}
diff --git a/test/intrinsics/modf.wgsl.expected.msl b/test/intrinsics/modf.wgsl.expected.msl
index 3f2627a..6f6cf69 100644
--- a/test/intrinsics/modf.wgsl.expected.msl
+++ b/test/intrinsics/modf.wgsl.expected.msl
@@ -1,9 +1,21 @@
#include <metal_stdlib>
using namespace metal;
+
+struct modf_result {
+ float fract;
+ float whole;
+};
+modf_result tint_modf(float param_0) {
+ float whole;
+ float fract = modf(param_0, whole);
+ return {fract, whole};
+}
+
kernel void tint_symbol() {
- float whole = 0.0f;
- float const frac = modf(1.230000019f, *(&(whole)));
+ modf_result const res = tint_modf(1.230000019f);
+ float const fract = res.fract;
+ float const whole = res.whole;
return;
}
diff --git a/test/intrinsics/modf.wgsl.expected.spvasm b/test/intrinsics/modf.wgsl.expected.spvasm
index 090d8b8..3122347 100644
--- a/test/intrinsics/modf.wgsl.expected.spvasm
+++ b/test/intrinsics/modf.wgsl.expected.spvasm
@@ -1,24 +1,28 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
-; Bound: 13
+; Bound: 12
; Schema: 0
OpCapability Shader
- %10 = OpExtInstImport "GLSL.std.450"
+ %8 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main"
OpExecutionMode %main LocalSize 1 1 1
OpName %main "main"
- OpName %whole "whole"
+ OpName %_modf_result "_modf_result"
+ OpMemberName %_modf_result 0 "fract"
+ OpMemberName %_modf_result 1 "whole"
+ OpMemberDecorate %_modf_result 0 Offset 0
+ OpMemberDecorate %_modf_result 1 Offset 4
%void = OpTypeVoid
%1 = OpTypeFunction %void
%float = OpTypeFloat 32
-%_ptr_Function_float = OpTypePointer Function %float
- %8 = OpConstantNull %float
+%_modf_result = OpTypeStruct %float %float
%float_1_23000002 = OpConstant %float 1.23000002
%main = OpFunction %void None %1
%4 = OpLabel
- %whole = OpVariable %_ptr_Function_float Function %8
- %9 = OpExtInst %float %10 Modf %float_1_23000002 %whole
+ %5 = OpExtInst %_modf_result %8 ModfStruct %float_1_23000002
+ %10 = OpCompositeExtract %float %5 0
+ %11 = OpCompositeExtract %float %5 1
OpReturn
OpFunctionEnd
diff --git a/test/intrinsics/modf.wgsl.expected.wgsl b/test/intrinsics/modf.wgsl.expected.wgsl
index eea8562..ba6a7c6 100644
--- a/test/intrinsics/modf.wgsl.expected.wgsl
+++ b/test/intrinsics/modf.wgsl.expected.wgsl
@@ -1,5 +1,6 @@
[[stage(compute), workgroup_size(1)]]
fn main() {
- var whole : f32;
- let frac : f32 = modf(1.230000019, &(whole));
+ let res = modf(1.230000019);
+ let fract : f32 = res.fract;
+ let whole : f32 = res.whole;
}
diff --git a/tools/src/cmd/intrinsic-gen/gen/generate.go b/tools/src/cmd/intrinsic-gen/gen/generate.go
index ff256fb..6972841 100644
--- a/tools/src/cmd/intrinsic-gen/gen/generate.go
+++ b/tools/src/cmd/intrinsic-gen/gen/generate.go
@@ -58,6 +58,8 @@
"SplitDisplayName": splitDisplayName,
"HasPrefix": strings.HasPrefix,
"HasSuffix": strings.HasSuffix,
+ "TrimPrefix": strings.TrimPrefix,
+ "TrimSuffix": strings.TrimSuffix,
"IsEnumEntry": is(sem.EnumEntry{}),
"IsEnumMatcher": is(sem.EnumMatcher{}),
"IsFQN": is(sem.FullyQualifiedName{}),
@@ -66,6 +68,7 @@
"IsTemplateNumberParam": is(sem.TemplateNumberParam{}),
"IsTemplateTypeParam": is(sem.TemplateTypeParam{}),
"IsType": is(sem.Type{}),
+ "IsDeclarable": isDeclarable,
"IsFirstIn": isFirstIn,
"IsLastIn": isLastIn,
"IntrinsicTable": g.intrinsicTable,
@@ -200,6 +203,13 @@
return out
}
+// isDeclarable returns false if the FullyQualifiedName starts with a
+// leading underscore. These are undeclarable as WGSL does not allow identifers
+// to have a leading underscore.
+func isDeclarable(fqn sem.FullyQualifiedName) bool {
+ return !strings.HasPrefix(fqn.Target.GetName(), "_")
+}
+
// pascalCase returns the snake-case string s transformed into 'PascalCase',
// Rules:
// * The first letter of the string is capitalized
diff --git a/tools/src/cmd/intrinsic-gen/gen/permutate.go b/tools/src/cmd/intrinsic-gen/gen/permutate.go
index aa8f77e..61fda1a 100644
--- a/tools/src/cmd/intrinsic-gen/gen/permutate.go
+++ b/tools/src/cmd/intrinsic-gen/gen/permutate.go
@@ -364,6 +364,10 @@
}
}
+ if !isDeclarable(fqn) {
+ return false
+ }
+
for _, arg := range fqn.TemplateArguments {
if argFQN, ok := arg.(sem.FullyQualifiedName); ok {
if !validate(argFQN, uses) {
diff --git a/tools/src/cmd/intrinsic-gen/lexer/lexer.go b/tools/src/cmd/intrinsic-gen/lexer/lexer.go
index 424dabb..1f25aea 100644
--- a/tools/src/cmd/intrinsic-gen/lexer/lexer.go
+++ b/tools/src/cmd/intrinsic-gen/lexer/lexer.go
@@ -91,7 +91,7 @@
case l.match("enum", tok.Enum):
case l.match("type", tok.Type):
case l.match("match", tok.Match):
- case unicode.IsLetter(l.peek(0)):
+ case unicode.IsLetter(l.peek(0)) || l.peek(0) == '_':
l.tok(l.count(alphaNumericOrUnderscore), tok.Identifier)
case unicode.IsNumber(l.peek(0)):
l.tok(l.count(unicode.IsNumber), tok.Integer)
diff --git a/tools/src/cmd/intrinsic-gen/lexer/lexer_test.go b/tools/src/cmd/intrinsic-gen/lexer/lexer_test.go
index da354c4..d0ec922 100644
--- a/tools/src/cmd/intrinsic-gen/lexer/lexer_test.go
+++ b/tools/src/cmd/intrinsic-gen/lexer/lexer_test.go
@@ -40,6 +40,9 @@
{"ident_123", tok.Token{Kind: tok.Identifier, Runes: []rune("ident_123"), Source: tok.Source{
S: loc(1, 1, 0), E: loc(1, 10, 9),
}}},
+ {"_ident_", tok.Token{Kind: tok.Identifier, Runes: []rune("_ident_"), Source: tok.Source{
+ S: loc(1, 1, 0), E: loc(1, 8, 7),
+ }}},
{"123456789", tok.Token{Kind: tok.Integer, Runes: []rune("123456789"), Source: tok.Source{
S: loc(1, 1, 0), E: loc(1, 10, 9),
}}},