Tint: implement pack4x{U|I}8Clamp and unpack4x{U|I}8
This patch implements the remaining 4 built-in functions defined in
the language extension "packed_4x8_integer_dot_product":
- pack4xI8Clamp()
- pack4xU8Clamp()
- unpack4xI8()
- unpack4xU8()
Bug: tint:1497
Change-Id: I9296ead285215023c0249d932a2bb9523be92d38
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/166642
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
diff --git a/src/dawn/tests/end2end/Packed4x8IntegerDotProductTests.cpp b/src/dawn/tests/end2end/Packed4x8IntegerDotProductTests.cpp
index 0a920eb..556c851 100644
--- a/src/dawn/tests/end2end/Packed4x8IntegerDotProductTests.cpp
+++ b/src/dawn/tests/end2end/Packed4x8IntegerDotProductTests.cpp
@@ -36,9 +36,9 @@
class Packed4x8IntegerDotProductTests : public DawnTest {};
TEST_P(Packed4x8IntegerDotProductTests, Dot4x8Packed) {
- // TODO(dawn:1704): investigate why the creation of compute pipeline with dot4{U|I}8Packed()
+ // TODO(tint:1497): investigate why the creation of compute pipeline with dot4{U|I}8Packed()
// fails on Pixel 4
- DAWN_SUPPRESS_TEST_IF(IsQualcomm());
+ DAWN_SUPPRESS_TEST_IF(IsAndroid());
const char* computeShader = R"(
struct Buf {
@@ -99,14 +99,15 @@
wgpu::CommandBuffer commands = encoder.Finish();
queue.Submit(1, &commands);
- uint32_t expected[] = {70, 252998, static_cast<uint32_t>(-30), 2530};
- EXPECT_BUFFER_U32_RANGE_EQ(expected, bufferOut, 0, 4);
+ int32_t expected[] = {70, 252998, -30, 2530};
+ EXPECT_BUFFER_U32_RANGE_EQ(reinterpret_cast<uint32_t*>(expected), bufferOut, 0,
+ sizeof(expected) / sizeof(int32_t));
}
TEST_P(Packed4x8IntegerDotProductTests, Pack4x8) {
- // TODO(dawn:1704): investigate why the creation of compute pipeline with pack4x{U|I}8()
- // fails on Pixel 6
- DAWN_SUPPRESS_TEST_IF(IsQualcomm());
+ // TODO(tint:1497): investigate why the creation of compute pipeline with pack4xI8(),
+ // pack4xU8(), pack4xI8Clamp() or pack4xU8Clamp() fails on Pixel 6
+ DAWN_SUPPRESS_TEST_IF(IsAndroid());
const char* computeShader = R"(
struct Buf {
@@ -114,6 +115,10 @@
data2 : u32,
data3 : u32,
data4 : u32,
+ data5 : u32,
+ data6 : u32,
+ data7 : u32,
+ data8 : u32,
}
@group(0) @binding(0) var<storage, read_write> buf : Buf;
struct InputData {
@@ -130,20 +135,25 @@
buf.data2 = pack4xI8(inputBuf.b);
buf.data3 = pack4xU8(inputBuf.c);
buf.data4 = pack4xU8(inputBuf.d);
+
+ buf.data5 = pack4xI8Clamp(inputBuf.a);
+ buf.data6 = pack4xI8Clamp(inputBuf.b);
+ buf.data7 = pack4xU8Clamp(inputBuf.c);
+ buf.data8 = pack4xU8Clamp(inputBuf.d);
}
)";
ASSERT_TRUE(instance.HasWGSLLanguageFeature(wgpu::WGSLFeatureName::Packed4x8IntegerDotProduct));
wgpu::BufferDescriptor bufferDesc;
- bufferDesc.size = 4 * sizeof(uint32_t);
+ bufferDesc.size = 8 * sizeof(uint32_t);
bufferDesc.usage = wgpu::BufferUsage::Storage | wgpu::BufferUsage::CopySrc;
wgpu::Buffer bufferOut = device.CreateBuffer(&bufferDesc);
wgpu::Buffer inputBuffer = utils::CreateBufferFromData(
device,
wgpu::BufferUsage::CopySrc | wgpu::BufferUsage::CopyDst | wgpu::BufferUsage::Storage,
- {127, 128, -128, -129, 32767, 32768, -32768, -32769, 1, 2, 3, 4, 0, 254, 255, 65535});
+ {127, 128, -128, -129, -32768, -32769, 32767, 32768, 1, 2, 3, 4, 0, 254, 255, 65535});
wgpu::ComputePipelineDescriptor csDesc;
csDesc.compute.module = utils::CreateShaderModule(device, computeShader);
@@ -165,8 +175,86 @@
wgpu::CommandBuffer commands = encoder.Finish();
queue.Submit(1, &commands);
- uint32_t expected[] = {0x7f80807f, 0xff0000ff, 0x04030201, 0xfffffe00};
- EXPECT_BUFFER_U32_RANGE_EQ(expected, bufferOut, 0, 4);
+ uint32_t expected[] = {0x7F80807F, 0x00FFFF00, 0x04030201, 0xFFFFFE00,
+ 0x80807F7F, 0x7F7F8080, 0x04030201, 0xFFFFFE00};
+ EXPECT_BUFFER_U32_RANGE_EQ(expected, bufferOut, 0, sizeof(expected) / sizeof(uint32_t));
+}
+
+TEST_P(Packed4x8IntegerDotProductTests, Unpack4x8) {
+ // TODO(tint:1497): investigate why the creation of compute pipeline with unpack4xI8() or
+ // unpack4xU8() fails on Pixel 6
+ DAWN_SUPPRESS_TEST_IF(IsAndroid());
+
+ const char* computeShader = R"(
+ struct Buf {
+ data1 : vec4i,
+ data2 : vec4i,
+ data3 : vec4i,
+ data4 : vec4i,
+ data5 : vec4u,
+ data6 : vec4u,
+ data7 : vec4u,
+ data8 : vec4u,
+ }
+ @group(0) @binding(0) var<storage, read_write> buf : Buf;
+ struct InputData {
+ a : u32,
+ b : u32,
+ c : u32,
+ d : u32,
+ }
+ @group(0) @binding(1) var<storage, read_write> inputBuf : InputData;
+
+ @compute @workgroup_size(1)
+ fn main() {
+ buf.data1 = unpack4xI8(inputBuf.a);
+ buf.data2 = unpack4xI8(inputBuf.b);
+ buf.data3 = unpack4xI8(inputBuf.c);
+ buf.data4 = unpack4xI8(inputBuf.d);
+
+ buf.data5 = unpack4xU8(inputBuf.a);
+ buf.data6 = unpack4xU8(inputBuf.b);
+ buf.data7 = unpack4xU8(inputBuf.c);
+ buf.data8 = unpack4xU8(inputBuf.d);
+ }
+)";
+
+ ASSERT_TRUE(instance.HasWGSLLanguageFeature(wgpu::WGSLFeatureName::Packed4x8IntegerDotProduct));
+
+ wgpu::BufferDescriptor bufferDesc;
+ bufferDesc.size = sizeof(uint32_t) * 4 * 8;
+ bufferDesc.usage = wgpu::BufferUsage::Storage | wgpu::BufferUsage::CopySrc;
+ wgpu::Buffer bufferOut = device.CreateBuffer(&bufferDesc);
+
+ wgpu::Buffer inputBuffer = utils::CreateBufferFromData(
+ device,
+ wgpu::BufferUsage::CopySrc | wgpu::BufferUsage::CopyDst | wgpu::BufferUsage::Storage,
+ {0x01020304u, 0xFFFEFDFCu, 0x05FB06FAu, 0xF907F808u});
+
+ wgpu::ComputePipelineDescriptor csDesc;
+ csDesc.compute.module = utils::CreateShaderModule(device, computeShader);
+ csDesc.compute.entryPoint = "main";
+ wgpu::ComputePipeline pipeline = device.CreateComputePipeline(&csDesc);
+
+ wgpu::BindGroup bindGroup = utils::MakeBindGroup(device, pipeline.GetBindGroupLayout(0),
+ {
+ {0, bufferOut},
+ {1, inputBuffer},
+ });
+
+ wgpu::CommandEncoder encoder = device.CreateCommandEncoder();
+ wgpu::ComputePassEncoder pass = encoder.BeginComputePass();
+ pass.SetPipeline(pipeline);
+ pass.SetBindGroup(0, bindGroup);
+ pass.DispatchWorkgroups(1);
+ pass.End();
+ wgpu::CommandBuffer commands = encoder.Finish();
+ queue.Submit(1, &commands);
+
+ int32_t expected[] = {4, 3, 2, 1, -4, -3, -2, -1, -6, 6, -5, 5, 8, -8, 7, -7,
+ 4, 3, 2, 1, 252, 253, 254, 255, 250, 6, 251, 5, 8, 248, 7, 249};
+ EXPECT_BUFFER_U32_RANGE_EQ(reinterpret_cast<uint32_t*>(expected), bufferOut, 0,
+ sizeof(expected) / sizeof(int32_t));
}
// DawnTestBase::CreateDeviceImpl always enables allow_unsafe_apis toggle.
diff --git a/src/tint/lang/core/builtin_fn.cc b/src/tint/lang/core/builtin_fn.cc
index 8020b24..5344117 100644
--- a/src/tint/lang/core/builtin_fn.cc
+++ b/src/tint/lang/core/builtin_fn.cc
@@ -225,6 +225,12 @@
if (name == "pack4xU8") {
return BuiltinFn::kPack4XU8;
}
+ if (name == "pack4xI8Clamp") {
+ return BuiltinFn::kPack4XI8Clamp;
+ }
+ if (name == "pack4xU8Clamp") {
+ return BuiltinFn::kPack4XU8Clamp;
+ }
if (name == "pow") {
return BuiltinFn::kPow;
}
@@ -300,6 +306,12 @@
if (name == "unpack4x8unorm") {
return BuiltinFn::kUnpack4X8Unorm;
}
+ if (name == "unpack4xI8") {
+ return BuiltinFn::kUnpack4XI8;
+ }
+ if (name == "unpack4xU8") {
+ return BuiltinFn::kUnpack4XU8;
+ }
if (name == "workgroupBarrier") {
return BuiltinFn::kWorkgroupBarrier;
}
@@ -524,6 +536,10 @@
return "pack4xI8";
case BuiltinFn::kPack4XU8:
return "pack4xU8";
+ case BuiltinFn::kPack4XI8Clamp:
+ return "pack4xI8Clamp";
+ case BuiltinFn::kPack4XU8Clamp:
+ return "pack4xU8Clamp";
case BuiltinFn::kPow:
return "pow";
case BuiltinFn::kQuantizeToF16:
@@ -574,6 +590,10 @@
return "unpack4x8snorm";
case BuiltinFn::kUnpack4X8Unorm:
return "unpack4x8unorm";
+ case BuiltinFn::kUnpack4XI8:
+ return "unpack4xI8";
+ case BuiltinFn::kUnpack4XU8:
+ return "unpack4xU8";
case BuiltinFn::kWorkgroupBarrier:
return "workgroupBarrier";
case BuiltinFn::kTextureBarrier:
@@ -701,7 +721,9 @@
bool IsPacked4x8IntegerDotProductBuiltin(BuiltinFn f) {
return f == BuiltinFn::kDot4I8Packed || f == BuiltinFn::kDot4U8Packed ||
- f == BuiltinFn::kPack4XI8 || f == BuiltinFn::kPack4XU8;
+ f == BuiltinFn::kPack4XI8 || f == BuiltinFn::kPack4XU8 ||
+ f == BuiltinFn::kPack4XI8Clamp || f == BuiltinFn::kPack4XU8Clamp ||
+ f == BuiltinFn::kUnpack4XI8 || f == BuiltinFn::kUnpack4XU8;
}
bool IsSubgroup(BuiltinFn f) {
diff --git a/src/tint/lang/core/builtin_fn.cc.tmpl b/src/tint/lang/core/builtin_fn.cc.tmpl
index 4f0e7e6..7b47108 100644
--- a/src/tint/lang/core/builtin_fn.cc.tmpl
+++ b/src/tint/lang/core/builtin_fn.cc.tmpl
@@ -102,7 +102,9 @@
bool IsPacked4x8IntegerDotProductBuiltin(BuiltinFn f) {
return f == BuiltinFn::kDot4I8Packed || f == BuiltinFn::kDot4U8Packed ||
- f == BuiltinFn::kPack4XI8 || f == BuiltinFn::kPack4XU8;
+ f == BuiltinFn::kPack4XI8 || f == BuiltinFn::kPack4XU8 ||
+ f == BuiltinFn::kPack4XI8Clamp || f == BuiltinFn::kPack4XU8Clamp ||
+ f == BuiltinFn::kUnpack4XI8 || f == BuiltinFn::kUnpack4XU8;
}
bool IsSubgroup(BuiltinFn f) {
diff --git a/src/tint/lang/core/builtin_fn.h b/src/tint/lang/core/builtin_fn.h
index 95249bd..277b9087 100644
--- a/src/tint/lang/core/builtin_fn.h
+++ b/src/tint/lang/core/builtin_fn.h
@@ -109,6 +109,8 @@
kPack4X8Unorm,
kPack4XI8,
kPack4XU8,
+ kPack4XI8Clamp,
+ kPack4XU8Clamp,
kPow,
kQuantizeToF16,
kRadians,
@@ -134,6 +136,8 @@
kUnpack2X16Unorm,
kUnpack4X8Snorm,
kUnpack4X8Unorm,
+ kUnpack4XI8,
+ kUnpack4XU8,
kWorkgroupBarrier,
kTextureBarrier,
kTextureDimensions,
@@ -249,6 +253,8 @@
BuiltinFn::kPack4X8Unorm,
BuiltinFn::kPack4XI8,
BuiltinFn::kPack4XU8,
+ BuiltinFn::kPack4XI8Clamp,
+ BuiltinFn::kPack4XU8Clamp,
BuiltinFn::kPow,
BuiltinFn::kQuantizeToF16,
BuiltinFn::kRadians,
@@ -274,6 +280,8 @@
BuiltinFn::kUnpack2X16Unorm,
BuiltinFn::kUnpack4X8Snorm,
BuiltinFn::kUnpack4X8Unorm,
+ BuiltinFn::kUnpack4XI8,
+ BuiltinFn::kUnpack4XU8,
BuiltinFn::kWorkgroupBarrier,
BuiltinFn::kTextureBarrier,
BuiltinFn::kTextureDimensions,
@@ -371,6 +379,8 @@
"pack4x8unorm",
"pack4xI8",
"pack4xU8",
+ "pack4xI8Clamp",
+ "pack4xU8Clamp",
"pow",
"quantizeToF16",
"radians",
@@ -396,6 +406,8 @@
"unpack2x16unorm",
"unpack4x8snorm",
"unpack4x8unorm",
+ "unpack4xI8",
+ "unpack4xU8",
"workgroupBarrier",
"textureBarrier",
"textureDimensions",
diff --git a/src/tint/lang/core/constant/eval.cc b/src/tint/lang/core/constant/eval.cc
index d86e0a1..91fd4f0 100644
--- a/src/tint/lang/core/constant/eval.cc
+++ b/src/tint/lang/core/constant/eval.cc
@@ -3306,6 +3306,37 @@
return CreateScalar(source, ty, ret);
}
+Eval::Result Eval::pack4xI8Clamp(const core::type::Type* ty,
+ VectorRef<const Value*> args,
+ const Source& source) {
+ auto calc = [&](i32 val) -> i32 { return Clamp(source, val, i32(-128), i32(127)).Get(); };
+
+ auto* e = args[0];
+ auto e0 = calc(e->Index(0)->ValueAs<i32>());
+ auto e1 = calc(e->Index(1)->ValueAs<i32>());
+ auto e2 = calc(e->Index(2)->ValueAs<i32>());
+ auto e3 = calc(e->Index(3)->ValueAs<i32>());
+
+ int32_t mask = 0xff;
+ u32 ret = u32((e0 & mask) | ((e1 & mask) << 8) | ((e2 & mask) << 16) | ((e3 & mask) << 24));
+ return CreateScalar(source, ty, ret);
+}
+
+Eval::Result Eval::pack4xU8Clamp(const core::type::Type* ty,
+ VectorRef<const Value*> args,
+ const Source& source) {
+ auto calc = [&](u32 val) -> u32 { return Clamp(source, val, u32(0), u32(255)).Get(); };
+
+ auto* e = args[0];
+ auto e0 = calc(e->Index(0)->ValueAs<u32>());
+ auto e1 = calc(e->Index(1)->ValueAs<u32>());
+ auto e2 = calc(e->Index(2)->ValueAs<u32>());
+ auto e3 = calc(e->Index(3)->ValueAs<u32>());
+
+ u32 ret = u32(e0 | (e1 << 8) | (e2 << 16) | (e3 << 24));
+ return CreateScalar(source, ty, ret);
+}
+
Eval::Result Eval::pow(const core::type::Type* ty,
VectorRef<const Value*> args,
const Source& source) {
@@ -3886,6 +3917,47 @@
return mgr.Composite(ty, std::move(els));
}
+Eval::Result Eval::unpack4xI8(const core::type::Type* ty,
+ VectorRef<const Value*> args,
+ const Source& source) {
+ auto* inner_ty = ty->DeepestElement();
+ auto e = args[0]->ValueAs<u32>().value;
+
+ Vector<const Value*, 4> els;
+ els.Reserve(4);
+
+ for (size_t i = 0; i < 4; ++i) {
+ uint8_t e_i = (e >> (8 * i)) & 0xff;
+ auto val = i32(*reinterpret_cast<int8_t*>(&e_i));
+ auto el = CreateScalar(source, inner_ty, val);
+ if (el != Success) {
+ return el;
+ }
+ els.Push(el.Get());
+ }
+ return mgr.Composite(ty, std::move(els));
+}
+
+Eval::Result Eval::unpack4xU8(const core::type::Type* ty,
+ VectorRef<const Value*> args,
+ const Source& source) {
+ auto* inner_ty = ty->DeepestElement();
+ auto e = args[0]->ValueAs<u32>().value;
+
+ Vector<const Value*, 4> els;
+ els.Reserve(4);
+
+ for (size_t i = 0; i < 4; ++i) {
+ auto val = u32((e >> (8 * i)) & 0xff);
+ auto el = CreateScalar(source, inner_ty, val);
+ if (el != Success) {
+ return el;
+ }
+ els.Push(el.Get());
+ }
+ return mgr.Composite(ty, std::move(els));
+}
+
Eval::Result Eval::quantizeToF16(const core::type::Type* ty,
VectorRef<const Value*> args,
const Source& source) {
diff --git a/src/tint/lang/core/constant/eval.h b/src/tint/lang/core/constant/eval.h
index 00114fa..51b93bf 100644
--- a/src/tint/lang/core/constant/eval.h
+++ b/src/tint/lang/core/constant/eval.h
@@ -791,6 +791,24 @@
/// @return the result value, or null if the value cannot be calculated
Result pack4xU8(const core::type::Type* ty, VectorRef<const Value*> args, const Source& source);
+ /// pack4xI8Clamp builtin
+ /// @param ty the expression type
+ /// @param args the input arguments
+ /// @param source the source location
+ /// @return the result value, or null if the value cannot be calculated
+ Result pack4xI8Clamp(const core::type::Type* ty,
+ VectorRef<const Value*> args,
+ const Source& source);
+
+ /// pack4xU8Clamp builtin
+ /// @param ty the expression type
+ /// @param args the input arguments
+ /// @param source the source location
+ /// @return the result value, or null if the value cannot be calculated
+ Result pack4xU8Clamp(const core::type::Type* ty,
+ VectorRef<const Value*> args,
+ const Source& source);
+
/// pow builtin
/// @param ty the expression type
/// @param args the input arguments
@@ -979,6 +997,24 @@
VectorRef<const Value*> args,
const Source& source);
+ /// unpack4xI8 builtin
+ /// @param ty the expression type
+ /// @param args the input arguments
+ /// @param source the source location
+ /// @return the result value, or null if the value cannot be calculated
+ Result unpack4xI8(const core::type::Type* ty,
+ VectorRef<const Value*> args,
+ const Source& source);
+
+ /// unpack4xU8 builtin
+ /// @param ty the expression type
+ /// @param args the input arguments
+ /// @param source the source location
+ /// @return the result value, or null if the value cannot be calculated
+ Result unpack4xU8(const core::type::Type* ty,
+ VectorRef<const Value*> args,
+ const Source& source);
+
/// quantizeToF16 builtin
/// @param ty the expression type
/// @param args the input arguments
diff --git a/src/tint/lang/core/constant/eval_builtin_test.cc b/src/tint/lang/core/constant/eval_builtin_test.cc
index f0a1e27..81c593c 100644
--- a/src/tint/lang/core/constant/eval_builtin_test.cc
+++ b/src/tint/lang/core/constant/eval_builtin_test.cc
@@ -3016,5 +3016,90 @@
testing::Combine(testing::Values(core::BuiltinFn::kPack4XU8),
testing::ValuesIn(Pack4xU8Cases())));
+std::vector<Case> Pack4xI8ClampCases() {
+ return {
+ C({Vec(i32(0), i32(0), i32(0), i32(0))}, Val(u32(0x0000'0000))),
+ C({Vec(i32(1), i32(2), i32(3), i32(4))}, Val(u32(0x0403'0201))),
+ C({Vec(i32(-1), i32(-2), i32(-3), i32(-4))}, Val(u32(0xFCFD'FEFF))),
+ C({Vec(i32(-1), i32(2), i32(3), i32(4))}, Val(u32(0x0403'02FF))),
+ C({Vec(i32(1), i32(-2), i32(3), i32(4))}, Val(u32(0x0403'FE01))),
+ C({Vec(i32(1), i32(2), i32(-3), i32(4))}, Val(u32(0x04FD'0201))),
+ C({Vec(i32(1), i32(2), i32(3), i32(-4))}, Val(u32(0xFC03'0201))),
+ C({Vec(i32(1), i32(-2), i32(-3), i32(-4))}, Val(u32(0xFCFD'FE01))),
+ C({Vec(i32(-1), i32(2), i32(-3), i32(-4))}, Val(u32(0xFCFD'02FF))),
+ C({Vec(i32(-1), i32(-2), i32(3), i32(-4))}, Val(u32(0xFC03'FEFF))),
+ C({Vec(i32(-1), i32(-2), i32(-3), i32(4))}, Val(u32(0x04FD'FEFF))),
+ C({Vec(i32(-1), i32(-2), i32(3), i32(4))}, Val(u32(0x0403'FEFF))),
+ C({Vec(i32(-1), i32(2), i32(-3), i32(4))}, Val(u32(0x04FD'02FF))),
+ C({Vec(i32(-1), i32(2), i32(3), i32(-4))}, Val(u32(0xFC03'02FF))),
+ C({Vec(i32(1), i32(-2), i32(-3), i32(4))}, Val(u32(0x04FD'FE01))),
+ C({Vec(i32(1), i32(-2), i32(3), i32(-4))}, Val(u32(0xFC03'FE01))),
+ C({Vec(i32(1), i32(2), i32(-3), i32(-4))}, Val(u32(0xFCFD'0201))),
+ C({Vec(i32(127), i32(128), i32(-128), i32(-129))}, Val(u32(0x8080'7F7F))),
+ C({Vec(i32(-32768), i32(-65536), i32(32767), i32(65535))}, Val(u32(0x7F7F'8080))),
+ };
+}
+INSTANTIATE_TEST_SUITE_P( //
+ Pack4xI8Clamp,
+ ConstEvalBuiltinTest,
+ testing::Combine(testing::Values(core::BuiltinFn::kPack4XI8Clamp),
+ testing::ValuesIn(Pack4xI8ClampCases())));
+
+std::vector<Case> Pack4xU8ClampCases() {
+ return {
+ C({Vec(u32(0), u32(0), u32(0), u32(0))}, Val(u32(0x0000'0000))),
+ C({Vec(u32(2), u32(4), u32(6), u32(8))}, Val(u32(0x0806'0402))),
+ C({Vec(u32(255), u32(255), u32(255), u32(255))}, Val(u32(0xFFFF'FFFF))),
+ C({Vec(u32(254), u32(255), u32(256), u32(257))}, Val(u32(0xFFFF'FFFE))),
+ C({Vec(u32(65535), u32(65536), u32(255), u32(254))}, Val(u32(0xFEFF'FFFF))),
+ };
+}
+INSTANTIATE_TEST_SUITE_P( //
+ Pack4xU8Clamp,
+ ConstEvalBuiltinTest,
+ testing::Combine(testing::Values(core::BuiltinFn::kPack4XU8Clamp),
+ testing::ValuesIn(Pack4xU8ClampCases())));
+
+std::vector<Case> Unpack4xI8Cases() {
+ return {
+ C({Val(u32(0x0000'0000))}, Vec(i32(0), i32(0), i32(0), i32(0))),
+ C({Val(u32(0x0102'0304))}, Vec(i32(4), i32(3), i32(2), i32(1))),
+ C({Val(u32(0xFCFD'FEFF))}, Vec(i32(-1), i32(-2), i32(-3), i32(-4))),
+ C({Val(u32(0x0403'02FF))}, Vec(i32(-1), i32(2), i32(3), i32(4))),
+ C({Val(u32(0x0403'FE01))}, Vec(i32(1), i32(-2), i32(3), i32(4))),
+ C({Val(u32(0x04FD'0201))}, Vec(i32(1), i32(2), i32(-3), i32(4))),
+ C({Val(u32(0xFC03'0201))}, Vec(i32(1), i32(2), i32(3), i32(-4))),
+ C({Val(u32(0xFCFD'FE01))}, Vec(i32(1), i32(-2), i32(-3), i32(-4))),
+ C({Val(u32(0xFCFD'02FF))}, Vec(i32(-1), i32(2), i32(-3), i32(-4))),
+ C({Val(u32(0xFC03'FEFF))}, Vec(i32(-1), i32(-2), i32(3), i32(-4))),
+ C({Val(u32(0x04FD'FEFF))}, Vec(i32(-1), i32(-2), i32(-3), i32(4))),
+ C({Val(u32(0x0403'FEFF))}, Vec(i32(-1), i32(-2), i32(3), i32(4))),
+ C({Val(u32(0x04FD'02FF))}, Vec(i32(-1), i32(2), i32(-3), i32(4))),
+ C({Val(u32(0xFC03'02FF))}, Vec(i32(-1), i32(2), i32(3), i32(-4))),
+ C({Val(u32(0x04FD'FE01))}, Vec(i32(1), i32(-2), i32(-3), i32(4))),
+ C({Val(u32(0xFC03'FE01))}, Vec(i32(1), i32(-2), i32(3), i32(-4))),
+ C({Val(u32(0xFCFD'0201))}, Vec(i32(1), i32(2), i32(-3), i32(-4))),
+ C({Val(u32(0x8081'7F7E))}, Vec(i32(126), i32(127), i32(-127), i32(-128))),
+ };
+}
+INSTANTIATE_TEST_SUITE_P( //
+ Unpack4xI8,
+ ConstEvalBuiltinTest,
+ testing::Combine(testing::Values(core::BuiltinFn::kUnpack4XI8),
+ testing::ValuesIn(Unpack4xI8Cases())));
+
+std::vector<Case> Unpack4xU8Cases() {
+ return {
+ C({Val(u32(0x0000'0000))}, Vec(u32(0), u32(0), u32(0), u32(0))),
+ C({Val(u32(0x0806'0402))}, Vec(u32(2), u32(4), u32(6), u32(8))),
+ C({Val(u32(0xFFFF'FFFF))}, Vec(u32(255), u32(255), u32(255), u32(255))),
+ C({Val(u32(0xFFFE'FDFC))}, Vec(u32(252), u32(253), u32(254), u32(255))),
+ };
+}
+INSTANTIATE_TEST_SUITE_P( //
+ Unpack4xU8,
+ ConstEvalBuiltinTest,
+ testing::Combine(testing::Values(core::BuiltinFn::kUnpack4XU8),
+ testing::ValuesIn(Unpack4xU8Cases())));
} // namespace
} // namespace tint::core::constant::test
diff --git a/src/tint/lang/core/core.def b/src/tint/lang/core/core.def
index 137caf5..20eb59e 100644
--- a/src/tint/lang/core/core.def
+++ b/src/tint/lang/core/core.def
@@ -634,6 +634,8 @@
@must_use @const fn pack4x8unorm(vec4<f32>) -> u32
@must_use @const fn pack4xI8(vec4<i32>) -> u32
@must_use @const fn pack4xU8(vec4<u32>) -> u32
+@must_use @const fn pack4xI8Clamp(vec4<i32>) -> u32
+@must_use @const fn pack4xU8Clamp(vec4<u32>) -> u32
@must_use @const fn pow<T: fa_f32_f16>(T, T) -> T
@must_use @const fn pow<N: num, T: fa_f32_f16>(vec<N, T>, vec<N, T>) -> vec<N, T>
@must_use @const fn quantizeToF16(f32) -> f32
@@ -676,6 +678,8 @@
@must_use @const fn unpack2x16unorm(u32) -> vec2<f32>
@must_use @const fn unpack4x8snorm(u32) -> vec4<f32>
@must_use @const fn unpack4x8unorm(u32) -> vec4<f32>
+@must_use @const fn unpack4xI8(u32) -> vec4<i32>
+@must_use @const fn unpack4xU8(u32) -> vec4<u32>
@stage("compute") fn workgroupBarrier()
@stage("compute") fn textureBarrier()
diff --git a/src/tint/lang/core/intrinsic/data.cc b/src/tint/lang/core/intrinsic/data.cc
index 72dd318..6d0cc0c 100644
--- a/src/tint/lang/core/intrinsic/data.cc
+++ b/src/tint/lang/core/intrinsic/data.cc
@@ -4830,63 +4830,67 @@
/* [47] */ &core::constant::Eval::pack4x8unorm,
/* [48] */ &core::constant::Eval::pack4xI8,
/* [49] */ &core::constant::Eval::pack4xU8,
- /* [50] */ &core::constant::Eval::pow,
- /* [51] */ &core::constant::Eval::quantizeToF16,
- /* [52] */ &core::constant::Eval::radians,
- /* [53] */ &core::constant::Eval::reflect,
- /* [54] */ &core::constant::Eval::refract,
- /* [55] */ &core::constant::Eval::reverseBits,
- /* [56] */ &core::constant::Eval::round,
- /* [57] */ &core::constant::Eval::saturate,
- /* [58] */ &core::constant::Eval::select_bool,
- /* [59] */ &core::constant::Eval::select_boolvec,
- /* [60] */ &core::constant::Eval::sign,
- /* [61] */ &core::constant::Eval::sin,
- /* [62] */ &core::constant::Eval::sinh,
- /* [63] */ &core::constant::Eval::smoothstep,
- /* [64] */ &core::constant::Eval::sqrt,
- /* [65] */ &core::constant::Eval::step,
- /* [66] */ &core::constant::Eval::tan,
- /* [67] */ &core::constant::Eval::tanh,
- /* [68] */ &core::constant::Eval::transpose,
- /* [69] */ &core::constant::Eval::trunc,
- /* [70] */ &core::constant::Eval::unpack2x16float,
- /* [71] */ &core::constant::Eval::unpack2x16snorm,
- /* [72] */ &core::constant::Eval::unpack2x16unorm,
- /* [73] */ &core::constant::Eval::unpack4x8snorm,
- /* [74] */ &core::constant::Eval::unpack4x8unorm,
- /* [75] */ &core::constant::Eval::Identity,
- /* [76] */ &core::constant::Eval::Not,
- /* [77] */ &core::constant::Eval::Complement,
- /* [78] */ &core::constant::Eval::UnaryMinus,
- /* [79] */ &core::constant::Eval::Plus,
- /* [80] */ &core::constant::Eval::Minus,
- /* [81] */ &core::constant::Eval::Multiply,
- /* [82] */ &core::constant::Eval::MultiplyMatVec,
- /* [83] */ &core::constant::Eval::MultiplyVecMat,
- /* [84] */ &core::constant::Eval::MultiplyMatMat,
- /* [85] */ &core::constant::Eval::Divide,
- /* [86] */ &core::constant::Eval::Modulo,
- /* [87] */ &core::constant::Eval::Xor,
- /* [88] */ &core::constant::Eval::And,
- /* [89] */ &core::constant::Eval::Or,
- /* [90] */ &core::constant::Eval::LogicalAnd,
- /* [91] */ &core::constant::Eval::LogicalOr,
- /* [92] */ &core::constant::Eval::Equal,
- /* [93] */ &core::constant::Eval::NotEqual,
- /* [94] */ &core::constant::Eval::LessThan,
- /* [95] */ &core::constant::Eval::GreaterThan,
- /* [96] */ &core::constant::Eval::LessThanEqual,
- /* [97] */ &core::constant::Eval::GreaterThanEqual,
- /* [98] */ &core::constant::Eval::ShiftLeft,
- /* [99] */ &core::constant::Eval::ShiftRight,
- /* [100] */ &core::constant::Eval::Zero,
- /* [101] */ &core::constant::Eval::Conv,
- /* [102] */ &core::constant::Eval::VecSplat,
- /* [103] */ &core::constant::Eval::VecInitS,
- /* [104] */ &core::constant::Eval::VecInitM,
- /* [105] */ &core::constant::Eval::MatInitS,
- /* [106] */ &core::constant::Eval::MatInitV,
+ /* [50] */ &core::constant::Eval::pack4xI8Clamp,
+ /* [51] */ &core::constant::Eval::pack4xU8Clamp,
+ /* [52] */ &core::constant::Eval::pow,
+ /* [53] */ &core::constant::Eval::quantizeToF16,
+ /* [54] */ &core::constant::Eval::radians,
+ /* [55] */ &core::constant::Eval::reflect,
+ /* [56] */ &core::constant::Eval::refract,
+ /* [57] */ &core::constant::Eval::reverseBits,
+ /* [58] */ &core::constant::Eval::round,
+ /* [59] */ &core::constant::Eval::saturate,
+ /* [60] */ &core::constant::Eval::select_bool,
+ /* [61] */ &core::constant::Eval::select_boolvec,
+ /* [62] */ &core::constant::Eval::sign,
+ /* [63] */ &core::constant::Eval::sin,
+ /* [64] */ &core::constant::Eval::sinh,
+ /* [65] */ &core::constant::Eval::smoothstep,
+ /* [66] */ &core::constant::Eval::sqrt,
+ /* [67] */ &core::constant::Eval::step,
+ /* [68] */ &core::constant::Eval::tan,
+ /* [69] */ &core::constant::Eval::tanh,
+ /* [70] */ &core::constant::Eval::transpose,
+ /* [71] */ &core::constant::Eval::trunc,
+ /* [72] */ &core::constant::Eval::unpack2x16float,
+ /* [73] */ &core::constant::Eval::unpack2x16snorm,
+ /* [74] */ &core::constant::Eval::unpack2x16unorm,
+ /* [75] */ &core::constant::Eval::unpack4x8snorm,
+ /* [76] */ &core::constant::Eval::unpack4x8unorm,
+ /* [77] */ &core::constant::Eval::unpack4xI8,
+ /* [78] */ &core::constant::Eval::unpack4xU8,
+ /* [79] */ &core::constant::Eval::Identity,
+ /* [80] */ &core::constant::Eval::Not,
+ /* [81] */ &core::constant::Eval::Complement,
+ /* [82] */ &core::constant::Eval::UnaryMinus,
+ /* [83] */ &core::constant::Eval::Plus,
+ /* [84] */ &core::constant::Eval::Minus,
+ /* [85] */ &core::constant::Eval::Multiply,
+ /* [86] */ &core::constant::Eval::MultiplyMatVec,
+ /* [87] */ &core::constant::Eval::MultiplyVecMat,
+ /* [88] */ &core::constant::Eval::MultiplyMatMat,
+ /* [89] */ &core::constant::Eval::Divide,
+ /* [90] */ &core::constant::Eval::Modulo,
+ /* [91] */ &core::constant::Eval::Xor,
+ /* [92] */ &core::constant::Eval::And,
+ /* [93] */ &core::constant::Eval::Or,
+ /* [94] */ &core::constant::Eval::LogicalAnd,
+ /* [95] */ &core::constant::Eval::LogicalOr,
+ /* [96] */ &core::constant::Eval::Equal,
+ /* [97] */ &core::constant::Eval::NotEqual,
+ /* [98] */ &core::constant::Eval::LessThan,
+ /* [99] */ &core::constant::Eval::GreaterThan,
+ /* [100] */ &core::constant::Eval::LessThanEqual,
+ /* [101] */ &core::constant::Eval::GreaterThanEqual,
+ /* [102] */ &core::constant::Eval::ShiftLeft,
+ /* [103] */ &core::constant::Eval::ShiftRight,
+ /* [104] */ &core::constant::Eval::Zero,
+ /* [105] */ &core::constant::Eval::Conv,
+ /* [106] */ &core::constant::Eval::VecSplat,
+ /* [107] */ &core::constant::Eval::VecInitS,
+ /* [108] */ &core::constant::Eval::VecInitM,
+ /* [109] */ &core::constant::Eval::MatInitS,
+ /* [110] */ &core::constant::Eval::MatInitV,
};
static_assert(ConstEvalFunctionIndex::CanIndex(kConstEvalFunctions),
@@ -5528,7 +5532,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(94),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(100),
+ /* const_eval_fn */ ConstEvalFunctionIndex(104),
},
{
/* [49] */
@@ -5541,7 +5545,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(52),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(100),
+ /* const_eval_fn */ ConstEvalFunctionIndex(104),
},
{
/* [50] */
@@ -5554,7 +5558,7 @@
/* parameters */ ParameterIndex(217),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(52),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(75),
+ /* const_eval_fn */ ConstEvalFunctionIndex(79),
},
{
/* [51] */
@@ -5567,7 +5571,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(52),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(102),
+ /* const_eval_fn */ ConstEvalFunctionIndex(106),
},
{
/* [52] */
@@ -5580,7 +5584,7 @@
/* parameters */ ParameterIndex(205),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(52),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [53] */
@@ -5593,7 +5597,7 @@
/* parameters */ ParameterIndex(295),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(52),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(104),
+ /* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
/* [54] */
@@ -5606,7 +5610,7 @@
/* parameters */ ParameterIndex(298),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(52),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(104),
+ /* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
/* [55] */
@@ -5619,7 +5623,7 @@
/* parameters */ ParameterIndex(301),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(52),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(104),
+ /* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
/* [56] */
@@ -5632,7 +5636,7 @@
/* parameters */ ParameterIndex(362),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(52),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(104),
+ /* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
/* [57] */
@@ -5645,7 +5649,7 @@
/* parameters */ ParameterIndex(364),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(52),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(104),
+ /* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
/* [58] */
@@ -5658,7 +5662,7 @@
/* parameters */ ParameterIndex(366),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(52),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(104),
+ /* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
/* [59] */
@@ -5671,7 +5675,7 @@
/* parameters */ ParameterIndex(384),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(28),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [60] */
@@ -5684,7 +5688,7 @@
/* parameters */ ParameterIndex(384),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(98),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [61] */
@@ -5697,7 +5701,7 @@
/* parameters */ ParameterIndex(384),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(30),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [62] */
@@ -5710,7 +5714,7 @@
/* parameters */ ParameterIndex(384),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(32),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [63] */
@@ -5723,7 +5727,7 @@
/* parameters */ ParameterIndex(384),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(100),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [64] */
@@ -6425,7 +6429,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(88),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(100),
+ /* const_eval_fn */ ConstEvalFunctionIndex(104),
},
{
/* [118] */
@@ -6438,7 +6442,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(10),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(100),
+ /* const_eval_fn */ ConstEvalFunctionIndex(104),
},
{
/* [119] */
@@ -6451,7 +6455,7 @@
/* parameters */ ParameterIndex(213),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(10),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(75),
+ /* const_eval_fn */ ConstEvalFunctionIndex(79),
},
{
/* [120] */
@@ -6464,7 +6468,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(10),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(102),
+ /* const_eval_fn */ ConstEvalFunctionIndex(106),
},
{
/* [121] */
@@ -6477,7 +6481,7 @@
/* parameters */ ParameterIndex(205),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(10),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [122] */
@@ -6490,7 +6494,7 @@
/* parameters */ ParameterIndex(295),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(10),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(104),
+ /* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
/* [123] */
@@ -6503,7 +6507,7 @@
/* parameters */ ParameterIndex(298),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(10),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(104),
+ /* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
/* [124] */
@@ -6516,7 +6520,7 @@
/* parameters */ ParameterIndex(383),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(56),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [125] */
@@ -6529,7 +6533,7 @@
/* parameters */ ParameterIndex(383),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(90),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [126] */
@@ -6542,7 +6546,7 @@
/* parameters */ ParameterIndex(383),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(66),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [127] */
@@ -6555,7 +6559,7 @@
/* parameters */ ParameterIndex(383),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(42),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [128] */
@@ -6568,7 +6572,7 @@
/* parameters */ ParameterIndex(383),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(92),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [129] */
@@ -6711,7 +6715,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(82),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(100),
+ /* const_eval_fn */ ConstEvalFunctionIndex(104),
},
{
/* [140] */
@@ -6724,7 +6728,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(72),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(100),
+ /* const_eval_fn */ ConstEvalFunctionIndex(104),
},
{
/* [141] */
@@ -6737,7 +6741,7 @@
/* parameters */ ParameterIndex(209),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(72),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(75),
+ /* const_eval_fn */ ConstEvalFunctionIndex(79),
},
{
/* [142] */
@@ -6750,7 +6754,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(72),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(102),
+ /* const_eval_fn */ ConstEvalFunctionIndex(106),
},
{
/* [143] */
@@ -6763,7 +6767,7 @@
/* parameters */ ParameterIndex(205),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(72),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [144] */
@@ -6776,7 +6780,7 @@
/* parameters */ ParameterIndex(382),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(26),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [145] */
@@ -6789,7 +6793,7 @@
/* parameters */ ParameterIndex(382),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(84),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [146] */
@@ -6802,7 +6806,7 @@
/* parameters */ ParameterIndex(382),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(54),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [147] */
@@ -6815,7 +6819,7 @@
/* parameters */ ParameterIndex(382),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(36),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [148] */
@@ -6828,7 +6832,7 @@
/* parameters */ ParameterIndex(382),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(86),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [149] */
@@ -6841,7 +6845,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(81),
+ /* const_eval_fn */ ConstEvalFunctionIndex(85),
},
{
/* [150] */
@@ -6854,7 +6858,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(81),
+ /* const_eval_fn */ ConstEvalFunctionIndex(85),
},
{
/* [151] */
@@ -6867,7 +6871,7 @@
/* parameters */ ParameterIndex(223),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(81),
+ /* const_eval_fn */ ConstEvalFunctionIndex(85),
},
{
/* [152] */
@@ -6880,7 +6884,7 @@
/* parameters */ ParameterIndex(350),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(81),
+ /* const_eval_fn */ ConstEvalFunctionIndex(85),
},
{
/* [153] */
@@ -6893,7 +6897,7 @@
/* parameters */ ParameterIndex(355),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(12),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(2),
- /* const_eval_fn */ ConstEvalFunctionIndex(81),
+ /* const_eval_fn */ ConstEvalFunctionIndex(85),
},
{
/* [154] */
@@ -6906,7 +6910,7 @@
/* parameters */ ParameterIndex(354),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(12),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(2),
- /* const_eval_fn */ ConstEvalFunctionIndex(81),
+ /* const_eval_fn */ ConstEvalFunctionIndex(85),
},
{
/* [155] */
@@ -6919,7 +6923,7 @@
/* parameters */ ParameterIndex(356),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(3),
- /* const_eval_fn */ ConstEvalFunctionIndex(82),
+ /* const_eval_fn */ ConstEvalFunctionIndex(86),
},
{
/* [156] */
@@ -6932,7 +6936,7 @@
/* parameters */ ParameterIndex(358),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(83),
+ /* const_eval_fn */ ConstEvalFunctionIndex(87),
},
{
/* [157] */
@@ -6945,7 +6949,7 @@
/* parameters */ ParameterIndex(360),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(12),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(18),
- /* const_eval_fn */ ConstEvalFunctionIndex(84),
+ /* const_eval_fn */ ConstEvalFunctionIndex(88),
},
{
/* [158] */
@@ -7400,7 +7404,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(102),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(100),
+ /* const_eval_fn */ ConstEvalFunctionIndex(104),
},
{
/* [193] */
@@ -7413,7 +7417,7 @@
/* parameters */ ParameterIndex(385),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(102),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(75),
+ /* const_eval_fn */ ConstEvalFunctionIndex(79),
},
{
/* [194] */
@@ -7426,7 +7430,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(102),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(105),
+ /* const_eval_fn */ ConstEvalFunctionIndex(109),
},
{
/* [195] */
@@ -7439,7 +7443,7 @@
/* parameters */ ParameterIndex(209),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(102),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(106),
+ /* const_eval_fn */ ConstEvalFunctionIndex(110),
},
{
/* [196] */
@@ -7452,7 +7456,7 @@
/* parameters */ ParameterIndex(386),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(104),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [197] */
@@ -7465,7 +7469,7 @@
/* parameters */ ParameterIndex(387),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(106),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [198] */
@@ -7478,7 +7482,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(108),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(100),
+ /* const_eval_fn */ ConstEvalFunctionIndex(104),
},
{
/* [199] */
@@ -7491,7 +7495,7 @@
/* parameters */ ParameterIndex(388),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(108),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(75),
+ /* const_eval_fn */ ConstEvalFunctionIndex(79),
},
{
/* [200] */
@@ -7504,7 +7508,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(108),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(105),
+ /* const_eval_fn */ ConstEvalFunctionIndex(109),
},
{
/* [201] */
@@ -7517,7 +7521,7 @@
/* parameters */ ParameterIndex(213),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(108),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(106),
+ /* const_eval_fn */ ConstEvalFunctionIndex(110),
},
{
/* [202] */
@@ -7530,7 +7534,7 @@
/* parameters */ ParameterIndex(389),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(110),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [203] */
@@ -7543,7 +7547,7 @@
/* parameters */ ParameterIndex(390),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(112),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [204] */
@@ -7556,7 +7560,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(114),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(100),
+ /* const_eval_fn */ ConstEvalFunctionIndex(104),
},
{
/* [205] */
@@ -7569,7 +7573,7 @@
/* parameters */ ParameterIndex(391),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(114),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(75),
+ /* const_eval_fn */ ConstEvalFunctionIndex(79),
},
{
/* [206] */
@@ -7582,7 +7586,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(114),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(105),
+ /* const_eval_fn */ ConstEvalFunctionIndex(109),
},
{
/* [207] */
@@ -7595,7 +7599,7 @@
/* parameters */ ParameterIndex(217),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(114),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(106),
+ /* const_eval_fn */ ConstEvalFunctionIndex(110),
},
{
/* [208] */
@@ -7608,7 +7612,7 @@
/* parameters */ ParameterIndex(392),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(116),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [209] */
@@ -7621,7 +7625,7 @@
/* parameters */ ParameterIndex(393),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(118),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [210] */
@@ -7634,7 +7638,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(120),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(100),
+ /* const_eval_fn */ ConstEvalFunctionIndex(104),
},
{
/* [211] */
@@ -7647,7 +7651,7 @@
/* parameters */ ParameterIndex(394),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(120),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(75),
+ /* const_eval_fn */ ConstEvalFunctionIndex(79),
},
{
/* [212] */
@@ -7660,7 +7664,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(120),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(105),
+ /* const_eval_fn */ ConstEvalFunctionIndex(109),
},
{
/* [213] */
@@ -7673,7 +7677,7 @@
/* parameters */ ParameterIndex(209),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(120),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(106),
+ /* const_eval_fn */ ConstEvalFunctionIndex(110),
},
{
/* [214] */
@@ -7686,7 +7690,7 @@
/* parameters */ ParameterIndex(395),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(122),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [215] */
@@ -7699,7 +7703,7 @@
/* parameters */ ParameterIndex(396),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(124),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [216] */
@@ -7712,7 +7716,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(126),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(100),
+ /* const_eval_fn */ ConstEvalFunctionIndex(104),
},
{
/* [217] */
@@ -7725,7 +7729,7 @@
/* parameters */ ParameterIndex(397),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(126),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(75),
+ /* const_eval_fn */ ConstEvalFunctionIndex(79),
},
{
/* [218] */
@@ -7738,7 +7742,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(126),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(105),
+ /* const_eval_fn */ ConstEvalFunctionIndex(109),
},
{
/* [219] */
@@ -7751,7 +7755,7 @@
/* parameters */ ParameterIndex(213),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(126),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(106),
+ /* const_eval_fn */ ConstEvalFunctionIndex(110),
},
{
/* [220] */
@@ -7764,7 +7768,7 @@
/* parameters */ ParameterIndex(398),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(128),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [221] */
@@ -7777,7 +7781,7 @@
/* parameters */ ParameterIndex(399),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(130),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [222] */
@@ -7790,7 +7794,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(132),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(100),
+ /* const_eval_fn */ ConstEvalFunctionIndex(104),
},
{
/* [223] */
@@ -7803,7 +7807,7 @@
/* parameters */ ParameterIndex(400),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(132),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(75),
+ /* const_eval_fn */ ConstEvalFunctionIndex(79),
},
{
/* [224] */
@@ -7816,7 +7820,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(132),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(105),
+ /* const_eval_fn */ ConstEvalFunctionIndex(109),
},
{
/* [225] */
@@ -7829,7 +7833,7 @@
/* parameters */ ParameterIndex(217),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(132),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(106),
+ /* const_eval_fn */ ConstEvalFunctionIndex(110),
},
{
/* [226] */
@@ -7842,7 +7846,7 @@
/* parameters */ ParameterIndex(401),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(134),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [227] */
@@ -7855,7 +7859,7 @@
/* parameters */ ParameterIndex(402),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(136),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [228] */
@@ -7868,7 +7872,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(138),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(100),
+ /* const_eval_fn */ ConstEvalFunctionIndex(104),
},
{
/* [229] */
@@ -7881,7 +7885,7 @@
/* parameters */ ParameterIndex(403),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(138),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(75),
+ /* const_eval_fn */ ConstEvalFunctionIndex(79),
},
{
/* [230] */
@@ -7894,7 +7898,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(138),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(105),
+ /* const_eval_fn */ ConstEvalFunctionIndex(109),
},
{
/* [231] */
@@ -7907,7 +7911,7 @@
/* parameters */ ParameterIndex(209),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(138),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(106),
+ /* const_eval_fn */ ConstEvalFunctionIndex(110),
},
{
/* [232] */
@@ -7920,7 +7924,7 @@
/* parameters */ ParameterIndex(404),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(140),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [233] */
@@ -7933,7 +7937,7 @@
/* parameters */ ParameterIndex(405),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(142),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [234] */
@@ -7946,7 +7950,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(144),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(100),
+ /* const_eval_fn */ ConstEvalFunctionIndex(104),
},
{
/* [235] */
@@ -7959,7 +7963,7 @@
/* parameters */ ParameterIndex(406),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(144),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(75),
+ /* const_eval_fn */ ConstEvalFunctionIndex(79),
},
{
/* [236] */
@@ -7972,7 +7976,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(144),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(105),
+ /* const_eval_fn */ ConstEvalFunctionIndex(109),
},
{
/* [237] */
@@ -7985,7 +7989,7 @@
/* parameters */ ParameterIndex(213),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(144),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(106),
+ /* const_eval_fn */ ConstEvalFunctionIndex(110),
},
{
/* [238] */
@@ -7998,7 +8002,7 @@
/* parameters */ ParameterIndex(407),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(146),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [239] */
@@ -8011,7 +8015,7 @@
/* parameters */ ParameterIndex(408),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(148),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [240] */
@@ -8024,7 +8028,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(150),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(100),
+ /* const_eval_fn */ ConstEvalFunctionIndex(104),
},
{
/* [241] */
@@ -8037,7 +8041,7 @@
/* parameters */ ParameterIndex(409),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(150),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(75),
+ /* const_eval_fn */ ConstEvalFunctionIndex(79),
},
{
/* [242] */
@@ -8050,7 +8054,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(150),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(105),
+ /* const_eval_fn */ ConstEvalFunctionIndex(109),
},
{
/* [243] */
@@ -8063,7 +8067,7 @@
/* parameters */ ParameterIndex(217),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(150),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(106),
+ /* const_eval_fn */ ConstEvalFunctionIndex(110),
},
{
/* [244] */
@@ -8076,7 +8080,7 @@
/* parameters */ ParameterIndex(410),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(152),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [245] */
@@ -8089,7 +8093,7 @@
/* parameters */ ParameterIndex(411),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(154),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [246] */
@@ -8167,7 +8171,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(79),
+ /* const_eval_fn */ ConstEvalFunctionIndex(83),
},
{
/* [252] */
@@ -8180,7 +8184,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(79),
+ /* const_eval_fn */ ConstEvalFunctionIndex(83),
},
{
/* [253] */
@@ -8193,7 +8197,7 @@
/* parameters */ ParameterIndex(223),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(79),
+ /* const_eval_fn */ ConstEvalFunctionIndex(83),
},
{
/* [254] */
@@ -8206,7 +8210,7 @@
/* parameters */ ParameterIndex(350),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(79),
+ /* const_eval_fn */ ConstEvalFunctionIndex(83),
},
{
/* [255] */
@@ -8219,7 +8223,7 @@
/* parameters */ ParameterIndex(353),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(12),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(2),
- /* const_eval_fn */ ConstEvalFunctionIndex(79),
+ /* const_eval_fn */ ConstEvalFunctionIndex(83),
},
{
/* [256] */
@@ -8232,7 +8236,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(80),
+ /* const_eval_fn */ ConstEvalFunctionIndex(84),
},
{
/* [257] */
@@ -8245,7 +8249,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(80),
+ /* const_eval_fn */ ConstEvalFunctionIndex(84),
},
{
/* [258] */
@@ -8258,7 +8262,7 @@
/* parameters */ ParameterIndex(223),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(80),
+ /* const_eval_fn */ ConstEvalFunctionIndex(84),
},
{
/* [259] */
@@ -8271,7 +8275,7 @@
/* parameters */ ParameterIndex(350),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(80),
+ /* const_eval_fn */ ConstEvalFunctionIndex(84),
},
{
/* [260] */
@@ -8284,7 +8288,7 @@
/* parameters */ ParameterIndex(353),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(12),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(2),
- /* const_eval_fn */ ConstEvalFunctionIndex(80),
+ /* const_eval_fn */ ConstEvalFunctionIndex(84),
},
{
/* [261] */
@@ -8297,7 +8301,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(85),
+ /* const_eval_fn */ ConstEvalFunctionIndex(89),
},
{
/* [262] */
@@ -8310,7 +8314,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(85),
+ /* const_eval_fn */ ConstEvalFunctionIndex(89),
},
{
/* [263] */
@@ -8323,7 +8327,7 @@
/* parameters */ ParameterIndex(223),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(85),
+ /* const_eval_fn */ ConstEvalFunctionIndex(89),
},
{
/* [264] */
@@ -8336,7 +8340,7 @@
/* parameters */ ParameterIndex(350),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(85),
+ /* const_eval_fn */ ConstEvalFunctionIndex(89),
},
{
/* [265] */
@@ -8349,7 +8353,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(86),
+ /* const_eval_fn */ ConstEvalFunctionIndex(90),
},
{
/* [266] */
@@ -8362,7 +8366,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(86),
+ /* const_eval_fn */ ConstEvalFunctionIndex(90),
},
{
/* [267] */
@@ -8375,7 +8379,7 @@
/* parameters */ ParameterIndex(223),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(86),
+ /* const_eval_fn */ ConstEvalFunctionIndex(90),
},
{
/* [268] */
@@ -8388,7 +8392,7 @@
/* parameters */ ParameterIndex(350),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(86),
+ /* const_eval_fn */ ConstEvalFunctionIndex(90),
},
{
/* [269] */
@@ -8401,7 +8405,7 @@
/* parameters */ ParameterIndex(226),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(9),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(88),
+ /* const_eval_fn */ ConstEvalFunctionIndex(92),
},
{
/* [270] */
@@ -8414,7 +8418,7 @@
/* parameters */ ParameterIndex(233),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(8),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(88),
+ /* const_eval_fn */ ConstEvalFunctionIndex(92),
},
{
/* [271] */
@@ -8427,7 +8431,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(88),
+ /* const_eval_fn */ ConstEvalFunctionIndex(92),
},
{
/* [272] */
@@ -8440,7 +8444,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(88),
+ /* const_eval_fn */ ConstEvalFunctionIndex(92),
},
{
/* [273] */
@@ -8453,7 +8457,7 @@
/* parameters */ ParameterIndex(226),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(9),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(89),
+ /* const_eval_fn */ ConstEvalFunctionIndex(93),
},
{
/* [274] */
@@ -8466,7 +8470,7 @@
/* parameters */ ParameterIndex(233),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(8),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(89),
+ /* const_eval_fn */ ConstEvalFunctionIndex(93),
},
{
/* [275] */
@@ -8479,7 +8483,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(89),
+ /* const_eval_fn */ ConstEvalFunctionIndex(93),
},
{
/* [276] */
@@ -8492,7 +8496,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(89),
+ /* const_eval_fn */ ConstEvalFunctionIndex(93),
},
{
/* [277] */
@@ -8544,7 +8548,7 @@
/* parameters */ ParameterIndex(224),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(58),
+ /* const_eval_fn */ ConstEvalFunctionIndex(60),
},
{
/* [281] */
@@ -8557,7 +8561,7 @@
/* parameters */ ParameterIndex(228),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(58),
+ /* const_eval_fn */ ConstEvalFunctionIndex(60),
},
{
/* [282] */
@@ -8570,7 +8574,7 @@
/* parameters */ ParameterIndex(231),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(59),
+ /* const_eval_fn */ ConstEvalFunctionIndex(61),
},
{
/* [283] */
@@ -8583,7 +8587,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(31),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(100),
+ /* const_eval_fn */ ConstEvalFunctionIndex(104),
},
{
/* [284] */
@@ -8596,7 +8600,7 @@
/* parameters */ ParameterIndex(380),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(31),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(75),
+ /* const_eval_fn */ ConstEvalFunctionIndex(79),
},
{
/* [285] */
@@ -8609,7 +8613,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(31),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [286] */
@@ -8622,7 +8626,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(33),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(100),
+ /* const_eval_fn */ ConstEvalFunctionIndex(104),
},
{
/* [287] */
@@ -8635,7 +8639,7 @@
/* parameters */ ParameterIndex(17),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(33),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(75),
+ /* const_eval_fn */ ConstEvalFunctionIndex(79),
},
{
/* [288] */
@@ -8648,7 +8652,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(33),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [289] */
@@ -8661,7 +8665,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(15),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(100),
+ /* const_eval_fn */ ConstEvalFunctionIndex(104),
},
{
/* [290] */
@@ -8674,7 +8678,7 @@
/* parameters */ ParameterIndex(370),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(15),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(75),
+ /* const_eval_fn */ ConstEvalFunctionIndex(79),
},
{
/* [291] */
@@ -8687,7 +8691,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(15),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [292] */
@@ -8700,7 +8704,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(85),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(100),
+ /* const_eval_fn */ ConstEvalFunctionIndex(104),
},
{
/* [293] */
@@ -8713,7 +8717,7 @@
/* parameters */ ParameterIndex(381),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(85),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(75),
+ /* const_eval_fn */ ConstEvalFunctionIndex(79),
},
{
/* [294] */
@@ -8726,7 +8730,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(85),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [295] */
@@ -8739,7 +8743,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(9),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(100),
+ /* const_eval_fn */ ConstEvalFunctionIndex(104),
},
{
/* [296] */
@@ -8752,7 +8756,7 @@
/* parameters */ ParameterIndex(226),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(9),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(75),
+ /* const_eval_fn */ ConstEvalFunctionIndex(79),
},
{
/* [297] */
@@ -8765,7 +8769,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(9),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [298] */
@@ -9766,7 +9770,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(50),
+ /* const_eval_fn */ ConstEvalFunctionIndex(52),
},
{
/* [375] */
@@ -9779,7 +9783,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(50),
+ /* const_eval_fn */ ConstEvalFunctionIndex(52),
},
{
/* [376] */
@@ -9792,7 +9796,7 @@
/* parameters */ ParameterIndex(370),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(15),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(51),
+ /* const_eval_fn */ ConstEvalFunctionIndex(53),
},
{
/* [377] */
@@ -9805,7 +9809,7 @@
/* parameters */ ParameterIndex(371),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(14),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(51),
+ /* const_eval_fn */ ConstEvalFunctionIndex(53),
},
{
/* [378] */
@@ -9818,7 +9822,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(52),
+ /* const_eval_fn */ ConstEvalFunctionIndex(54),
},
{
/* [379] */
@@ -9831,7 +9835,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(52),
+ /* const_eval_fn */ ConstEvalFunctionIndex(54),
},
{
/* [380] */
@@ -9844,7 +9848,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(55),
+ /* const_eval_fn */ ConstEvalFunctionIndex(57),
},
{
/* [381] */
@@ -9857,7 +9861,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(55),
+ /* const_eval_fn */ ConstEvalFunctionIndex(57),
},
{
/* [382] */
@@ -9870,7 +9874,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(56),
+ /* const_eval_fn */ ConstEvalFunctionIndex(58),
},
{
/* [383] */
@@ -9883,7 +9887,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(56),
+ /* const_eval_fn */ ConstEvalFunctionIndex(58),
},
{
/* [384] */
@@ -9896,7 +9900,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(57),
+ /* const_eval_fn */ ConstEvalFunctionIndex(59),
},
{
/* [385] */
@@ -9909,7 +9913,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(57),
+ /* const_eval_fn */ ConstEvalFunctionIndex(59),
},
{
/* [386] */
@@ -9922,7 +9926,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(60),
+ /* const_eval_fn */ ConstEvalFunctionIndex(62),
},
{
/* [387] */
@@ -9935,7 +9939,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(60),
+ /* const_eval_fn */ ConstEvalFunctionIndex(62),
},
{
/* [388] */
@@ -9948,7 +9952,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(61),
+ /* const_eval_fn */ ConstEvalFunctionIndex(63),
},
{
/* [389] */
@@ -9961,7 +9965,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(61),
+ /* const_eval_fn */ ConstEvalFunctionIndex(63),
},
{
/* [390] */
@@ -9974,7 +9978,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(62),
+ /* const_eval_fn */ ConstEvalFunctionIndex(64),
},
{
/* [391] */
@@ -9987,7 +9991,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(62),
+ /* const_eval_fn */ ConstEvalFunctionIndex(64),
},
{
/* [392] */
@@ -10000,7 +10004,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(63),
+ /* const_eval_fn */ ConstEvalFunctionIndex(65),
},
{
/* [393] */
@@ -10013,7 +10017,7 @@
/* parameters */ ParameterIndex(221),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(63),
+ /* const_eval_fn */ ConstEvalFunctionIndex(65),
},
{
/* [394] */
@@ -10026,7 +10030,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(64),
+ /* const_eval_fn */ ConstEvalFunctionIndex(66),
},
{
/* [395] */
@@ -10039,7 +10043,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(64),
+ /* const_eval_fn */ ConstEvalFunctionIndex(66),
},
{
/* [396] */
@@ -10052,7 +10056,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(65),
+ /* const_eval_fn */ ConstEvalFunctionIndex(67),
},
{
/* [397] */
@@ -10065,7 +10069,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(65),
+ /* const_eval_fn */ ConstEvalFunctionIndex(67),
},
{
/* [398] */
@@ -10078,7 +10082,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(66),
+ /* const_eval_fn */ ConstEvalFunctionIndex(68),
},
{
/* [399] */
@@ -10091,7 +10095,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(66),
+ /* const_eval_fn */ ConstEvalFunctionIndex(68),
},
{
/* [400] */
@@ -10104,7 +10108,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(67),
+ /* const_eval_fn */ ConstEvalFunctionIndex(69),
},
{
/* [401] */
@@ -10117,7 +10121,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(67),
+ /* const_eval_fn */ ConstEvalFunctionIndex(69),
},
{
/* [402] */
@@ -10130,7 +10134,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(69),
+ /* const_eval_fn */ ConstEvalFunctionIndex(71),
},
{
/* [403] */
@@ -10143,7 +10147,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(69),
+ /* const_eval_fn */ ConstEvalFunctionIndex(71),
},
{
/* [404] */
@@ -10208,7 +10212,7 @@
/* parameters */ ParameterIndex(226),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(9),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(76),
+ /* const_eval_fn */ ConstEvalFunctionIndex(80),
},
{
/* [409] */
@@ -10221,7 +10225,7 @@
/* parameters */ ParameterIndex(233),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(8),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(76),
+ /* const_eval_fn */ ConstEvalFunctionIndex(80),
},
{
/* [410] */
@@ -10234,7 +10238,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(77),
+ /* const_eval_fn */ ConstEvalFunctionIndex(81),
},
{
/* [411] */
@@ -10247,7 +10251,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(77),
+ /* const_eval_fn */ ConstEvalFunctionIndex(81),
},
{
/* [412] */
@@ -10260,7 +10264,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(78),
+ /* const_eval_fn */ ConstEvalFunctionIndex(82),
},
{
/* [413] */
@@ -10273,7 +10277,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(78),
+ /* const_eval_fn */ ConstEvalFunctionIndex(82),
},
{
/* [414] */
@@ -10286,7 +10290,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(87),
+ /* const_eval_fn */ ConstEvalFunctionIndex(91),
},
{
/* [415] */
@@ -10299,7 +10303,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(87),
+ /* const_eval_fn */ ConstEvalFunctionIndex(91),
},
{
/* [416] */
@@ -10312,7 +10316,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(9),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(92),
+ /* const_eval_fn */ ConstEvalFunctionIndex(96),
},
{
/* [417] */
@@ -10325,7 +10329,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(8),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(92),
+ /* const_eval_fn */ ConstEvalFunctionIndex(96),
},
{
/* [418] */
@@ -10338,7 +10342,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(9),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(93),
+ /* const_eval_fn */ ConstEvalFunctionIndex(97),
},
{
/* [419] */
@@ -10351,7 +10355,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(8),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(93),
+ /* const_eval_fn */ ConstEvalFunctionIndex(97),
},
{
/* [420] */
@@ -10364,7 +10368,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(9),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(94),
+ /* const_eval_fn */ ConstEvalFunctionIndex(98),
},
{
/* [421] */
@@ -10377,7 +10381,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(8),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(94),
+ /* const_eval_fn */ ConstEvalFunctionIndex(98),
},
{
/* [422] */
@@ -10390,7 +10394,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(9),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(95),
+ /* const_eval_fn */ ConstEvalFunctionIndex(99),
},
{
/* [423] */
@@ -10403,7 +10407,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(8),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(95),
+ /* const_eval_fn */ ConstEvalFunctionIndex(99),
},
{
/* [424] */
@@ -10416,7 +10420,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(9),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(96),
+ /* const_eval_fn */ ConstEvalFunctionIndex(100),
},
{
/* [425] */
@@ -10429,7 +10433,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(8),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(96),
+ /* const_eval_fn */ ConstEvalFunctionIndex(100),
},
{
/* [426] */
@@ -10442,7 +10446,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(9),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(97),
+ /* const_eval_fn */ ConstEvalFunctionIndex(101),
},
{
/* [427] */
@@ -10455,7 +10459,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(8),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(97),
+ /* const_eval_fn */ ConstEvalFunctionIndex(101),
},
{
/* [428] */
@@ -10468,7 +10472,7 @@
/* parameters */ ParameterIndex(16),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(98),
+ /* const_eval_fn */ ConstEvalFunctionIndex(102),
},
{
/* [429] */
@@ -10481,7 +10485,7 @@
/* parameters */ ParameterIndex(351),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(98),
+ /* const_eval_fn */ ConstEvalFunctionIndex(102),
},
{
/* [430] */
@@ -10494,7 +10498,7 @@
/* parameters */ ParameterIndex(16),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(99),
+ /* const_eval_fn */ ConstEvalFunctionIndex(103),
},
{
/* [431] */
@@ -10507,7 +10511,7 @@
/* parameters */ ParameterIndex(351),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(99),
+ /* const_eval_fn */ ConstEvalFunctionIndex(103),
},
{
/* [432] */
@@ -10707,6 +10711,32 @@
{
/* [447] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
+ /* num_parameters */ 1,
+ /* num_template_types */ 0,
+ /* num_template_numbers */ 0,
+ /* template_types */ TemplateTypeIndex(/* invalid */),
+ /* template_numbers */ TemplateNumberIndex(/* invalid */),
+ /* parameters */ ParameterIndex(374),
+ /* return_type_matcher_indices */ TypeMatcherIndicesIndex(33),
+ /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
+ /* const_eval_fn */ ConstEvalFunctionIndex(50),
+ },
+ {
+ /* [448] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
+ /* num_parameters */ 1,
+ /* num_template_types */ 0,
+ /* num_template_numbers */ 0,
+ /* template_types */ TemplateTypeIndex(/* invalid */),
+ /* template_numbers */ TemplateNumberIndex(/* invalid */),
+ /* parameters */ ParameterIndex(375),
+ /* return_type_matcher_indices */ TypeMatcherIndicesIndex(33),
+ /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
+ /* const_eval_fn */ ConstEvalFunctionIndex(51),
+ },
+ {
+ /* [449] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 2,
/* num_template_types */ 1,
/* num_template_numbers */ 1,
@@ -10715,10 +10745,10 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(53),
+ /* const_eval_fn */ ConstEvalFunctionIndex(55),
},
{
- /* [448] */
+ /* [450] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 3,
/* num_template_types */ 1,
@@ -10728,10 +10758,10 @@
/* parameters */ ParameterIndex(222),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(54),
+ /* const_eval_fn */ ConstEvalFunctionIndex(56),
},
{
- /* [449] */
+ /* [451] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 0,
/* num_template_types */ 0,
@@ -10744,7 +10774,7 @@
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [450] */
+ /* [452] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 1,
/* num_template_types */ 1,
@@ -10754,35 +10784,9 @@
/* parameters */ ParameterIndex(353),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(12),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(3),
- /* const_eval_fn */ ConstEvalFunctionIndex(68),
- },
- {
- /* [451] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
- /* num_parameters */ 1,
- /* num_template_types */ 0,
- /* num_template_numbers */ 0,
- /* template_types */ TemplateTypeIndex(/* invalid */),
- /* template_numbers */ TemplateNumberIndex(/* invalid */),
- /* parameters */ ParameterIndex(17),
- /* return_type_matcher_indices */ TypeMatcherIndicesIndex(26),
- /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(70),
},
{
- /* [452] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
- /* num_parameters */ 1,
- /* num_template_types */ 0,
- /* num_template_numbers */ 0,
- /* template_types */ TemplateTypeIndex(/* invalid */),
- /* template_numbers */ TemplateNumberIndex(/* invalid */),
- /* parameters */ ParameterIndex(17),
- /* return_type_matcher_indices */ TypeMatcherIndicesIndex(26),
- /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(71),
- },
- {
/* [453] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 1,
@@ -10804,7 +10808,7 @@
/* template_types */ TemplateTypeIndex(/* invalid */),
/* template_numbers */ TemplateNumberIndex(/* invalid */),
/* parameters */ ParameterIndex(17),
- /* return_type_matcher_indices */ TypeMatcherIndicesIndex(28),
+ /* return_type_matcher_indices */ TypeMatcherIndicesIndex(26),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(73),
},
@@ -10817,12 +10821,64 @@
/* template_types */ TemplateTypeIndex(/* invalid */),
/* template_numbers */ TemplateNumberIndex(/* invalid */),
/* parameters */ ParameterIndex(17),
- /* return_type_matcher_indices */ TypeMatcherIndicesIndex(28),
+ /* return_type_matcher_indices */ TypeMatcherIndicesIndex(26),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(74),
},
{
/* [456] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
+ /* num_parameters */ 1,
+ /* num_template_types */ 0,
+ /* num_template_numbers */ 0,
+ /* template_types */ TemplateTypeIndex(/* invalid */),
+ /* template_numbers */ TemplateNumberIndex(/* invalid */),
+ /* parameters */ ParameterIndex(17),
+ /* return_type_matcher_indices */ TypeMatcherIndicesIndex(28),
+ /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
+ /* const_eval_fn */ ConstEvalFunctionIndex(75),
+ },
+ {
+ /* [457] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
+ /* num_parameters */ 1,
+ /* num_template_types */ 0,
+ /* num_template_numbers */ 0,
+ /* template_types */ TemplateTypeIndex(/* invalid */),
+ /* template_numbers */ TemplateNumberIndex(/* invalid */),
+ /* parameters */ ParameterIndex(17),
+ /* return_type_matcher_indices */ TypeMatcherIndicesIndex(28),
+ /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
+ /* const_eval_fn */ ConstEvalFunctionIndex(76),
+ },
+ {
+ /* [458] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
+ /* num_parameters */ 1,
+ /* num_template_types */ 0,
+ /* num_template_numbers */ 0,
+ /* template_types */ TemplateTypeIndex(/* invalid */),
+ /* template_numbers */ TemplateNumberIndex(/* invalid */),
+ /* parameters */ ParameterIndex(17),
+ /* return_type_matcher_indices */ TypeMatcherIndicesIndex(30),
+ /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
+ /* const_eval_fn */ ConstEvalFunctionIndex(77),
+ },
+ {
+ /* [459] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
+ /* num_parameters */ 1,
+ /* num_template_types */ 0,
+ /* num_template_numbers */ 0,
+ /* template_types */ TemplateTypeIndex(/* invalid */),
+ /* template_numbers */ TemplateNumberIndex(/* invalid */),
+ /* parameters */ ParameterIndex(17),
+ /* return_type_matcher_indices */ TypeMatcherIndicesIndex(32),
+ /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
+ /* const_eval_fn */ ConstEvalFunctionIndex(78),
+ },
+ {
+ /* [460] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 1,
/* num_template_types */ 1,
@@ -10835,7 +10891,7 @@
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [457] */
+ /* [461] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 2,
/* num_template_types */ 1,
@@ -10848,7 +10904,7 @@
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [458] */
+ /* [462] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 2,
/* num_template_types */ 1,
@@ -10861,7 +10917,7 @@
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [459] */
+ /* [463] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 3,
/* num_template_types */ 1,
@@ -10874,7 +10930,7 @@
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [460] */
+ /* [464] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 0,
/* num_template_types */ 0,
@@ -10887,7 +10943,7 @@
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [461] */
+ /* [465] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 2,
/* num_template_types */ 1,
@@ -10900,7 +10956,7 @@
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [462] */
+ /* [466] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 1,
/* num_template_types */ 1,
@@ -10910,10 +10966,10 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(75),
+ /* const_eval_fn */ ConstEvalFunctionIndex(79),
},
{
- /* [463] */
+ /* [467] */
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 2,
/* num_template_types */ 0,
@@ -10923,10 +10979,10 @@
/* parameters */ ParameterIndex(226),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(9),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(90),
+ /* const_eval_fn */ ConstEvalFunctionIndex(94),
},
{
- /* [464] */
+ /* [468] */
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 2,
/* num_template_types */ 0,
@@ -10936,10 +10992,10 @@
/* parameters */ ParameterIndex(226),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(9),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(91),
+ /* const_eval_fn */ ConstEvalFunctionIndex(95),
},
{
- /* [465] */
+ /* [469] */
/* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 1,
/* num_template_types */ 1,
@@ -10949,7 +11005,7 @@
/* parameters */ ParameterIndex(213),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(156),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
};
@@ -11379,60 +11435,72 @@
},
{
/* [62] */
+ /* fn pack4xI8Clamp(vec4<i32>) -> u32 */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(447),
+ },
+ {
+ /* [63] */
+ /* fn pack4xU8Clamp(vec4<u32>) -> u32 */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(448),
+ },
+ {
+ /* [64] */
/* fn pow<T : fa_f32_f16>(T, T) -> T */
/* fn pow<N : num, T : fa_f32_f16>(vec<N, T>, vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(374),
},
{
- /* [63] */
+ /* [65] */
/* fn quantizeToF16(f32) -> f32 */
/* fn quantizeToF16<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(376),
},
{
- /* [64] */
+ /* [66] */
/* fn radians<T : fa_f32_f16>(T) -> T */
/* fn radians<N : num, T : fa_f32_f16>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(378),
},
{
- /* [65] */
+ /* [67] */
/* fn reflect<N : num, T : fa_f32_f16>(vec<N, T>, vec<N, T>) -> vec<N, T> */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(447),
+ /* overloads */ OverloadIndex(449),
},
{
- /* [66] */
+ /* [68] */
/* fn refract<N : num, T : fa_f32_f16>(vec<N, T>, vec<N, T>, T) -> vec<N, T> */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(448),
+ /* overloads */ OverloadIndex(450),
},
{
- /* [67] */
+ /* [69] */
/* fn reverseBits<T : iu32>(T) -> T */
/* fn reverseBits<N : num, T : iu32>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(380),
},
{
- /* [68] */
+ /* [70] */
/* fn round<T : fa_f32_f16>(@test_value(3.5) T) -> T */
/* fn round<N : num, T : fa_f32_f16>(@test_value(3.5) vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(382),
},
{
- /* [69] */
+ /* [71] */
/* fn saturate<T : fa_f32_f16>(@test_value(2) T) -> T */
/* fn saturate<T : fa_f32_f16, N : num>(@test_value(2) vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(384),
},
{
- /* [70] */
+ /* [72] */
/* fn select<T : scalar>(T, T, bool) -> T */
/* 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> */
@@ -11440,124 +11508,136 @@
/* overloads */ OverloadIndex(280),
},
{
- /* [71] */
+ /* [73] */
/* fn sign<T : fia_fi32_f16>(T) -> T */
/* fn sign<N : num, T : fia_fi32_f16>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(386),
},
{
- /* [72] */
+ /* [74] */
/* fn sin<T : fa_f32_f16>(@test_value(1.57079632679) T) -> T */
/* fn sin<N : num, T : fa_f32_f16>(@test_value(1.57079632679) vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(388),
},
{
- /* [73] */
+ /* [75] */
/* fn sinh<T : fa_f32_f16>(T) -> T */
/* fn sinh<N : num, T : fa_f32_f16>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(390),
},
{
- /* [74] */
+ /* [76] */
/* fn smoothstep<T : fa_f32_f16>(@test_value(2) T, @test_value(4) T, @test_value(3) T) -> T */
/* fn smoothstep<N : num, T : fa_f32_f16>(@test_value(2) vec<N, T>, @test_value(4) vec<N, T>, @test_value(3) vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(392),
},
{
- /* [75] */
+ /* [77] */
/* fn sqrt<T : fa_f32_f16>(T) -> T */
/* fn sqrt<N : num, T : fa_f32_f16>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(394),
},
{
- /* [76] */
+ /* [78] */
/* fn step<T : fa_f32_f16>(T, T) -> T */
/* fn step<N : num, T : fa_f32_f16>(vec<N, T>, vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(396),
},
{
- /* [77] */
+ /* [79] */
/* fn storageBarrier() */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(449),
+ /* overloads */ OverloadIndex(451),
},
{
- /* [78] */
+ /* [80] */
/* fn tan<T : fa_f32_f16>(T) -> T */
/* fn tan<N : num, T : fa_f32_f16>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(398),
},
{
- /* [79] */
+ /* [81] */
/* fn tanh<T : fa_f32_f16>(T) -> T */
/* fn tanh<N : num, T : fa_f32_f16>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(400),
},
{
- /* [80] */
+ /* [82] */
/* fn transpose<M : num, N : num, T : fa_f32_f16>(mat<M, N, T>) -> mat<N, M, T> */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(450),
+ /* overloads */ OverloadIndex(452),
},
{
- /* [81] */
+ /* [83] */
/* fn trunc<T : fa_f32_f16>(@test_value(1.5) T) -> T */
/* fn trunc<N : num, T : fa_f32_f16>(@test_value(1.5) vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(402),
},
{
- /* [82] */
- /* fn unpack2x16float(u32) -> vec2<f32> */
- /* num overloads */ 1,
- /* overloads */ OverloadIndex(451),
- },
- {
- /* [83] */
- /* fn unpack2x16snorm(u32) -> vec2<f32> */
- /* num overloads */ 1,
- /* overloads */ OverloadIndex(452),
- },
- {
/* [84] */
- /* fn unpack2x16unorm(u32) -> vec2<f32> */
+ /* fn unpack2x16float(u32) -> vec2<f32> */
/* num overloads */ 1,
/* overloads */ OverloadIndex(453),
},
{
/* [85] */
- /* fn unpack4x8snorm(u32) -> vec4<f32> */
+ /* fn unpack2x16snorm(u32) -> vec2<f32> */
/* num overloads */ 1,
/* overloads */ OverloadIndex(454),
},
{
/* [86] */
- /* fn unpack4x8unorm(u32) -> vec4<f32> */
+ /* fn unpack2x16unorm(u32) -> vec2<f32> */
/* num overloads */ 1,
/* overloads */ OverloadIndex(455),
},
{
/* [87] */
- /* fn workgroupBarrier() */
+ /* fn unpack4x8snorm(u32) -> vec4<f32> */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(449),
+ /* overloads */ OverloadIndex(456),
},
{
/* [88] */
- /* fn textureBarrier() */
+ /* fn unpack4x8unorm(u32) -> vec4<f32> */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(449),
+ /* overloads */ OverloadIndex(457),
},
{
/* [89] */
+ /* fn unpack4xI8(u32) -> vec4<i32> */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(458),
+ },
+ {
+ /* [90] */
+ /* fn unpack4xU8(u32) -> vec4<u32> */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(459),
+ },
+ {
+ /* [91] */
+ /* fn workgroupBarrier() */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(451),
+ },
+ {
+ /* [92] */
+ /* fn textureBarrier() */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(451),
+ },
+ {
+ /* [93] */
/* fn textureDimensions<T : fiu32>(texture: texture_1d<T>) -> u32 */
/* fn textureDimensions<T : fiu32, L : iu32>(texture: texture_1d<T>, level: L) -> u32 */
/* fn textureDimensions<T : fiu32>(texture: texture_2d<T>) -> vec2<u32> */
@@ -11589,7 +11669,7 @@
/* overloads */ OverloadIndex(0),
},
{
- /* [90] */
+ /* [94] */
/* fn textureGather<T : fiu32, C : iu32>(@const component: C, texture: texture_2d<T>, sampler: sampler, coords: vec2<f32>) -> vec4<T> */
/* fn textureGather<T : fiu32, C : iu32>(@const component: C, texture: texture_2d<T>, sampler: sampler, coords: vec2<f32>, @const offset: vec2<i32>) -> vec4<T> */
/* fn textureGather<T : fiu32, C : iu32, A : iu32>(@const component: C, texture: texture_2d_array<T>, sampler: sampler, coords: vec2<f32>, array_index: A) -> vec4<T> */
@@ -11606,7 +11686,7 @@
/* overloads */ OverloadIndex(93),
},
{
- /* [91] */
+ /* [95] */
/* fn textureGatherCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32) -> vec4<f32> */
/* fn textureGatherCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32, @const offset: vec2<i32>) -> vec4<f32> */
/* fn textureGatherCompare<A : iu32>(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: A, depth_ref: f32) -> vec4<f32> */
@@ -11617,7 +11697,7 @@
/* overloads */ OverloadIndex(174),
},
{
- /* [92] */
+ /* [96] */
/* fn textureNumLayers<T : fiu32>(texture: texture_2d_array<T>) -> u32 */
/* fn textureNumLayers<T : fiu32>(texture: texture_cube_array<T>) -> u32 */
/* fn textureNumLayers(texture: texture_depth_2d_array) -> u32 */
@@ -11627,7 +11707,7 @@
/* overloads */ OverloadIndex(246),
},
{
- /* [93] */
+ /* [97] */
/* fn textureNumLevels<T : fiu32>(texture: texture_1d<T>) -> u32 */
/* fn textureNumLevels<T : fiu32>(texture: texture_2d<T>) -> u32 */
/* fn textureNumLevels<T : fiu32>(texture: texture_2d_array<T>) -> u32 */
@@ -11642,14 +11722,14 @@
/* overloads */ OverloadIndex(129),
},
{
- /* [94] */
+ /* [98] */
/* fn textureNumSamples<T : fiu32>(texture: texture_multisampled_2d<T>) -> u32 */
/* fn textureNumSamples(texture: texture_depth_multisampled_2d) -> u32 */
/* num overloads */ 2,
/* overloads */ OverloadIndex(404),
},
{
- /* [95] */
+ /* [99] */
/* fn textureSample(texture: texture_1d<f32>, sampler: sampler, coords: f32) -> vec4<f32> */
/* fn textureSample(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>) -> vec4<f32> */
/* fn textureSample(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, @const offset: vec2<i32>) -> vec4<f32> */
@@ -11669,7 +11749,7 @@
/* overloads */ OverloadIndex(64),
},
{
- /* [96] */
+ /* [100] */
/* fn textureSampleBias(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, bias: f32) -> vec4<f32> */
/* fn textureSampleBias(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, bias: f32, @const offset: vec2<i32>) -> vec4<f32> */
/* fn textureSampleBias<A : iu32>(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A, bias: f32) -> vec4<f32> */
@@ -11682,7 +11762,7 @@
/* overloads */ OverloadIndex(158),
},
{
- /* [97] */
+ /* [101] */
/* fn textureSampleCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32) -> f32 */
/* fn textureSampleCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32, @const offset: vec2<i32>) -> f32 */
/* fn textureSampleCompare<A : iu32>(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: A, depth_ref: f32) -> f32 */
@@ -11693,7 +11773,7 @@
/* overloads */ OverloadIndex(180),
},
{
- /* [98] */
+ /* [102] */
/* fn textureSampleCompareLevel(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32) -> f32 */
/* fn textureSampleCompareLevel(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32, @const offset: vec2<i32>) -> f32 */
/* fn textureSampleCompareLevel<A : iu32>(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: A, depth_ref: f32) -> f32 */
@@ -11704,7 +11784,7 @@
/* overloads */ OverloadIndex(186),
},
{
- /* [99] */
+ /* [103] */
/* fn textureSampleGrad(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, ddx: vec2<f32>, ddy: vec2<f32>) -> vec4<f32> */
/* fn textureSampleGrad(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, ddx: vec2<f32>, ddy: vec2<f32>, @const offset: vec2<i32>) -> vec4<f32> */
/* fn textureSampleGrad<A : iu32>(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A, ddx: vec2<f32>, ddy: vec2<f32>) -> vec4<f32> */
@@ -11717,7 +11797,7 @@
/* overloads */ OverloadIndex(166),
},
{
- /* [100] */
+ /* [104] */
/* fn textureSampleLevel(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, level: f32) -> vec4<f32> */
/* fn textureSampleLevel(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, level: f32, @const offset: vec2<i32>) -> vec4<f32> */
/* fn textureSampleLevel<A : iu32>(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A, level: f32) -> vec4<f32> */
@@ -11736,14 +11816,14 @@
/* overloads */ OverloadIndex(79),
},
{
- /* [101] */
+ /* [105] */
/* fn textureSampleBaseClampToEdge(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>) -> vec4<f32> */
/* fn textureSampleBaseClampToEdge(texture: texture_external, sampler: sampler, coords: vec2<f32>) -> vec4<f32> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(406),
},
{
- /* [102] */
+ /* [106] */
/* fn textureStore<C : iu32>(texture: texture_storage_1d<f32_texel_format, writable>, coords: C, value: vec4<f32>) */
/* fn textureStore<C : iu32>(texture: texture_storage_2d<f32_texel_format, writable>, coords: vec2<C>, value: vec4<f32>) */
/* fn textureStore<C : iu32, A : iu32>(texture: texture_storage_2d_array<f32_texel_format, writable>, coords: vec2<C>, array_index: A, value: vec4<f32>) */
@@ -11760,7 +11840,7 @@
/* overloads */ OverloadIndex(105),
},
{
- /* [103] */
+ /* [107] */
/* fn textureLoad<T : fiu32, C : iu32, L : iu32>(texture: texture_1d<T>, coords: C, level: L) -> vec4<T> */
/* fn textureLoad<T : fiu32, C : iu32, L : iu32>(texture: texture_2d<T>, coords: vec2<C>, level: L) -> vec4<T> */
/* fn textureLoad<T : fiu32, C : iu32, A : iu32, L : iu32>(texture: texture_2d_array<T>, coords: vec2<C>, array_index: A, level: L) -> vec4<T> */
@@ -11786,89 +11866,89 @@
/* overloads */ OverloadIndex(27),
},
{
- /* [104] */
- /* fn atomicLoad<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>) -> T */
- /* num overloads */ 1,
- /* overloads */ OverloadIndex(456),
- },
- {
- /* [105] */
- /* fn atomicStore<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) */
- /* num overloads */ 1,
- /* overloads */ OverloadIndex(457),
- },
- {
- /* [106] */
- /* fn atomicAdd<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
- /* num overloads */ 1,
- /* overloads */ OverloadIndex(458),
- },
- {
- /* [107] */
- /* fn atomicSub<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
- /* num overloads */ 1,
- /* overloads */ OverloadIndex(458),
- },
- {
/* [108] */
- /* fn atomicMax<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
- /* num overloads */ 1,
- /* overloads */ OverloadIndex(458),
- },
- {
- /* [109] */
- /* fn atomicMin<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
- /* num overloads */ 1,
- /* overloads */ OverloadIndex(458),
- },
- {
- /* [110] */
- /* fn atomicAnd<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
- /* num overloads */ 1,
- /* overloads */ OverloadIndex(458),
- },
- {
- /* [111] */
- /* fn atomicOr<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
- /* num overloads */ 1,
- /* overloads */ OverloadIndex(458),
- },
- {
- /* [112] */
- /* fn atomicXor<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
- /* num overloads */ 1,
- /* overloads */ OverloadIndex(458),
- },
- {
- /* [113] */
- /* fn atomicExchange<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
- /* num overloads */ 1,
- /* overloads */ OverloadIndex(458),
- },
- {
- /* [114] */
- /* fn atomicCompareExchangeWeak<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T, T) -> __atomic_compare_exchange_result<T> */
- /* num overloads */ 1,
- /* overloads */ OverloadIndex(459),
- },
- {
- /* [115] */
- /* fn subgroupBallot() -> vec4<u32> */
+ /* fn atomicLoad<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>) -> T */
/* num overloads */ 1,
/* overloads */ OverloadIndex(460),
},
{
- /* [116] */
- /* fn subgroupBroadcast<T : fiu32>(value: T, @const sourceLaneIndex: u32) -> T */
+ /* [109] */
+ /* fn atomicStore<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) */
/* num overloads */ 1,
/* overloads */ OverloadIndex(461),
},
{
- /* [117] */
- /* fn _tint_materialize<T>(T) -> T */
+ /* [110] */
+ /* fn atomicAdd<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
/* num overloads */ 1,
/* overloads */ OverloadIndex(462),
},
+ {
+ /* [111] */
+ /* fn atomicSub<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(462),
+ },
+ {
+ /* [112] */
+ /* fn atomicMax<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(462),
+ },
+ {
+ /* [113] */
+ /* fn atomicMin<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(462),
+ },
+ {
+ /* [114] */
+ /* fn atomicAnd<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(462),
+ },
+ {
+ /* [115] */
+ /* fn atomicOr<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(462),
+ },
+ {
+ /* [116] */
+ /* fn atomicXor<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(462),
+ },
+ {
+ /* [117] */
+ /* fn atomicExchange<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(462),
+ },
+ {
+ /* [118] */
+ /* fn atomicCompareExchangeWeak<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T, T) -> __atomic_compare_exchange_result<T> */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(463),
+ },
+ {
+ /* [119] */
+ /* fn subgroupBallot() -> vec4<u32> */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(464),
+ },
+ {
+ /* [120] */
+ /* fn subgroupBroadcast<T : fiu32>(value: T, @const sourceLaneIndex: u32) -> T */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(465),
+ },
+ {
+ /* [121] */
+ /* fn _tint_materialize<T>(T) -> T */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(466),
+ },
};
constexpr IntrinsicInfo kUnaryOperators[] = {
@@ -11980,13 +12060,13 @@
/* [8] */
/* op &&(bool, bool) -> bool */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(463),
+ /* overloads */ OverloadIndex(467),
},
{
/* [9] */
/* op ||(bool, bool) -> bool */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(464),
+ /* overloads */ OverloadIndex(468),
},
{
/* [10] */
@@ -12261,7 +12341,7 @@
/* [17] */
/* conv packedVec3<T : concrete_scalar>(vec3<T>) -> packedVec3<T> */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(465),
+ /* overloads */ OverloadIndex(469),
},
};
diff --git a/src/tint/lang/core/ir/transform/builtin_polyfill.cc b/src/tint/lang/core/ir/transform/builtin_polyfill.cc
index 951765e..f321fe1 100644
--- a/src/tint/lang/core/ir/transform/builtin_polyfill.cc
+++ b/src/tint/lang/core/ir/transform/builtin_polyfill.cc
@@ -120,7 +120,11 @@
}
break;
case core::BuiltinFn::kPack4XI8:
- case core::BuiltinFn::kPack4XU8: {
+ case core::BuiltinFn::kPack4XU8:
+ case core::BuiltinFn::kPack4XI8Clamp:
+ case core::BuiltinFn::kPack4XU8Clamp:
+ case core::BuiltinFn::kUnpack4XI8:
+ case core::BuiltinFn::kUnpack4XU8: {
if (config.pack_unpack_4x8) {
worklist.Push(builtin);
}
@@ -169,6 +173,18 @@
case core::BuiltinFn::kPack4XU8:
replacement = Pack4xU8(builtin);
break;
+ case core::BuiltinFn::kPack4XI8Clamp:
+ replacement = Pack4xI8Clamp(builtin);
+ break;
+ case core::BuiltinFn::kPack4XU8Clamp:
+ replacement = Pack4xU8Clamp(builtin);
+ break;
+ case core::BuiltinFn::kUnpack4XI8:
+ replacement = Unpack4xI8(builtin);
+ break;
+ case core::BuiltinFn::kUnpack4XU8:
+ replacement = Unpack4xU8(builtin);
+ break;
default:
break;
}
@@ -585,33 +601,33 @@
return result;
}
- /// Polyfill a `Pack4xI8()` builtin call
+ /// Polyfill a `pack4xI8()` builtin call
/// @param call the builtin call instruction
/// @returns the replacement value
ir::Value* Pack4xI8(ir::CoreBuiltinCall* call) {
// Replace `pack4xI8(%x)` with:
// %n = vec4u(0, 8, 16, 24);
- // %x_i8 = vec4u((%x & vec4i(0xff)) << n);
- // %result = dot(%x_i8, vec4u(1));
+ // %x_u32 = bitcast<vec4u>(%x)
+ // %x_u8 = (%x_u32 & vec4u(0xff)) << n;
+ // %result = dot(%x_u8, vec4u(1));
ir::Value* result = nullptr;
auto* x = call->Args()[0];
b.InsertBefore(call, [&] {
auto* vec4u = ty.vec4<u32>();
- auto* vec4i = ty.vec4<i32>();
auto* n = b.Construct(vec4u, b.Constant(u32(0)), b.Constant(u32(8)),
b.Constant(u32(16)), b.Constant(u32(24)));
- auto* x_i8 = b.Convert(
- vec4u,
- b.ShiftLeft(vec4i, b.And(vec4i, x, b.Construct(vec4i, b.Constant(i32(0xff)))), n));
- result = b.Call(ty.u32(), core::BuiltinFn::kDot, x_i8,
+ auto* x_u32 = b.Bitcast(vec4u, x);
+ auto* x_u8 = b.ShiftLeft(
+ vec4u, b.And(vec4u, x_u32, b.Construct(vec4u, b.Constant(u32(0xff)))), n);
+ result = b.Call(ty.u32(), core::BuiltinFn::kDot, x_u8,
b.Construct(vec4u, (b.Constant(u32(1)))))
->Result(0);
});
return result;
}
- /// Polyfill a `Pack4xU8()` builtin call
+ /// Polyfill a `pack4xU8()` builtin call
/// @param call the builtin call instruction
/// @returns the replacement value
ir::Value* Pack4xU8(ir::CoreBuiltinCall* call) {
@@ -634,6 +650,114 @@
});
return result;
}
+
+ /// Polyfill a `pack4xI8Clamp()` builtin call
+ /// @param call the builtin call instruction
+ /// @returns the replacement value
+ ir::Value* Pack4xI8Clamp(ir::CoreBuiltinCall* call) {
+ // Replace `pack4xI8Clamp(%x)` with:
+ // %n = vec4u(0, 8, 16, 24);
+ // %min_i8_vec4 = vec4i(-128);
+ // %max_i8_vec4 = vec4i(127);
+ // %x_clamp = clamp(%x, %min_i8_vec4, %max_i8_vec4);
+ // %x_u32 = bitcast<vec4u>(%x_clamp);
+ // %x_u8 = (%x_u32 & vec4u(0xff)) << n;
+ // %result = dot(%x_u8, vec4u(1));
+ ir::Value* result = nullptr;
+ auto* x = call->Args()[0];
+ b.InsertBefore(call, [&] {
+ auto* vec4i = ty.vec4<i32>();
+ auto* vec4u = ty.vec4<u32>();
+
+ auto* n = b.Construct(vec4u, b.Constant(u32(0)), b.Constant(u32(8)),
+ b.Constant(u32(16)), b.Constant(u32(24)));
+ auto* min_i8_vec4 = b.Construct(vec4i, b.Constant(i32(-128)));
+ auto* max_i8_vec4 = b.Construct(vec4i, b.Constant(i32(127)));
+ auto* x_clamp = b.Call(vec4i, core::BuiltinFn::kClamp, x, min_i8_vec4, max_i8_vec4);
+ auto* x_u32 = b.Bitcast(vec4u, x_clamp);
+ auto* x_u8 = b.ShiftLeft(
+ vec4u, b.And(vec4u, x_u32, b.Construct(vec4u, b.Constant(u32(0xff)))), n);
+ result = b.Call(ty.u32(), core::BuiltinFn::kDot, x_u8,
+ b.Construct(vec4u, (b.Constant(u32(1)))))
+ ->Result(0);
+ });
+ return result;
+ }
+
+ /// Polyfill a `pack4xU8Clamp()` builtin call
+ /// @param call the builtin call instruction
+ /// @returns the replacement value
+ ir::Value* Pack4xU8Clamp(ir::CoreBuiltinCall* call) {
+ // Replace `pack4xU8Clamp(%x)` with:
+ // %n = vec4u(0, 8, 16, 24);
+ // %min_u8_vec4 = vec4u(0);
+ // %max_u8_vec4 = vec4u(255);
+ // %x_clamp = clamp(%x, vec4u(0), vec4u(255));
+ // %x_u8 = %x_clamp << n;
+ // %result = dot(%x_u8, vec4u(1));
+ ir::Value* result = nullptr;
+ auto* x = call->Args()[0];
+ b.InsertBefore(call, [&] {
+ auto* vec4u = ty.vec4<u32>();
+
+ auto* n = b.Construct(vec4u, b.Constant(u32(0)), b.Constant(u32(8)),
+ b.Constant(u32(16)), b.Constant(u32(24)));
+ auto* min_u8_vec4 = b.Construct(vec4u, b.Constant(u32(0)));
+ auto* max_u8_vec4 = b.Construct(vec4u, b.Constant(u32(255)));
+ auto* x_clamp = b.Call(vec4u, core::BuiltinFn::kClamp, x, min_u8_vec4, max_u8_vec4);
+ auto* x_u8 = b.ShiftLeft(vec4u, x_clamp, n);
+ result = b.Call(ty.u32(), core::BuiltinFn::kDot, x_u8,
+ b.Construct(vec4u, (b.Constant(u32(1)))))
+ ->Result(0);
+ });
+ return result;
+ }
+
+ /// Polyfill a `unpack4xI8()` builtin call
+ /// @param call the builtin call instruction
+ /// @returns the replacement value
+ ir::Value* Unpack4xI8(ir::CoreBuiltinCall* call) {
+ // Replace `unpack4xI8(%x)` with:
+ // %n = vec4u(24, 16, 8, 0);
+ // %x_vec4u = vec4u(x);
+ // %x_vec4i = bitcast<vec4i>(%x_vec4u << n);
+ // %result = %x_vec4i >> vec4u(24);
+ ir::Value* result = nullptr;
+ auto* x = call->Args()[0];
+ b.InsertBefore(call, [&] {
+ auto* vec4i = ty.vec4<i32>();
+ auto* vec4u = ty.vec4<u32>();
+
+ auto* n = b.Construct(vec4u, b.Constant(u32(24)), b.Constant(u32(16)),
+ b.Constant(u32(8)), b.Constant(u32(0)));
+ auto* x_vec4u = b.Convert(vec4u, x);
+ auto* x_vec4i = b.Bitcast(vec4i, b.ShiftLeft(vec4u, x_vec4u, n));
+ result =
+ b.ShiftRight(vec4i, x_vec4i, b.Construct(vec4u, b.Constant(u32(24))))->Result(0);
+ });
+ return result;
+ }
+
+ /// Polyfill a `unpack4xU8()` builtin call
+ /// @param call the builtin call instruction
+ /// @returns the replacement value
+ ir::Value* Unpack4xU8(ir::CoreBuiltinCall* call) {
+ // Replace `unpack4xU8(%x)` with:
+ // %n = vec4u(0, 8, 16, 24);
+ // %x_vec4u = vec4u(x) >> n;
+ // %result = %x_vec4u & vec4u(0xff);
+ ir::Value* result = nullptr;
+ auto* x = call->Args()[0];
+ b.InsertBefore(call, [&] {
+ auto* vec4u = ty.vec4<u32>();
+
+ auto* n = b.Construct(vec4u, b.Constant(u32(0)), b.Constant(u32(8)),
+ b.Constant(u32(16)), b.Constant(u32(24)));
+ auto* x_vec4u = b.ShiftRight(vec4u, b.Convert(vec4u, x), n);
+ result = b.And(vec4u, x_vec4u, b.Construct(vec4u, b.Constant(u32(0xff))))->Result(0);
+ });
+ return result;
+ }
};
} // namespace
diff --git a/src/tint/lang/core/ir/transform/builtin_polyfill_test.cc b/src/tint/lang/core/ir/transform/builtin_polyfill_test.cc
index 63b015e..37a3fdf 100644
--- a/src/tint/lang/core/ir/transform/builtin_polyfill_test.cc
+++ b/src/tint/lang/core/ir/transform/builtin_polyfill_test.cc
@@ -1430,10 +1430,10 @@
%foo = func(%arg:vec4<i32>):u32 -> %b1 {
%b1 = block {
%3:vec4<u32> = construct 0u, 8u, 16u, 24u
- %4:vec4<i32> = construct 255i
- %5:vec4<i32> = and %arg, %4
- %6:vec4<i32> = shl %5, %3
- %7:vec4<u32> = convert %6
+ %4:vec4<u32> = bitcast %arg
+ %5:vec4<u32> = construct 255u
+ %6:vec4<u32> = and %4, %5
+ %7:vec4<u32> = shl %6, %3
%8:vec4<u32> = construct 1u
%result:u32 = dot %7, %8
ret %result
@@ -1482,5 +1482,145 @@
EXPECT_EQ(expect, str());
}
+TEST_F(IR_BuiltinPolyfillTest, Pack4xI8Clamp) {
+ Build(core::BuiltinFn::kPack4XI8Clamp, ty.u32(), Vector{ty.vec4<i32>()});
+
+ auto* src = R"(
+%foo = func(%arg:vec4<i32>):u32 -> %b1 {
+ %b1 = block {
+ %result:u32 = pack4xI8Clamp %arg
+ ret %result
+ }
+}
+)";
+ EXPECT_EQ(src, str());
+
+ auto* expect = R"(
+%foo = func(%arg:vec4<i32>):u32 -> %b1 {
+ %b1 = block {
+ %3:vec4<u32> = construct 0u, 8u, 16u, 24u
+ %4:vec4<i32> = construct -128i
+ %5:vec4<i32> = construct 127i
+ %6:vec4<i32> = clamp %arg, %4, %5
+ %7:vec4<u32> = bitcast %6
+ %8:vec4<u32> = construct 255u
+ %9:vec4<u32> = and %7, %8
+ %10:vec4<u32> = shl %9, %3
+ %11:vec4<u32> = construct 1u
+ %result:u32 = dot %10, %11
+ ret %result
+ }
+}
+)";
+
+ BuiltinPolyfillConfig config;
+ config.pack_unpack_4x8 = true;
+ Run(BuiltinPolyfill, config);
+
+ EXPECT_EQ(expect, str());
+}
+
+TEST_F(IR_BuiltinPolyfillTest, Pack4xU8Clamp) {
+ Build(core::BuiltinFn::kPack4XU8Clamp, ty.u32(), Vector{ty.vec4<u32>()});
+
+ auto* src = R"(
+%foo = func(%arg:vec4<u32>):u32 -> %b1 {
+ %b1 = block {
+ %result:u32 = pack4xU8Clamp %arg
+ ret %result
+ }
+}
+)";
+ EXPECT_EQ(src, str());
+
+ auto* expect = R"(
+%foo = func(%arg:vec4<u32>):u32 -> %b1 {
+ %b1 = block {
+ %3:vec4<u32> = construct 0u, 8u, 16u, 24u
+ %4:vec4<u32> = construct 0u
+ %5:vec4<u32> = construct 255u
+ %6:vec4<u32> = clamp %arg, %4, %5
+ %7:vec4<u32> = shl %6, %3
+ %8:vec4<u32> = construct 1u
+ %result:u32 = dot %7, %8
+ ret %result
+ }
+}
+)";
+
+ BuiltinPolyfillConfig config;
+ config.pack_unpack_4x8 = true;
+ Run(BuiltinPolyfill, config);
+
+ EXPECT_EQ(expect, str());
+}
+
+TEST_F(IR_BuiltinPolyfillTest, Unpack4xI8) {
+ Build(core::BuiltinFn::kUnpack4XI8, ty.vec4<i32>(), Vector{ty.u32()});
+
+ auto* src = R"(
+%foo = func(%arg:u32):vec4<i32> -> %b1 {
+ %b1 = block {
+ %result:vec4<i32> = unpack4xI8 %arg
+ ret %result
+ }
+}
+)";
+ EXPECT_EQ(src, str());
+
+ auto* expect = R"(
+%foo = func(%arg:u32):vec4<i32> -> %b1 {
+ %b1 = block {
+ %3:vec4<u32> = construct 24u, 16u, 8u, 0u
+ %4:vec4<u32> = convert %arg
+ %5:vec4<u32> = shl %4, %3
+ %6:vec4<i32> = bitcast %5
+ %7:vec4<u32> = construct 24u
+ %result:vec4<i32> = shr %6, %7
+ ret %result
+ }
+}
+)";
+
+ BuiltinPolyfillConfig config;
+ config.pack_unpack_4x8 = true;
+ Run(BuiltinPolyfill, config);
+
+ EXPECT_EQ(expect, str());
+}
+
+TEST_F(IR_BuiltinPolyfillTest, Unpack4xU8) {
+ Build(core::BuiltinFn::kUnpack4XU8, ty.vec4<u32>(), Vector{ty.u32()});
+
+ auto* src = R"(
+%foo = func(%arg:u32):vec4<u32> -> %b1 {
+ %b1 = block {
+ %result:vec4<u32> = unpack4xU8 %arg
+ ret %result
+ }
+}
+)";
+ EXPECT_EQ(src, str());
+
+ auto* expect = R"(
+%foo = func(%arg:u32):vec4<u32> -> %b1 {
+ %b1 = block {
+ %3:vec4<u32> = construct 0u, 8u, 16u, 24u
+ %4:vec4<u32> = convert %arg
+ %5:vec4<u32> = shr %4, %3
+ %6:vec4<u32> = construct 255u
+ %result:vec4<u32> = and %5, %6
+ ret %result
+ }
+}
+)";
+
+ BuiltinPolyfillConfig config;
+ config.pack_unpack_4x8 = true;
+ Run(BuiltinPolyfill, config);
+
+ EXPECT_EQ(expect, str());
+}
+
} // namespace
} // namespace tint::core::ir::transform
diff --git a/src/tint/lang/wgsl/ast/transform/builtin_polyfill.cc b/src/tint/lang/wgsl/ast/transform/builtin_polyfill.cc
index 101c72a..e04e712 100644
--- a/src/tint/lang/wgsl/ast/transform/builtin_polyfill.cc
+++ b/src/tint/lang/wgsl/ast/transform/builtin_polyfill.cc
@@ -947,18 +947,19 @@
/// Builds the polyfill function for the `pack4xI8` builtin
/// @return the polyfill function name
Symbol Pack4xI8() {
- using vec4i = vec4<i32>;
using vec4u = vec4<u32>;
auto name = b.Symbols().New("tint_pack_4xi8");
auto body = tint::Vector{
// const n = vec4u(0, 8, 16, 24);
- // let a_i8 = vec4u((a & vec4i(0xff)) << n);
- // return dot(a_i8, vec4u(1));
+ // let a_u32 = bitcast<vec4u>(a);
+ // let a_u8 = (a_u32 & vec4u(0xff)) << n;
+ // return dot(a_u8, vec4u(1));
b.Decl(b.Const("n", b.Call<vec4u>(0_a, 8_a, 16_a, 24_a))),
- b.Decl(b.Let("a_i8", b.Call<vec4u>(b.Shl(b.And("a", b.Call<vec4i>(0xff_a)), "n")))),
- b.Return(b.Call("dot", "a_i8", b.Call<vec4u>(1_a))),
+ b.Decl(b.Let("a_u32", b.Bitcast<vec4u>("a"))),
+ b.Decl(b.Let("a_u8", b.Shl(b.And("a_u32", b.Call<vec4u>(0xff_a)), "n"))),
+ b.Return(b.Call("dot", "a_u8", b.Call<vec4u>(1_a))),
};
b.Func(name,
tint::Vector{
@@ -993,6 +994,114 @@
return name;
}
+ /// Builds the polyfill function for the `pack4xI8Clamp` builtin
+ /// @return the polyfill function name
+ Symbol Pack4xI8Clamp() {
+ using vec4i = vec4<i32>;
+ using vec4u = vec4<u32>;
+
+ auto name = b.Symbols().New("tint_pack_4xi8_clamp");
+
+ auto body = tint::Vector{
+ // const n = vec4u(0, 8, 16, 24);
+ // let a_clamp = clamp(a, vec4i(-128), vec4i(127));
+ // let a_u32 = bitcast<vec4u>(a_clamp);
+ // let a_u8 = (a_u32 & vec4u(0xff)) << n;
+ // return dot(a_u8, vec4u(1));
+ b.Decl(b.Const("n", b.Call<vec4u>(0_a, 8_a, 16_a, 24_a))),
+ b.Decl(b.Let("a_clamp",
+ b.Call("clamp", "a", b.Call<vec4i>(-128_a), b.Call<vec4i>(127_a)))),
+ b.Decl(b.Let("a_u32", b.Bitcast<vec4u>("a_clamp"))),
+ b.Decl(b.Let("a_u8", b.Shl(b.And("a_u32", b.Call<vec4u>(0xff_a)), "n"))),
+ b.Return(b.Call("dot", "a_u8", b.Call<vec4u>(1_a))),
+ };
+ b.Func(name,
+ tint::Vector{
+ b.Param("a", b.ty.vec4<i32>()),
+ },
+ b.ty.u32(), body);
+
+ return name;
+ }
+
+ /// Builds the polyfill function for the `pack4xU8Clamp` builtin
+ /// @return the polyfill function name
+ Symbol Pack4xU8Clamp() {
+ using vec4u = vec4<u32>;
+
+ auto name = b.Symbols().New("tint_pack_4xu8_clamp");
+
+ auto body = tint::Vector{
+ // const n = vec4u(0, 8, 16, 24);
+ // let a_clamp = clamp(a, vec4u(0), vec4u(255));
+ // let a_u8 = a_clamp << n;
+ // return dot(a_u8, vec4u(1));
+ b.Decl(b.Const("n", b.Call<vec4u>(0_a, 8_a, 16_a, 24_a))),
+ b.Decl(
+ b.Let("a_clamp", b.Call("clamp", "a", b.Call<vec4u>(0_a), b.Call<vec4u>(255_a)))),
+ b.Decl(b.Let("a_u8", b.Call<vec4u>(b.Shl("a_clamp", "n")))),
+ b.Return(b.Call("dot", "a_u8", b.Call<vec4u>(1_a))),
+ };
+ b.Func(name,
+ tint::Vector{
+ b.Param("a", b.ty.vec4<u32>()),
+ },
+ b.ty.u32(), body);
+
+ return name;
+ }
+
+ /// Builds the polyfill function for the `unpack4xI8` builtin
+ /// @return the polyfill function name
+ Symbol Unpack4xI8() {
+ using vec4i = vec4<i32>;
+ using vec4u = vec4<u32>;
+
+ auto name = b.Symbols().New("tint_unpack_4xi8");
+
+ auto body = tint::Vector{
+ // const n = vec4u(24, 16, 8, 0);
+ // let a_vec4u = vec4u(a);
+ // let a_vec4i = bitcast<vec4i>(a_vec4u << n);
+ // return a_vec4i >> vec4u(24);
+ b.Decl(b.Const("n", b.Call<vec4u>(24_a, 16_a, 8_a, 0_a))),
+ b.Decl(b.Let("a_vec4u", b.Call<vec4u>("a"))),
+ b.Decl(b.Let("a_vec4i", b.Bitcast<vec4i>(b.Shl("a_vec4u", "n")))),
+ b.Return(b.Shr("a_vec4i", b.Call<vec4u>(24_a))),
+ };
+ b.Func(name,
+ tint::Vector{
+ b.Param("a", b.ty.u32()),
+ },
+ b.ty.vec4<i32>(), body);
+
+ return name;
+ }
+
+ /// Builds the polyfill function for the `unpack4xU8` builtin
+ /// @return the polyfill function name
+ Symbol Unpack4xU8() {
+ using vec4u = vec4<u32>;
+
+ auto name = b.Symbols().New("tint_unpack_4xu8");
+
+ auto body = tint::Vector{
+ // const n = vec4u(0, 8, 16, 24);
+ // const a_vec4u = vec4u(a) >> n;
+ // return a_vec4u & vec4u(0xff);
+ b.Decl(b.Const("n", b.Call<vec4u>(0_a, 8_a, 16_a, 24_a))),
+ b.Decl(b.Let("a_vec4u", b.Shr(b.Call<vec4u>("a"), "n"))),
+ b.Return(b.And("a_vec4u", b.Call<vec4u>(0xff_a))),
+ };
+ b.Func(name,
+ tint::Vector{
+ b.Param("a", b.ty.u32()),
+ },
+ b.ty.vec4<u32>(), body);
+
+ return name;
+ }
+
////////////////////////////////////////////////////////////////////////////
// Inline polyfills
////////////////////////////////////////////////////////////////////////////
@@ -1407,6 +1516,38 @@
return Symbol{};
}
+ case wgsl::BuiltinFn::kPack4XI8Clamp: {
+ if (cfg.builtins.pack_unpack_4x8) {
+ return builtin_polyfills.GetOrCreate(builtin,
+ [&] { return Pack4xI8Clamp(); });
+ }
+ return Symbol{};
+ }
+
+ case wgsl::BuiltinFn::kPack4XU8Clamp: {
+ if (cfg.builtins.pack_unpack_4x8) {
+ return builtin_polyfills.GetOrCreate(builtin,
+ [&] { return Pack4xU8Clamp(); });
+ }
+ return Symbol{};
+ }
+
+ case wgsl::BuiltinFn::kUnpack4XI8: {
+ if (cfg.builtins.pack_unpack_4x8) {
+ return builtin_polyfills.GetOrCreate(builtin,
+ [&] { return Unpack4xI8(); });
+ }
+ return Symbol{};
+ }
+
+ case wgsl::BuiltinFn::kUnpack4XU8: {
+ if (cfg.builtins.pack_unpack_4x8) {
+ return builtin_polyfills.GetOrCreate(builtin,
+ [&] { return Unpack4xU8(); });
+ }
+ return Symbol{};
+ }
+
default:
return Symbol{};
}
diff --git a/src/tint/lang/wgsl/ast/transform/builtin_polyfill_test.cc b/src/tint/lang/wgsl/ast/transform/builtin_polyfill_test.cc
index d784775..dcf24ee 100644
--- a/src/tint/lang/wgsl/ast/transform/builtin_polyfill_test.cc
+++ b/src/tint/lang/wgsl/ast/transform/builtin_polyfill_test.cc
@@ -4135,8 +4135,9 @@
auto* expect = R"(
fn tint_pack_4xi8(a : vec4<i32>) -> u32 {
const n = vec4<u32>(0, 8, 16, 24);
- let a_i8 = vec4<u32>(((a & vec4<i32>(255)) << n));
- return dot(a_i8, vec4<u32>(1));
+ let a_u32 = bitcast<vec4<u32>>(a);
+ let a_u8 = ((a_u32 & vec4<u32>(255)) << n);
+ return dot(a_u8, vec4<u32>(1));
}
fn f() {
@@ -4176,6 +4177,114 @@
EXPECT_EQ(expect, str(got));
}
+TEST_F(BuiltinPolyfillTest, Pack4xI8Clamp) {
+ auto* src = R"(
+fn f() {
+ let v1 = vec4i(127, 128, -128, -129);
+ _ = pack4xI8Clamp(v1);
+}
+)";
+
+ auto* expect = R"(
+fn tint_pack_4xi8_clamp(a : vec4<i32>) -> u32 {
+ const n = vec4<u32>(0, 8, 16, 24);
+ let a_clamp = clamp(a, vec4<i32>(-128), vec4<i32>(127));
+ let a_u32 = bitcast<vec4<u32>>(a_clamp);
+ let a_u8 = ((a_u32 & vec4<u32>(255)) << n);
+ return dot(a_u8, vec4<u32>(1));
+}
+
+fn f() {
+ let v1 = vec4i(127, 128, -(128), -(129));
+ _ = tint_pack_4xi8_clamp(v1);
+}
+)";
+
+ auto got = Run<BuiltinPolyfill>(src, polyfillPacked4x8IntegerDotProduct());
+
+ EXPECT_EQ(expect, str(got));
+}
+
+TEST_F(BuiltinPolyfillTest, Pack4xU8Clamp) {
+ auto* src = R"(
+fn f() {
+ let v1 = vec4u(0, 254, 255, 256);
+ _ = pack4xU8Clamp(v1);
+}
+)";
+
+ auto* expect = R"(
+fn tint_pack_4xu8_clamp(a : vec4<u32>) -> u32 {
+ const n = vec4<u32>(0, 8, 16, 24);
+ let a_clamp = clamp(a, vec4<u32>(0), vec4<u32>(255));
+ let a_u8 = vec4<u32>((a_clamp << n));
+ return dot(a_u8, vec4<u32>(1));
+}
+
+fn f() {
+ let v1 = vec4u(0, 254, 255, 256);
+ _ = tint_pack_4xu8_clamp(v1);
+}
+)";
+
+ auto got = Run<BuiltinPolyfill>(src, polyfillPacked4x8IntegerDotProduct());
+
+ EXPECT_EQ(expect, str(got));
+}
+
+TEST_F(BuiltinPolyfillTest, Unpack4xI8) {
+ auto* src = R"(
+fn f() {
+ let v1 = u32(0x01FF02FE);
+ _ = unpack4xI8(v1);
+}
+)";
+
+ auto* expect = R"(
+fn tint_unpack_4xi8(a : u32) -> vec4<i32> {
+ const n = vec4<u32>(24, 16, 8, 0);
+ let a_vec4u = vec4<u32>(a);
+ let a_vec4i = bitcast<vec4<i32>>((a_vec4u << n));
+ return (a_vec4i >> vec4<u32>(24));
+}
+
+fn f() {
+ let v1 = u32(33489662);
+ _ = tint_unpack_4xi8(v1);
+}
+)";
+
+ auto got = Run<BuiltinPolyfill>(src, polyfillPacked4x8IntegerDotProduct());
+
+ EXPECT_EQ(expect, str(got));
+}
+
+TEST_F(BuiltinPolyfillTest, Unpack4xU8) {
+ auto* src = R"(
+fn f() {
+ let v1 = u32(0xFF01FE02);
+ _ = unpack4xU8(v1);
+}
+)";
+
+ auto* expect = R"(
+fn tint_unpack_4xu8(a : u32) -> vec4<u32> {
+ const n = vec4<u32>(0, 8, 16, 24);
+ let a_vec4u = (vec4<u32>(a) >> n);
+ return (a_vec4u & vec4<u32>(255));
+}
+
+fn f() {
+ let v1 = u32(4278320642);
+ _ = tint_unpack_4xu8(v1);
+}
+)";
+
+ auto got = Run<BuiltinPolyfill>(src, polyfillPacked4x8IntegerDotProduct());
+
+ EXPECT_EQ(expect, str(got));
+}
+
////////////////////////////////////////////////////////////////////////////////
// Polyfill combinations
////////////////////////////////////////////////////////////////////////////////
diff --git a/src/tint/lang/wgsl/builtin_fn.cc b/src/tint/lang/wgsl/builtin_fn.cc
index 95f1fe0..46942f3 100644
--- a/src/tint/lang/wgsl/builtin_fn.cc
+++ b/src/tint/lang/wgsl/builtin_fn.cc
@@ -225,6 +225,12 @@
if (name == "pack4xU8") {
return BuiltinFn::kPack4XU8;
}
+ if (name == "pack4xI8Clamp") {
+ return BuiltinFn::kPack4XI8Clamp;
+ }
+ if (name == "pack4xU8Clamp") {
+ return BuiltinFn::kPack4XU8Clamp;
+ }
if (name == "pow") {
return BuiltinFn::kPow;
}
@@ -300,6 +306,12 @@
if (name == "unpack4x8unorm") {
return BuiltinFn::kUnpack4X8Unorm;
}
+ if (name == "unpack4xI8") {
+ return BuiltinFn::kUnpack4XI8;
+ }
+ if (name == "unpack4xU8") {
+ return BuiltinFn::kUnpack4XU8;
+ }
if (name == "workgroupBarrier") {
return BuiltinFn::kWorkgroupBarrier;
}
@@ -527,6 +539,10 @@
return "pack4xI8";
case BuiltinFn::kPack4XU8:
return "pack4xU8";
+ case BuiltinFn::kPack4XI8Clamp:
+ return "pack4xI8Clamp";
+ case BuiltinFn::kPack4XU8Clamp:
+ return "pack4xU8Clamp";
case BuiltinFn::kPow:
return "pow";
case BuiltinFn::kQuantizeToF16:
@@ -577,6 +593,10 @@
return "unpack4x8snorm";
case BuiltinFn::kUnpack4X8Unorm:
return "unpack4x8unorm";
+ case BuiltinFn::kUnpack4XI8:
+ return "unpack4xI8";
+ case BuiltinFn::kUnpack4XU8:
+ return "unpack4xU8";
case BuiltinFn::kWorkgroupBarrier:
return "workgroupBarrier";
case BuiltinFn::kWorkgroupUniformLoad:
@@ -706,7 +726,9 @@
bool IsPacked4x8IntegerDotProductBuiltin(BuiltinFn f) {
return f == BuiltinFn::kDot4I8Packed || f == BuiltinFn::kDot4U8Packed ||
- f == BuiltinFn::kPack4XI8 || f == BuiltinFn::kPack4XU8;
+ f == BuiltinFn::kPack4XI8 || f == BuiltinFn::kPack4XU8 ||
+ f == BuiltinFn::kPack4XI8Clamp || f == BuiltinFn::kPack4XU8Clamp ||
+ f == BuiltinFn::kUnpack4XI8 || f == BuiltinFn::kUnpack4XU8;
}
bool IsSubgroup(BuiltinFn f) {
diff --git a/src/tint/lang/wgsl/builtin_fn.cc.tmpl b/src/tint/lang/wgsl/builtin_fn.cc.tmpl
index 375198d..ee359d0 100644
--- a/src/tint/lang/wgsl/builtin_fn.cc.tmpl
+++ b/src/tint/lang/wgsl/builtin_fn.cc.tmpl
@@ -102,7 +102,9 @@
bool IsPacked4x8IntegerDotProductBuiltin(BuiltinFn f) {
return f == BuiltinFn::kDot4I8Packed || f == BuiltinFn::kDot4U8Packed ||
- f == BuiltinFn::kPack4XI8 || f == BuiltinFn::kPack4XU8;
+ f == BuiltinFn::kPack4XI8 || f == BuiltinFn::kPack4XU8 ||
+ f == BuiltinFn::kPack4XI8Clamp || f == BuiltinFn::kPack4XU8Clamp ||
+ f == BuiltinFn::kUnpack4XI8 || f == BuiltinFn::kUnpack4XU8;
}
bool IsSubgroup(BuiltinFn f) {
diff --git a/src/tint/lang/wgsl/builtin_fn.h b/src/tint/lang/wgsl/builtin_fn.h
index 22b2a71..e9daac4 100644
--- a/src/tint/lang/wgsl/builtin_fn.h
+++ b/src/tint/lang/wgsl/builtin_fn.h
@@ -109,6 +109,8 @@
kPack4X8Unorm,
kPack4XI8,
kPack4XU8,
+ kPack4XI8Clamp,
+ kPack4XU8Clamp,
kPow,
kQuantizeToF16,
kRadians,
@@ -134,6 +136,8 @@
kUnpack2X16Unorm,
kUnpack4X8Snorm,
kUnpack4X8Unorm,
+ kUnpack4XI8,
+ kUnpack4XU8,
kWorkgroupBarrier,
kWorkgroupUniformLoad,
kTextureBarrier,
@@ -250,6 +254,8 @@
BuiltinFn::kPack4X8Unorm,
BuiltinFn::kPack4XI8,
BuiltinFn::kPack4XU8,
+ BuiltinFn::kPack4XI8Clamp,
+ BuiltinFn::kPack4XU8Clamp,
BuiltinFn::kPow,
BuiltinFn::kQuantizeToF16,
BuiltinFn::kRadians,
@@ -275,6 +281,8 @@
BuiltinFn::kUnpack2X16Unorm,
BuiltinFn::kUnpack4X8Snorm,
BuiltinFn::kUnpack4X8Unorm,
+ BuiltinFn::kUnpack4XI8,
+ BuiltinFn::kUnpack4XU8,
BuiltinFn::kWorkgroupBarrier,
BuiltinFn::kWorkgroupUniformLoad,
BuiltinFn::kTextureBarrier,
@@ -373,6 +381,8 @@
"pack4x8unorm",
"pack4xI8",
"pack4xU8",
+ "pack4xI8Clamp",
+ "pack4xU8Clamp",
"pow",
"quantizeToF16",
"radians",
@@ -398,6 +408,8 @@
"unpack2x16unorm",
"unpack4x8snorm",
"unpack4x8unorm",
+ "unpack4xI8",
+ "unpack4xU8",
"workgroupBarrier",
"workgroupUniformLoad",
"textureBarrier",
diff --git a/src/tint/lang/wgsl/intrinsic/data.cc b/src/tint/lang/wgsl/intrinsic/data.cc
index 27396f7..b03aa3b 100644
--- a/src/tint/lang/wgsl/intrinsic/data.cc
+++ b/src/tint/lang/wgsl/intrinsic/data.cc
@@ -4844,63 +4844,67 @@
/* [49] */ &core::constant::Eval::pack4x8unorm,
/* [50] */ &core::constant::Eval::pack4xI8,
/* [51] */ &core::constant::Eval::pack4xU8,
- /* [52] */ &core::constant::Eval::pow,
- /* [53] */ &core::constant::Eval::quantizeToF16,
- /* [54] */ &core::constant::Eval::radians,
- /* [55] */ &core::constant::Eval::reflect,
- /* [56] */ &core::constant::Eval::refract,
- /* [57] */ &core::constant::Eval::reverseBits,
- /* [58] */ &core::constant::Eval::round,
- /* [59] */ &core::constant::Eval::saturate,
- /* [60] */ &core::constant::Eval::select_bool,
- /* [61] */ &core::constant::Eval::select_boolvec,
- /* [62] */ &core::constant::Eval::sign,
- /* [63] */ &core::constant::Eval::sin,
- /* [64] */ &core::constant::Eval::sinh,
- /* [65] */ &core::constant::Eval::smoothstep,
- /* [66] */ &core::constant::Eval::sqrt,
- /* [67] */ &core::constant::Eval::step,
- /* [68] */ &core::constant::Eval::tan,
- /* [69] */ &core::constant::Eval::tanh,
- /* [70] */ &core::constant::Eval::transpose,
- /* [71] */ &core::constant::Eval::trunc,
- /* [72] */ &core::constant::Eval::unpack2x16float,
- /* [73] */ &core::constant::Eval::unpack2x16snorm,
- /* [74] */ &core::constant::Eval::unpack2x16unorm,
- /* [75] */ &core::constant::Eval::unpack4x8snorm,
- /* [76] */ &core::constant::Eval::unpack4x8unorm,
- /* [77] */ &core::constant::Eval::Identity,
- /* [78] */ &core::constant::Eval::Not,
- /* [79] */ &core::constant::Eval::Complement,
- /* [80] */ &core::constant::Eval::UnaryMinus,
- /* [81] */ &core::constant::Eval::Plus,
- /* [82] */ &core::constant::Eval::Minus,
- /* [83] */ &core::constant::Eval::Multiply,
- /* [84] */ &core::constant::Eval::MultiplyMatVec,
- /* [85] */ &core::constant::Eval::MultiplyVecMat,
- /* [86] */ &core::constant::Eval::MultiplyMatMat,
- /* [87] */ &core::constant::Eval::Divide,
- /* [88] */ &core::constant::Eval::Modulo,
- /* [89] */ &core::constant::Eval::Xor,
- /* [90] */ &core::constant::Eval::And,
- /* [91] */ &core::constant::Eval::Or,
- /* [92] */ &core::constant::Eval::LogicalAnd,
- /* [93] */ &core::constant::Eval::LogicalOr,
- /* [94] */ &core::constant::Eval::Equal,
- /* [95] */ &core::constant::Eval::NotEqual,
- /* [96] */ &core::constant::Eval::LessThan,
- /* [97] */ &core::constant::Eval::GreaterThan,
- /* [98] */ &core::constant::Eval::LessThanEqual,
- /* [99] */ &core::constant::Eval::GreaterThanEqual,
- /* [100] */ &core::constant::Eval::ShiftLeft,
- /* [101] */ &core::constant::Eval::ShiftRight,
- /* [102] */ &core::constant::Eval::Zero,
- /* [103] */ &core::constant::Eval::Conv,
- /* [104] */ &core::constant::Eval::VecSplat,
- /* [105] */ &core::constant::Eval::VecInitS,
- /* [106] */ &core::constant::Eval::VecInitM,
- /* [107] */ &core::constant::Eval::MatInitS,
- /* [108] */ &core::constant::Eval::MatInitV,
+ /* [52] */ &core::constant::Eval::pack4xI8Clamp,
+ /* [53] */ &core::constant::Eval::pack4xU8Clamp,
+ /* [54] */ &core::constant::Eval::pow,
+ /* [55] */ &core::constant::Eval::quantizeToF16,
+ /* [56] */ &core::constant::Eval::radians,
+ /* [57] */ &core::constant::Eval::reflect,
+ /* [58] */ &core::constant::Eval::refract,
+ /* [59] */ &core::constant::Eval::reverseBits,
+ /* [60] */ &core::constant::Eval::round,
+ /* [61] */ &core::constant::Eval::saturate,
+ /* [62] */ &core::constant::Eval::select_bool,
+ /* [63] */ &core::constant::Eval::select_boolvec,
+ /* [64] */ &core::constant::Eval::sign,
+ /* [65] */ &core::constant::Eval::sin,
+ /* [66] */ &core::constant::Eval::sinh,
+ /* [67] */ &core::constant::Eval::smoothstep,
+ /* [68] */ &core::constant::Eval::sqrt,
+ /* [69] */ &core::constant::Eval::step,
+ /* [70] */ &core::constant::Eval::tan,
+ /* [71] */ &core::constant::Eval::tanh,
+ /* [72] */ &core::constant::Eval::transpose,
+ /* [73] */ &core::constant::Eval::trunc,
+ /* [74] */ &core::constant::Eval::unpack2x16float,
+ /* [75] */ &core::constant::Eval::unpack2x16snorm,
+ /* [76] */ &core::constant::Eval::unpack2x16unorm,
+ /* [77] */ &core::constant::Eval::unpack4x8snorm,
+ /* [78] */ &core::constant::Eval::unpack4x8unorm,
+ /* [79] */ &core::constant::Eval::unpack4xI8,
+ /* [80] */ &core::constant::Eval::unpack4xU8,
+ /* [81] */ &core::constant::Eval::Identity,
+ /* [82] */ &core::constant::Eval::Not,
+ /* [83] */ &core::constant::Eval::Complement,
+ /* [84] */ &core::constant::Eval::UnaryMinus,
+ /* [85] */ &core::constant::Eval::Plus,
+ /* [86] */ &core::constant::Eval::Minus,
+ /* [87] */ &core::constant::Eval::Multiply,
+ /* [88] */ &core::constant::Eval::MultiplyMatVec,
+ /* [89] */ &core::constant::Eval::MultiplyVecMat,
+ /* [90] */ &core::constant::Eval::MultiplyMatMat,
+ /* [91] */ &core::constant::Eval::Divide,
+ /* [92] */ &core::constant::Eval::Modulo,
+ /* [93] */ &core::constant::Eval::Xor,
+ /* [94] */ &core::constant::Eval::And,
+ /* [95] */ &core::constant::Eval::Or,
+ /* [96] */ &core::constant::Eval::LogicalAnd,
+ /* [97] */ &core::constant::Eval::LogicalOr,
+ /* [98] */ &core::constant::Eval::Equal,
+ /* [99] */ &core::constant::Eval::NotEqual,
+ /* [100] */ &core::constant::Eval::LessThan,
+ /* [101] */ &core::constant::Eval::GreaterThan,
+ /* [102] */ &core::constant::Eval::LessThanEqual,
+ /* [103] */ &core::constant::Eval::GreaterThanEqual,
+ /* [104] */ &core::constant::Eval::ShiftLeft,
+ /* [105] */ &core::constant::Eval::ShiftRight,
+ /* [106] */ &core::constant::Eval::Zero,
+ /* [107] */ &core::constant::Eval::Conv,
+ /* [108] */ &core::constant::Eval::VecSplat,
+ /* [109] */ &core::constant::Eval::VecInitS,
+ /* [110] */ &core::constant::Eval::VecInitM,
+ /* [111] */ &core::constant::Eval::MatInitS,
+ /* [112] */ &core::constant::Eval::MatInitV,
};
static_assert(ConstEvalFunctionIndex::CanIndex(kConstEvalFunctions),
@@ -5542,7 +5546,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(96),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(102),
+ /* const_eval_fn */ ConstEvalFunctionIndex(106),
},
{
/* [49] */
@@ -5555,7 +5559,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(54),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(102),
+ /* const_eval_fn */ ConstEvalFunctionIndex(106),
},
{
/* [50] */
@@ -5568,7 +5572,7 @@
/* parameters */ ParameterIndex(217),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(54),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(77),
+ /* const_eval_fn */ ConstEvalFunctionIndex(81),
},
{
/* [51] */
@@ -5581,7 +5585,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(54),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(104),
+ /* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
/* [52] */
@@ -5594,7 +5598,7 @@
/* parameters */ ParameterIndex(205),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(54),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(105),
+ /* const_eval_fn */ ConstEvalFunctionIndex(109),
},
{
/* [53] */
@@ -5607,7 +5611,7 @@
/* parameters */ ParameterIndex(295),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(54),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(106),
+ /* const_eval_fn */ ConstEvalFunctionIndex(110),
},
{
/* [54] */
@@ -5620,7 +5624,7 @@
/* parameters */ ParameterIndex(298),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(54),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(106),
+ /* const_eval_fn */ ConstEvalFunctionIndex(110),
},
{
/* [55] */
@@ -5633,7 +5637,7 @@
/* parameters */ ParameterIndex(301),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(54),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(106),
+ /* const_eval_fn */ ConstEvalFunctionIndex(110),
},
{
/* [56] */
@@ -5646,7 +5650,7 @@
/* parameters */ ParameterIndex(362),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(54),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(106),
+ /* const_eval_fn */ ConstEvalFunctionIndex(110),
},
{
/* [57] */
@@ -5659,7 +5663,7 @@
/* parameters */ ParameterIndex(364),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(54),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(106),
+ /* const_eval_fn */ ConstEvalFunctionIndex(110),
},
{
/* [58] */
@@ -5672,7 +5676,7 @@
/* parameters */ ParameterIndex(366),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(54),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(106),
+ /* const_eval_fn */ ConstEvalFunctionIndex(110),
},
{
/* [59] */
@@ -5685,7 +5689,7 @@
/* parameters */ ParameterIndex(385),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(28),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [60] */
@@ -5698,7 +5702,7 @@
/* parameters */ ParameterIndex(385),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(100),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [61] */
@@ -5711,7 +5715,7 @@
/* parameters */ ParameterIndex(385),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(30),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [62] */
@@ -5724,7 +5728,7 @@
/* parameters */ ParameterIndex(385),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(32),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [63] */
@@ -5737,7 +5741,7 @@
/* parameters */ ParameterIndex(385),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(102),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [64] */
@@ -6439,7 +6443,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(90),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(102),
+ /* const_eval_fn */ ConstEvalFunctionIndex(106),
},
{
/* [118] */
@@ -6452,7 +6456,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(10),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(102),
+ /* const_eval_fn */ ConstEvalFunctionIndex(106),
},
{
/* [119] */
@@ -6465,7 +6469,7 @@
/* parameters */ ParameterIndex(213),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(10),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(77),
+ /* const_eval_fn */ ConstEvalFunctionIndex(81),
},
{
/* [120] */
@@ -6478,7 +6482,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(10),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(104),
+ /* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
/* [121] */
@@ -6491,7 +6495,7 @@
/* parameters */ ParameterIndex(205),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(10),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(105),
+ /* const_eval_fn */ ConstEvalFunctionIndex(109),
},
{
/* [122] */
@@ -6504,7 +6508,7 @@
/* parameters */ ParameterIndex(295),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(10),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(106),
+ /* const_eval_fn */ ConstEvalFunctionIndex(110),
},
{
/* [123] */
@@ -6517,7 +6521,7 @@
/* parameters */ ParameterIndex(298),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(10),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(106),
+ /* const_eval_fn */ ConstEvalFunctionIndex(110),
},
{
/* [124] */
@@ -6530,7 +6534,7 @@
/* parameters */ ParameterIndex(384),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(58),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [125] */
@@ -6543,7 +6547,7 @@
/* parameters */ ParameterIndex(384),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(92),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [126] */
@@ -6556,7 +6560,7 @@
/* parameters */ ParameterIndex(384),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(68),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [127] */
@@ -6569,7 +6573,7 @@
/* parameters */ ParameterIndex(384),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(44),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [128] */
@@ -6582,7 +6586,7 @@
/* parameters */ ParameterIndex(384),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(94),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [129] */
@@ -6725,7 +6729,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(84),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(102),
+ /* const_eval_fn */ ConstEvalFunctionIndex(106),
},
{
/* [140] */
@@ -6738,7 +6742,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(74),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(102),
+ /* const_eval_fn */ ConstEvalFunctionIndex(106),
},
{
/* [141] */
@@ -6751,7 +6755,7 @@
/* parameters */ ParameterIndex(209),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(74),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(77),
+ /* const_eval_fn */ ConstEvalFunctionIndex(81),
},
{
/* [142] */
@@ -6764,7 +6768,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(74),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(104),
+ /* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
/* [143] */
@@ -6777,7 +6781,7 @@
/* parameters */ ParameterIndex(205),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(74),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(105),
+ /* const_eval_fn */ ConstEvalFunctionIndex(109),
},
{
/* [144] */
@@ -6790,7 +6794,7 @@
/* parameters */ ParameterIndex(383),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(26),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [145] */
@@ -6803,7 +6807,7 @@
/* parameters */ ParameterIndex(383),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(86),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [146] */
@@ -6816,7 +6820,7 @@
/* parameters */ ParameterIndex(383),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(56),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [147] */
@@ -6829,7 +6833,7 @@
/* parameters */ ParameterIndex(383),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(38),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [148] */
@@ -6842,7 +6846,7 @@
/* parameters */ ParameterIndex(383),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(88),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [149] */
@@ -6855,7 +6859,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(83),
+ /* const_eval_fn */ ConstEvalFunctionIndex(87),
},
{
/* [150] */
@@ -6868,7 +6872,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(83),
+ /* const_eval_fn */ ConstEvalFunctionIndex(87),
},
{
/* [151] */
@@ -6881,7 +6885,7 @@
/* parameters */ ParameterIndex(223),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(83),
+ /* const_eval_fn */ ConstEvalFunctionIndex(87),
},
{
/* [152] */
@@ -6894,7 +6898,7 @@
/* parameters */ ParameterIndex(350),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(83),
+ /* const_eval_fn */ ConstEvalFunctionIndex(87),
},
{
/* [153] */
@@ -6907,7 +6911,7 @@
/* parameters */ ParameterIndex(355),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(12),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(2),
- /* const_eval_fn */ ConstEvalFunctionIndex(83),
+ /* const_eval_fn */ ConstEvalFunctionIndex(87),
},
{
/* [154] */
@@ -6920,7 +6924,7 @@
/* parameters */ ParameterIndex(354),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(12),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(2),
- /* const_eval_fn */ ConstEvalFunctionIndex(83),
+ /* const_eval_fn */ ConstEvalFunctionIndex(87),
},
{
/* [155] */
@@ -6933,7 +6937,7 @@
/* parameters */ ParameterIndex(356),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(3),
- /* const_eval_fn */ ConstEvalFunctionIndex(84),
+ /* const_eval_fn */ ConstEvalFunctionIndex(88),
},
{
/* [156] */
@@ -6946,7 +6950,7 @@
/* parameters */ ParameterIndex(358),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(85),
+ /* const_eval_fn */ ConstEvalFunctionIndex(89),
},
{
/* [157] */
@@ -6959,7 +6963,7 @@
/* parameters */ ParameterIndex(360),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(12),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(20),
- /* const_eval_fn */ ConstEvalFunctionIndex(86),
+ /* const_eval_fn */ ConstEvalFunctionIndex(90),
},
{
/* [158] */
@@ -7414,7 +7418,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(104),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(102),
+ /* const_eval_fn */ ConstEvalFunctionIndex(106),
},
{
/* [193] */
@@ -7427,7 +7431,7 @@
/* parameters */ ParameterIndex(386),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(104),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(77),
+ /* const_eval_fn */ ConstEvalFunctionIndex(81),
},
{
/* [194] */
@@ -7440,7 +7444,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(104),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(107),
+ /* const_eval_fn */ ConstEvalFunctionIndex(111),
},
{
/* [195] */
@@ -7453,7 +7457,7 @@
/* parameters */ ParameterIndex(209),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(104),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(108),
+ /* const_eval_fn */ ConstEvalFunctionIndex(112),
},
{
/* [196] */
@@ -7466,7 +7470,7 @@
/* parameters */ ParameterIndex(387),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(106),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [197] */
@@ -7479,7 +7483,7 @@
/* parameters */ ParameterIndex(388),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(108),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [198] */
@@ -7492,7 +7496,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(110),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(102),
+ /* const_eval_fn */ ConstEvalFunctionIndex(106),
},
{
/* [199] */
@@ -7505,7 +7509,7 @@
/* parameters */ ParameterIndex(389),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(110),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(77),
+ /* const_eval_fn */ ConstEvalFunctionIndex(81),
},
{
/* [200] */
@@ -7518,7 +7522,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(110),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(107),
+ /* const_eval_fn */ ConstEvalFunctionIndex(111),
},
{
/* [201] */
@@ -7531,7 +7535,7 @@
/* parameters */ ParameterIndex(213),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(110),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(108),
+ /* const_eval_fn */ ConstEvalFunctionIndex(112),
},
{
/* [202] */
@@ -7544,7 +7548,7 @@
/* parameters */ ParameterIndex(390),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(112),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [203] */
@@ -7557,7 +7561,7 @@
/* parameters */ ParameterIndex(391),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(114),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [204] */
@@ -7570,7 +7574,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(116),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(102),
+ /* const_eval_fn */ ConstEvalFunctionIndex(106),
},
{
/* [205] */
@@ -7583,7 +7587,7 @@
/* parameters */ ParameterIndex(392),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(116),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(77),
+ /* const_eval_fn */ ConstEvalFunctionIndex(81),
},
{
/* [206] */
@@ -7596,7 +7600,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(116),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(107),
+ /* const_eval_fn */ ConstEvalFunctionIndex(111),
},
{
/* [207] */
@@ -7609,7 +7613,7 @@
/* parameters */ ParameterIndex(217),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(116),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(108),
+ /* const_eval_fn */ ConstEvalFunctionIndex(112),
},
{
/* [208] */
@@ -7622,7 +7626,7 @@
/* parameters */ ParameterIndex(393),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(118),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [209] */
@@ -7635,7 +7639,7 @@
/* parameters */ ParameterIndex(394),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(120),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [210] */
@@ -7648,7 +7652,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(122),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(102),
+ /* const_eval_fn */ ConstEvalFunctionIndex(106),
},
{
/* [211] */
@@ -7661,7 +7665,7 @@
/* parameters */ ParameterIndex(395),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(122),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(77),
+ /* const_eval_fn */ ConstEvalFunctionIndex(81),
},
{
/* [212] */
@@ -7674,7 +7678,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(122),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(107),
+ /* const_eval_fn */ ConstEvalFunctionIndex(111),
},
{
/* [213] */
@@ -7687,7 +7691,7 @@
/* parameters */ ParameterIndex(209),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(122),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(108),
+ /* const_eval_fn */ ConstEvalFunctionIndex(112),
},
{
/* [214] */
@@ -7700,7 +7704,7 @@
/* parameters */ ParameterIndex(396),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(124),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [215] */
@@ -7713,7 +7717,7 @@
/* parameters */ ParameterIndex(397),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(126),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [216] */
@@ -7726,7 +7730,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(128),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(102),
+ /* const_eval_fn */ ConstEvalFunctionIndex(106),
},
{
/* [217] */
@@ -7739,7 +7743,7 @@
/* parameters */ ParameterIndex(398),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(128),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(77),
+ /* const_eval_fn */ ConstEvalFunctionIndex(81),
},
{
/* [218] */
@@ -7752,7 +7756,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(128),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(107),
+ /* const_eval_fn */ ConstEvalFunctionIndex(111),
},
{
/* [219] */
@@ -7765,7 +7769,7 @@
/* parameters */ ParameterIndex(213),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(128),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(108),
+ /* const_eval_fn */ ConstEvalFunctionIndex(112),
},
{
/* [220] */
@@ -7778,7 +7782,7 @@
/* parameters */ ParameterIndex(399),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(130),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [221] */
@@ -7791,7 +7795,7 @@
/* parameters */ ParameterIndex(400),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(132),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [222] */
@@ -7804,7 +7808,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(134),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(102),
+ /* const_eval_fn */ ConstEvalFunctionIndex(106),
},
{
/* [223] */
@@ -7817,7 +7821,7 @@
/* parameters */ ParameterIndex(401),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(134),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(77),
+ /* const_eval_fn */ ConstEvalFunctionIndex(81),
},
{
/* [224] */
@@ -7830,7 +7834,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(134),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(107),
+ /* const_eval_fn */ ConstEvalFunctionIndex(111),
},
{
/* [225] */
@@ -7843,7 +7847,7 @@
/* parameters */ ParameterIndex(217),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(134),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(108),
+ /* const_eval_fn */ ConstEvalFunctionIndex(112),
},
{
/* [226] */
@@ -7856,7 +7860,7 @@
/* parameters */ ParameterIndex(402),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(136),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [227] */
@@ -7869,7 +7873,7 @@
/* parameters */ ParameterIndex(403),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(138),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [228] */
@@ -7882,7 +7886,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(140),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(102),
+ /* const_eval_fn */ ConstEvalFunctionIndex(106),
},
{
/* [229] */
@@ -7895,7 +7899,7 @@
/* parameters */ ParameterIndex(404),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(140),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(77),
+ /* const_eval_fn */ ConstEvalFunctionIndex(81),
},
{
/* [230] */
@@ -7908,7 +7912,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(140),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(107),
+ /* const_eval_fn */ ConstEvalFunctionIndex(111),
},
{
/* [231] */
@@ -7921,7 +7925,7 @@
/* parameters */ ParameterIndex(209),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(140),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(108),
+ /* const_eval_fn */ ConstEvalFunctionIndex(112),
},
{
/* [232] */
@@ -7934,7 +7938,7 @@
/* parameters */ ParameterIndex(405),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(142),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [233] */
@@ -7947,7 +7951,7 @@
/* parameters */ ParameterIndex(406),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(144),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [234] */
@@ -7960,7 +7964,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(146),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(102),
+ /* const_eval_fn */ ConstEvalFunctionIndex(106),
},
{
/* [235] */
@@ -7973,7 +7977,7 @@
/* parameters */ ParameterIndex(407),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(146),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(77),
+ /* const_eval_fn */ ConstEvalFunctionIndex(81),
},
{
/* [236] */
@@ -7986,7 +7990,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(146),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(107),
+ /* const_eval_fn */ ConstEvalFunctionIndex(111),
},
{
/* [237] */
@@ -7999,7 +8003,7 @@
/* parameters */ ParameterIndex(213),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(146),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(108),
+ /* const_eval_fn */ ConstEvalFunctionIndex(112),
},
{
/* [238] */
@@ -8012,7 +8016,7 @@
/* parameters */ ParameterIndex(408),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(148),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [239] */
@@ -8025,7 +8029,7 @@
/* parameters */ ParameterIndex(409),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(150),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [240] */
@@ -8038,7 +8042,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(152),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(102),
+ /* const_eval_fn */ ConstEvalFunctionIndex(106),
},
{
/* [241] */
@@ -8051,7 +8055,7 @@
/* parameters */ ParameterIndex(410),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(152),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(77),
+ /* const_eval_fn */ ConstEvalFunctionIndex(81),
},
{
/* [242] */
@@ -8064,7 +8068,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(152),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(107),
+ /* const_eval_fn */ ConstEvalFunctionIndex(111),
},
{
/* [243] */
@@ -8077,7 +8081,7 @@
/* parameters */ ParameterIndex(217),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(152),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(108),
+ /* const_eval_fn */ ConstEvalFunctionIndex(112),
},
{
/* [244] */
@@ -8090,7 +8094,7 @@
/* parameters */ ParameterIndex(411),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(154),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [245] */
@@ -8103,7 +8107,7 @@
/* parameters */ ParameterIndex(412),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(156),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [246] */
@@ -8181,7 +8185,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(81),
+ /* const_eval_fn */ ConstEvalFunctionIndex(85),
},
{
/* [252] */
@@ -8194,7 +8198,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(81),
+ /* const_eval_fn */ ConstEvalFunctionIndex(85),
},
{
/* [253] */
@@ -8207,7 +8211,7 @@
/* parameters */ ParameterIndex(223),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(81),
+ /* const_eval_fn */ ConstEvalFunctionIndex(85),
},
{
/* [254] */
@@ -8220,7 +8224,7 @@
/* parameters */ ParameterIndex(350),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(81),
+ /* const_eval_fn */ ConstEvalFunctionIndex(85),
},
{
/* [255] */
@@ -8233,7 +8237,7 @@
/* parameters */ ParameterIndex(353),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(12),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(2),
- /* const_eval_fn */ ConstEvalFunctionIndex(81),
+ /* const_eval_fn */ ConstEvalFunctionIndex(85),
},
{
/* [256] */
@@ -8246,7 +8250,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(82),
+ /* const_eval_fn */ ConstEvalFunctionIndex(86),
},
{
/* [257] */
@@ -8259,7 +8263,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(82),
+ /* const_eval_fn */ ConstEvalFunctionIndex(86),
},
{
/* [258] */
@@ -8272,7 +8276,7 @@
/* parameters */ ParameterIndex(223),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(82),
+ /* const_eval_fn */ ConstEvalFunctionIndex(86),
},
{
/* [259] */
@@ -8285,7 +8289,7 @@
/* parameters */ ParameterIndex(350),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(82),
+ /* const_eval_fn */ ConstEvalFunctionIndex(86),
},
{
/* [260] */
@@ -8298,7 +8302,7 @@
/* parameters */ ParameterIndex(353),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(12),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(2),
- /* const_eval_fn */ ConstEvalFunctionIndex(82),
+ /* const_eval_fn */ ConstEvalFunctionIndex(86),
},
{
/* [261] */
@@ -8311,7 +8315,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(87),
+ /* const_eval_fn */ ConstEvalFunctionIndex(91),
},
{
/* [262] */
@@ -8324,7 +8328,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(87),
+ /* const_eval_fn */ ConstEvalFunctionIndex(91),
},
{
/* [263] */
@@ -8337,7 +8341,7 @@
/* parameters */ ParameterIndex(223),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(87),
+ /* const_eval_fn */ ConstEvalFunctionIndex(91),
},
{
/* [264] */
@@ -8350,7 +8354,7 @@
/* parameters */ ParameterIndex(350),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(87),
+ /* const_eval_fn */ ConstEvalFunctionIndex(91),
},
{
/* [265] */
@@ -8363,7 +8367,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(88),
+ /* const_eval_fn */ ConstEvalFunctionIndex(92),
},
{
/* [266] */
@@ -8376,7 +8380,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(88),
+ /* const_eval_fn */ ConstEvalFunctionIndex(92),
},
{
/* [267] */
@@ -8389,7 +8393,7 @@
/* parameters */ ParameterIndex(223),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(88),
+ /* const_eval_fn */ ConstEvalFunctionIndex(92),
},
{
/* [268] */
@@ -8402,7 +8406,7 @@
/* parameters */ ParameterIndex(350),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(88),
+ /* const_eval_fn */ ConstEvalFunctionIndex(92),
},
{
/* [269] */
@@ -8415,7 +8419,7 @@
/* parameters */ ParameterIndex(226),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(9),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(90),
+ /* const_eval_fn */ ConstEvalFunctionIndex(94),
},
{
/* [270] */
@@ -8428,7 +8432,7 @@
/* parameters */ ParameterIndex(233),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(8),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(90),
+ /* const_eval_fn */ ConstEvalFunctionIndex(94),
},
{
/* [271] */
@@ -8441,7 +8445,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(90),
+ /* const_eval_fn */ ConstEvalFunctionIndex(94),
},
{
/* [272] */
@@ -8454,7 +8458,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(90),
+ /* const_eval_fn */ ConstEvalFunctionIndex(94),
},
{
/* [273] */
@@ -8467,7 +8471,7 @@
/* parameters */ ParameterIndex(226),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(9),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(91),
+ /* const_eval_fn */ ConstEvalFunctionIndex(95),
},
{
/* [274] */
@@ -8480,7 +8484,7 @@
/* parameters */ ParameterIndex(233),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(8),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(91),
+ /* const_eval_fn */ ConstEvalFunctionIndex(95),
},
{
/* [275] */
@@ -8493,7 +8497,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(91),
+ /* const_eval_fn */ ConstEvalFunctionIndex(95),
},
{
/* [276] */
@@ -8506,7 +8510,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(91),
+ /* const_eval_fn */ ConstEvalFunctionIndex(95),
},
{
/* [277] */
@@ -8558,7 +8562,7 @@
/* parameters */ ParameterIndex(224),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(60),
+ /* const_eval_fn */ ConstEvalFunctionIndex(62),
},
{
/* [281] */
@@ -8571,7 +8575,7 @@
/* parameters */ ParameterIndex(228),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(60),
+ /* const_eval_fn */ ConstEvalFunctionIndex(62),
},
{
/* [282] */
@@ -8584,7 +8588,7 @@
/* parameters */ ParameterIndex(231),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(61),
+ /* const_eval_fn */ ConstEvalFunctionIndex(63),
},
{
/* [283] */
@@ -8597,7 +8601,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(31),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(102),
+ /* const_eval_fn */ ConstEvalFunctionIndex(106),
},
{
/* [284] */
@@ -8610,7 +8614,7 @@
/* parameters */ ParameterIndex(381),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(31),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(77),
+ /* const_eval_fn */ ConstEvalFunctionIndex(81),
},
{
/* [285] */
@@ -8623,7 +8627,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(31),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [286] */
@@ -8636,7 +8640,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(33),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(102),
+ /* const_eval_fn */ ConstEvalFunctionIndex(106),
},
{
/* [287] */
@@ -8649,7 +8653,7 @@
/* parameters */ ParameterIndex(17),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(33),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(77),
+ /* const_eval_fn */ ConstEvalFunctionIndex(81),
},
{
/* [288] */
@@ -8662,7 +8666,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(33),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [289] */
@@ -8675,7 +8679,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(15),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(102),
+ /* const_eval_fn */ ConstEvalFunctionIndex(106),
},
{
/* [290] */
@@ -8688,7 +8692,7 @@
/* parameters */ ParameterIndex(370),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(15),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(77),
+ /* const_eval_fn */ ConstEvalFunctionIndex(81),
},
{
/* [291] */
@@ -8701,7 +8705,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(15),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [292] */
@@ -8714,7 +8718,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(87),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(102),
+ /* const_eval_fn */ ConstEvalFunctionIndex(106),
},
{
/* [293] */
@@ -8727,7 +8731,7 @@
/* parameters */ ParameterIndex(382),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(87),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(77),
+ /* const_eval_fn */ ConstEvalFunctionIndex(81),
},
{
/* [294] */
@@ -8740,7 +8744,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(87),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [295] */
@@ -8753,7 +8757,7 @@
/* parameters */ ParameterIndex(/* invalid */),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(9),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(102),
+ /* const_eval_fn */ ConstEvalFunctionIndex(106),
},
{
/* [296] */
@@ -8766,7 +8770,7 @@
/* parameters */ ParameterIndex(226),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(9),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(77),
+ /* const_eval_fn */ ConstEvalFunctionIndex(81),
},
{
/* [297] */
@@ -8779,7 +8783,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(9),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
/* [298] */
@@ -9780,7 +9784,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(52),
+ /* const_eval_fn */ ConstEvalFunctionIndex(54),
},
{
/* [375] */
@@ -9793,7 +9797,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(52),
+ /* const_eval_fn */ ConstEvalFunctionIndex(54),
},
{
/* [376] */
@@ -9806,7 +9810,7 @@
/* parameters */ ParameterIndex(370),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(15),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(53),
+ /* const_eval_fn */ ConstEvalFunctionIndex(55),
},
{
/* [377] */
@@ -9819,7 +9823,7 @@
/* parameters */ ParameterIndex(371),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(14),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(53),
+ /* const_eval_fn */ ConstEvalFunctionIndex(55),
},
{
/* [378] */
@@ -9832,7 +9836,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(54),
+ /* const_eval_fn */ ConstEvalFunctionIndex(56),
},
{
/* [379] */
@@ -9845,7 +9849,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(54),
+ /* const_eval_fn */ ConstEvalFunctionIndex(56),
},
{
/* [380] */
@@ -9858,7 +9862,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(57),
+ /* const_eval_fn */ ConstEvalFunctionIndex(59),
},
{
/* [381] */
@@ -9871,7 +9875,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(57),
+ /* const_eval_fn */ ConstEvalFunctionIndex(59),
},
{
/* [382] */
@@ -9884,7 +9888,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(58),
+ /* const_eval_fn */ ConstEvalFunctionIndex(60),
},
{
/* [383] */
@@ -9897,7 +9901,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(58),
+ /* const_eval_fn */ ConstEvalFunctionIndex(60),
},
{
/* [384] */
@@ -9910,7 +9914,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(59),
+ /* const_eval_fn */ ConstEvalFunctionIndex(61),
},
{
/* [385] */
@@ -9923,7 +9927,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(59),
+ /* const_eval_fn */ ConstEvalFunctionIndex(61),
},
{
/* [386] */
@@ -9936,7 +9940,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(62),
+ /* const_eval_fn */ ConstEvalFunctionIndex(64),
},
{
/* [387] */
@@ -9949,7 +9953,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(62),
+ /* const_eval_fn */ ConstEvalFunctionIndex(64),
},
{
/* [388] */
@@ -9962,7 +9966,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(63),
+ /* const_eval_fn */ ConstEvalFunctionIndex(65),
},
{
/* [389] */
@@ -9975,7 +9979,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(63),
+ /* const_eval_fn */ ConstEvalFunctionIndex(65),
},
{
/* [390] */
@@ -9988,7 +9992,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(64),
+ /* const_eval_fn */ ConstEvalFunctionIndex(66),
},
{
/* [391] */
@@ -10001,7 +10005,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(64),
+ /* const_eval_fn */ ConstEvalFunctionIndex(66),
},
{
/* [392] */
@@ -10014,7 +10018,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(65),
+ /* const_eval_fn */ ConstEvalFunctionIndex(67),
},
{
/* [393] */
@@ -10027,7 +10031,7 @@
/* parameters */ ParameterIndex(221),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(65),
+ /* const_eval_fn */ ConstEvalFunctionIndex(67),
},
{
/* [394] */
@@ -10040,7 +10044,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(66),
+ /* const_eval_fn */ ConstEvalFunctionIndex(68),
},
{
/* [395] */
@@ -10053,7 +10057,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(66),
+ /* const_eval_fn */ ConstEvalFunctionIndex(68),
},
{
/* [396] */
@@ -10066,7 +10070,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(67),
+ /* const_eval_fn */ ConstEvalFunctionIndex(69),
},
{
/* [397] */
@@ -10079,7 +10083,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(67),
+ /* const_eval_fn */ ConstEvalFunctionIndex(69),
},
{
/* [398] */
@@ -10092,7 +10096,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(68),
+ /* const_eval_fn */ ConstEvalFunctionIndex(70),
},
{
/* [399] */
@@ -10105,7 +10109,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(68),
+ /* const_eval_fn */ ConstEvalFunctionIndex(70),
},
{
/* [400] */
@@ -10118,7 +10122,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(69),
+ /* const_eval_fn */ ConstEvalFunctionIndex(71),
},
{
/* [401] */
@@ -10131,7 +10135,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(69),
+ /* const_eval_fn */ ConstEvalFunctionIndex(71),
},
{
/* [402] */
@@ -10144,7 +10148,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(71),
+ /* const_eval_fn */ ConstEvalFunctionIndex(73),
},
{
/* [403] */
@@ -10157,7 +10161,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(71),
+ /* const_eval_fn */ ConstEvalFunctionIndex(73),
},
{
/* [404] */
@@ -10222,7 +10226,7 @@
/* parameters */ ParameterIndex(226),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(9),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(78),
+ /* const_eval_fn */ ConstEvalFunctionIndex(82),
},
{
/* [409] */
@@ -10235,7 +10239,7 @@
/* parameters */ ParameterIndex(233),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(8),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(78),
+ /* const_eval_fn */ ConstEvalFunctionIndex(82),
},
{
/* [410] */
@@ -10248,7 +10252,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(79),
+ /* const_eval_fn */ ConstEvalFunctionIndex(83),
},
{
/* [411] */
@@ -10261,7 +10265,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(79),
+ /* const_eval_fn */ ConstEvalFunctionIndex(83),
},
{
/* [412] */
@@ -10274,7 +10278,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(80),
+ /* const_eval_fn */ ConstEvalFunctionIndex(84),
},
{
/* [413] */
@@ -10287,7 +10291,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(80),
+ /* const_eval_fn */ ConstEvalFunctionIndex(84),
},
{
/* [414] */
@@ -10300,7 +10304,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(89),
+ /* const_eval_fn */ ConstEvalFunctionIndex(93),
},
{
/* [415] */
@@ -10313,7 +10317,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(89),
+ /* const_eval_fn */ ConstEvalFunctionIndex(93),
},
{
/* [416] */
@@ -10326,7 +10330,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(9),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(94),
+ /* const_eval_fn */ ConstEvalFunctionIndex(98),
},
{
/* [417] */
@@ -10339,7 +10343,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(8),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(94),
+ /* const_eval_fn */ ConstEvalFunctionIndex(98),
},
{
/* [418] */
@@ -10352,7 +10356,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(9),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(95),
+ /* const_eval_fn */ ConstEvalFunctionIndex(99),
},
{
/* [419] */
@@ -10365,7 +10369,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(8),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(95),
+ /* const_eval_fn */ ConstEvalFunctionIndex(99),
},
{
/* [420] */
@@ -10378,7 +10382,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(9),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(96),
+ /* const_eval_fn */ ConstEvalFunctionIndex(100),
},
{
/* [421] */
@@ -10391,7 +10395,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(8),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(96),
+ /* const_eval_fn */ ConstEvalFunctionIndex(100),
},
{
/* [422] */
@@ -10404,7 +10408,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(9),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(97),
+ /* const_eval_fn */ ConstEvalFunctionIndex(101),
},
{
/* [423] */
@@ -10417,7 +10421,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(8),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(97),
+ /* const_eval_fn */ ConstEvalFunctionIndex(101),
},
{
/* [424] */
@@ -10430,7 +10434,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(9),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(98),
+ /* const_eval_fn */ ConstEvalFunctionIndex(102),
},
{
/* [425] */
@@ -10443,7 +10447,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(8),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(98),
+ /* const_eval_fn */ ConstEvalFunctionIndex(102),
},
{
/* [426] */
@@ -10456,7 +10460,7 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(9),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(99),
+ /* const_eval_fn */ ConstEvalFunctionIndex(103),
},
{
/* [427] */
@@ -10469,7 +10473,7 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(8),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(99),
+ /* const_eval_fn */ ConstEvalFunctionIndex(103),
},
{
/* [428] */
@@ -10482,7 +10486,7 @@
/* parameters */ ParameterIndex(16),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(100),
+ /* const_eval_fn */ ConstEvalFunctionIndex(104),
},
{
/* [429] */
@@ -10495,7 +10499,7 @@
/* parameters */ ParameterIndex(351),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(100),
+ /* const_eval_fn */ ConstEvalFunctionIndex(104),
},
{
/* [430] */
@@ -10508,7 +10512,7 @@
/* parameters */ ParameterIndex(16),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [431] */
@@ -10521,7 +10525,7 @@
/* parameters */ ParameterIndex(351),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(101),
+ /* const_eval_fn */ ConstEvalFunctionIndex(105),
},
{
/* [432] */
@@ -10721,6 +10725,32 @@
{
/* [447] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
+ /* num_parameters */ 1,
+ /* num_template_types */ 0,
+ /* num_template_numbers */ 0,
+ /* template_types */ TemplateTypeIndex(/* invalid */),
+ /* template_numbers */ TemplateNumberIndex(/* invalid */),
+ /* parameters */ ParameterIndex(374),
+ /* return_type_matcher_indices */ TypeMatcherIndicesIndex(33),
+ /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
+ /* const_eval_fn */ ConstEvalFunctionIndex(52),
+ },
+ {
+ /* [448] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
+ /* num_parameters */ 1,
+ /* num_template_types */ 0,
+ /* num_template_numbers */ 0,
+ /* template_types */ TemplateTypeIndex(/* invalid */),
+ /* template_numbers */ TemplateNumberIndex(/* invalid */),
+ /* parameters */ ParameterIndex(375),
+ /* return_type_matcher_indices */ TypeMatcherIndicesIndex(33),
+ /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
+ /* const_eval_fn */ ConstEvalFunctionIndex(53),
+ },
+ {
+ /* [449] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 2,
/* num_template_types */ 1,
/* num_template_numbers */ 1,
@@ -10729,10 +10759,10 @@
/* parameters */ ParameterIndex(149),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(55),
+ /* const_eval_fn */ ConstEvalFunctionIndex(57),
},
{
- /* [448] */
+ /* [450] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 3,
/* num_template_types */ 1,
@@ -10742,10 +10772,10 @@
/* parameters */ ParameterIndex(222),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(6),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(1),
- /* const_eval_fn */ ConstEvalFunctionIndex(56),
+ /* const_eval_fn */ ConstEvalFunctionIndex(58),
},
{
- /* [449] */
+ /* [451] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 0,
/* num_template_types */ 0,
@@ -10758,7 +10788,7 @@
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [450] */
+ /* [452] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 1,
/* num_template_types */ 1,
@@ -10768,35 +10798,9 @@
/* parameters */ ParameterIndex(353),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(12),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(3),
- /* const_eval_fn */ ConstEvalFunctionIndex(70),
- },
- {
- /* [451] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
- /* num_parameters */ 1,
- /* num_template_types */ 0,
- /* num_template_numbers */ 0,
- /* template_types */ TemplateTypeIndex(/* invalid */),
- /* template_numbers */ TemplateNumberIndex(/* invalid */),
- /* parameters */ ParameterIndex(17),
- /* return_type_matcher_indices */ TypeMatcherIndicesIndex(26),
- /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(72),
},
{
- /* [452] */
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
- /* num_parameters */ 1,
- /* num_template_types */ 0,
- /* num_template_numbers */ 0,
- /* template_types */ TemplateTypeIndex(/* invalid */),
- /* template_numbers */ TemplateNumberIndex(/* invalid */),
- /* parameters */ ParameterIndex(17),
- /* return_type_matcher_indices */ TypeMatcherIndicesIndex(26),
- /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(73),
- },
- {
/* [453] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 1,
@@ -10818,7 +10822,7 @@
/* template_types */ TemplateTypeIndex(/* invalid */),
/* template_numbers */ TemplateNumberIndex(/* invalid */),
/* parameters */ ParameterIndex(17),
- /* return_type_matcher_indices */ TypeMatcherIndicesIndex(28),
+ /* return_type_matcher_indices */ TypeMatcherIndicesIndex(26),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(75),
},
@@ -10831,12 +10835,64 @@
/* template_types */ TemplateTypeIndex(/* invalid */),
/* template_numbers */ TemplateNumberIndex(/* invalid */),
/* parameters */ ParameterIndex(17),
- /* return_type_matcher_indices */ TypeMatcherIndicesIndex(28),
+ /* return_type_matcher_indices */ TypeMatcherIndicesIndex(26),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(76),
},
{
/* [456] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
+ /* num_parameters */ 1,
+ /* num_template_types */ 0,
+ /* num_template_numbers */ 0,
+ /* template_types */ TemplateTypeIndex(/* invalid */),
+ /* template_numbers */ TemplateNumberIndex(/* invalid */),
+ /* parameters */ ParameterIndex(17),
+ /* return_type_matcher_indices */ TypeMatcherIndicesIndex(28),
+ /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
+ /* const_eval_fn */ ConstEvalFunctionIndex(77),
+ },
+ {
+ /* [457] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
+ /* num_parameters */ 1,
+ /* num_template_types */ 0,
+ /* num_template_numbers */ 0,
+ /* template_types */ TemplateTypeIndex(/* invalid */),
+ /* template_numbers */ TemplateNumberIndex(/* invalid */),
+ /* parameters */ ParameterIndex(17),
+ /* return_type_matcher_indices */ TypeMatcherIndicesIndex(28),
+ /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
+ /* const_eval_fn */ ConstEvalFunctionIndex(78),
+ },
+ {
+ /* [458] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
+ /* num_parameters */ 1,
+ /* num_template_types */ 0,
+ /* num_template_numbers */ 0,
+ /* template_types */ TemplateTypeIndex(/* invalid */),
+ /* template_numbers */ TemplateNumberIndex(/* invalid */),
+ /* parameters */ ParameterIndex(17),
+ /* return_type_matcher_indices */ TypeMatcherIndicesIndex(30),
+ /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
+ /* const_eval_fn */ ConstEvalFunctionIndex(79),
+ },
+ {
+ /* [459] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
+ /* num_parameters */ 1,
+ /* num_template_types */ 0,
+ /* num_template_numbers */ 0,
+ /* template_types */ TemplateTypeIndex(/* invalid */),
+ /* template_numbers */ TemplateNumberIndex(/* invalid */),
+ /* parameters */ ParameterIndex(17),
+ /* return_type_matcher_indices */ TypeMatcherIndicesIndex(32),
+ /* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
+ /* const_eval_fn */ ConstEvalFunctionIndex(80),
+ },
+ {
+ /* [460] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 1,
/* num_template_types */ 1,
@@ -10849,7 +10905,7 @@
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [457] */
+ /* [461] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 1,
/* num_template_types */ 1,
@@ -10862,7 +10918,7 @@
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [458] */
+ /* [462] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 2,
/* num_template_types */ 1,
@@ -10875,7 +10931,7 @@
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [459] */
+ /* [463] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 2,
/* num_template_types */ 1,
@@ -10888,7 +10944,7 @@
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [460] */
+ /* [464] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 3,
/* num_template_types */ 1,
@@ -10901,7 +10957,7 @@
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [461] */
+ /* [465] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 0,
/* num_template_types */ 0,
@@ -10914,7 +10970,7 @@
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [462] */
+ /* [466] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 2,
/* num_template_types */ 1,
@@ -10927,7 +10983,7 @@
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [463] */
+ /* [467] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 1,
/* num_template_types */ 1,
@@ -10937,10 +10993,10 @@
/* parameters */ ParameterIndex(1),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(2),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(77),
+ /* const_eval_fn */ ConstEvalFunctionIndex(81),
},
{
- /* [464] */
+ /* [468] */
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 2,
/* num_template_types */ 0,
@@ -10950,10 +11006,10 @@
/* parameters */ ParameterIndex(226),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(9),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(92),
+ /* const_eval_fn */ ConstEvalFunctionIndex(96),
},
{
- /* [465] */
+ /* [469] */
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 2,
/* num_template_types */ 0,
@@ -10963,10 +11019,10 @@
/* parameters */ ParameterIndex(226),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(9),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(93),
+ /* const_eval_fn */ ConstEvalFunctionIndex(97),
},
{
- /* [466] */
+ /* [470] */
/* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 1,
/* num_template_types */ 1,
@@ -10976,7 +11032,7 @@
/* parameters */ ParameterIndex(213),
/* return_type_matcher_indices */ TypeMatcherIndicesIndex(158),
/* return_number_matcher_indices */ NumberMatcherIndicesIndex(/* invalid */),
- /* const_eval_fn */ ConstEvalFunctionIndex(103),
+ /* const_eval_fn */ ConstEvalFunctionIndex(107),
},
};
@@ -11406,60 +11462,72 @@
},
{
/* [62] */
+ /* fn pack4xI8Clamp(vec4<i32>) -> u32 */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(447),
+ },
+ {
+ /* [63] */
+ /* fn pack4xU8Clamp(vec4<u32>) -> u32 */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(448),
+ },
+ {
+ /* [64] */
/* fn pow<T : fa_f32_f16>(T, T) -> T */
/* fn pow<N : num, T : fa_f32_f16>(vec<N, T>, vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(374),
},
{
- /* [63] */
+ /* [65] */
/* fn quantizeToF16(f32) -> f32 */
/* fn quantizeToF16<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(376),
},
{
- /* [64] */
+ /* [66] */
/* fn radians<T : fa_f32_f16>(T) -> T */
/* fn radians<N : num, T : fa_f32_f16>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(378),
},
{
- /* [65] */
+ /* [67] */
/* fn reflect<N : num, T : fa_f32_f16>(vec<N, T>, vec<N, T>) -> vec<N, T> */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(447),
+ /* overloads */ OverloadIndex(449),
},
{
- /* [66] */
+ /* [68] */
/* fn refract<N : num, T : fa_f32_f16>(vec<N, T>, vec<N, T>, T) -> vec<N, T> */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(448),
+ /* overloads */ OverloadIndex(450),
},
{
- /* [67] */
+ /* [69] */
/* fn reverseBits<T : iu32>(T) -> T */
/* fn reverseBits<N : num, T : iu32>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(380),
},
{
- /* [68] */
+ /* [70] */
/* fn round<T : fa_f32_f16>(@test_value(3.5) T) -> T */
/* fn round<N : num, T : fa_f32_f16>(@test_value(3.5) vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(382),
},
{
- /* [69] */
+ /* [71] */
/* fn saturate<T : fa_f32_f16>(@test_value(2) T) -> T */
/* fn saturate<T : fa_f32_f16, N : num>(@test_value(2) vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(384),
},
{
- /* [70] */
+ /* [72] */
/* fn select<T : scalar>(T, T, bool) -> T */
/* 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> */
@@ -11467,130 +11535,142 @@
/* overloads */ OverloadIndex(280),
},
{
- /* [71] */
+ /* [73] */
/* fn sign<T : fia_fi32_f16>(T) -> T */
/* fn sign<N : num, T : fia_fi32_f16>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(386),
},
{
- /* [72] */
+ /* [74] */
/* fn sin<T : fa_f32_f16>(@test_value(1.57079632679) T) -> T */
/* fn sin<N : num, T : fa_f32_f16>(@test_value(1.57079632679) vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(388),
},
{
- /* [73] */
+ /* [75] */
/* fn sinh<T : fa_f32_f16>(T) -> T */
/* fn sinh<N : num, T : fa_f32_f16>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(390),
},
{
- /* [74] */
+ /* [76] */
/* fn smoothstep<T : fa_f32_f16>(@test_value(2) T, @test_value(4) T, @test_value(3) T) -> T */
/* fn smoothstep<N : num, T : fa_f32_f16>(@test_value(2) vec<N, T>, @test_value(4) vec<N, T>, @test_value(3) vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(392),
},
{
- /* [75] */
+ /* [77] */
/* fn sqrt<T : fa_f32_f16>(T) -> T */
/* fn sqrt<N : num, T : fa_f32_f16>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(394),
},
{
- /* [76] */
+ /* [78] */
/* fn step<T : fa_f32_f16>(T, T) -> T */
/* fn step<N : num, T : fa_f32_f16>(vec<N, T>, vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(396),
},
{
- /* [77] */
+ /* [79] */
/* fn storageBarrier() */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(449),
+ /* overloads */ OverloadIndex(451),
},
{
- /* [78] */
+ /* [80] */
/* fn tan<T : fa_f32_f16>(T) -> T */
/* fn tan<N : num, T : fa_f32_f16>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(398),
},
{
- /* [79] */
+ /* [81] */
/* fn tanh<T : fa_f32_f16>(T) -> T */
/* fn tanh<N : num, T : fa_f32_f16>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(400),
},
{
- /* [80] */
+ /* [82] */
/* fn transpose<M : num, N : num, T : fa_f32_f16>(mat<M, N, T>) -> mat<N, M, T> */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(450),
+ /* overloads */ OverloadIndex(452),
},
{
- /* [81] */
+ /* [83] */
/* fn trunc<T : fa_f32_f16>(@test_value(1.5) T) -> T */
/* fn trunc<N : num, T : fa_f32_f16>(@test_value(1.5) vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(402),
},
{
- /* [82] */
- /* fn unpack2x16float(u32) -> vec2<f32> */
- /* num overloads */ 1,
- /* overloads */ OverloadIndex(451),
- },
- {
- /* [83] */
- /* fn unpack2x16snorm(u32) -> vec2<f32> */
- /* num overloads */ 1,
- /* overloads */ OverloadIndex(452),
- },
- {
/* [84] */
- /* fn unpack2x16unorm(u32) -> vec2<f32> */
+ /* fn unpack2x16float(u32) -> vec2<f32> */
/* num overloads */ 1,
/* overloads */ OverloadIndex(453),
},
{
/* [85] */
- /* fn unpack4x8snorm(u32) -> vec4<f32> */
+ /* fn unpack2x16snorm(u32) -> vec2<f32> */
/* num overloads */ 1,
/* overloads */ OverloadIndex(454),
},
{
/* [86] */
- /* fn unpack4x8unorm(u32) -> vec4<f32> */
+ /* fn unpack2x16unorm(u32) -> vec2<f32> */
/* num overloads */ 1,
/* overloads */ OverloadIndex(455),
},
{
/* [87] */
- /* fn workgroupBarrier() */
- /* num overloads */ 1,
- /* overloads */ OverloadIndex(449),
- },
- {
- /* [88] */
- /* fn workgroupUniformLoad<T>(ptr<workgroup, T, read_write>) -> T */
+ /* fn unpack4x8snorm(u32) -> vec4<f32> */
/* num overloads */ 1,
/* overloads */ OverloadIndex(456),
},
{
- /* [89] */
- /* fn textureBarrier() */
+ /* [88] */
+ /* fn unpack4x8unorm(u32) -> vec4<f32> */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(449),
+ /* overloads */ OverloadIndex(457),
+ },
+ {
+ /* [89] */
+ /* fn unpack4xI8(u32) -> vec4<i32> */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(458),
},
{
/* [90] */
+ /* fn unpack4xU8(u32) -> vec4<u32> */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(459),
+ },
+ {
+ /* [91] */
+ /* fn workgroupBarrier() */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(451),
+ },
+ {
+ /* [92] */
+ /* fn workgroupUniformLoad<T>(ptr<workgroup, T, read_write>) -> T */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(460),
+ },
+ {
+ /* [93] */
+ /* fn textureBarrier() */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(451),
+ },
+ {
+ /* [94] */
/* fn textureDimensions<T : fiu32>(texture: texture_1d<T>) -> u32 */
/* fn textureDimensions<T : fiu32, L : iu32>(texture: texture_1d<T>, level: L) -> u32 */
/* fn textureDimensions<T : fiu32>(texture: texture_2d<T>) -> vec2<u32> */
@@ -11622,7 +11702,7 @@
/* overloads */ OverloadIndex(0),
},
{
- /* [91] */
+ /* [95] */
/* fn textureGather<T : fiu32, C : iu32>(@const component: C, texture: texture_2d<T>, sampler: sampler, coords: vec2<f32>) -> vec4<T> */
/* fn textureGather<T : fiu32, C : iu32>(@const component: C, texture: texture_2d<T>, sampler: sampler, coords: vec2<f32>, @const offset: vec2<i32>) -> vec4<T> */
/* fn textureGather<T : fiu32, C : iu32, A : iu32>(@const component: C, texture: texture_2d_array<T>, sampler: sampler, coords: vec2<f32>, array_index: A) -> vec4<T> */
@@ -11639,7 +11719,7 @@
/* overloads */ OverloadIndex(93),
},
{
- /* [92] */
+ /* [96] */
/* fn textureGatherCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32) -> vec4<f32> */
/* fn textureGatherCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32, @const offset: vec2<i32>) -> vec4<f32> */
/* fn textureGatherCompare<A : iu32>(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: A, depth_ref: f32) -> vec4<f32> */
@@ -11650,7 +11730,7 @@
/* overloads */ OverloadIndex(174),
},
{
- /* [93] */
+ /* [97] */
/* fn textureNumLayers<T : fiu32>(texture: texture_2d_array<T>) -> u32 */
/* fn textureNumLayers<T : fiu32>(texture: texture_cube_array<T>) -> u32 */
/* fn textureNumLayers(texture: texture_depth_2d_array) -> u32 */
@@ -11660,7 +11740,7 @@
/* overloads */ OverloadIndex(246),
},
{
- /* [94] */
+ /* [98] */
/* fn textureNumLevels<T : fiu32>(texture: texture_1d<T>) -> u32 */
/* fn textureNumLevels<T : fiu32>(texture: texture_2d<T>) -> u32 */
/* fn textureNumLevels<T : fiu32>(texture: texture_2d_array<T>) -> u32 */
@@ -11675,14 +11755,14 @@
/* overloads */ OverloadIndex(129),
},
{
- /* [95] */
+ /* [99] */
/* fn textureNumSamples<T : fiu32>(texture: texture_multisampled_2d<T>) -> u32 */
/* fn textureNumSamples(texture: texture_depth_multisampled_2d) -> u32 */
/* num overloads */ 2,
/* overloads */ OverloadIndex(404),
},
{
- /* [96] */
+ /* [100] */
/* fn textureSample(texture: texture_1d<f32>, sampler: sampler, coords: f32) -> vec4<f32> */
/* fn textureSample(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>) -> vec4<f32> */
/* fn textureSample(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, @const offset: vec2<i32>) -> vec4<f32> */
@@ -11702,7 +11782,7 @@
/* overloads */ OverloadIndex(64),
},
{
- /* [97] */
+ /* [101] */
/* fn textureSampleBias(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, bias: f32) -> vec4<f32> */
/* fn textureSampleBias(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, bias: f32, @const offset: vec2<i32>) -> vec4<f32> */
/* fn textureSampleBias<A : iu32>(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A, bias: f32) -> vec4<f32> */
@@ -11715,7 +11795,7 @@
/* overloads */ OverloadIndex(158),
},
{
- /* [98] */
+ /* [102] */
/* fn textureSampleCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32) -> f32 */
/* fn textureSampleCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32, @const offset: vec2<i32>) -> f32 */
/* fn textureSampleCompare<A : iu32>(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: A, depth_ref: f32) -> f32 */
@@ -11726,7 +11806,7 @@
/* overloads */ OverloadIndex(180),
},
{
- /* [99] */
+ /* [103] */
/* fn textureSampleCompareLevel(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32) -> f32 */
/* fn textureSampleCompareLevel(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32, @const offset: vec2<i32>) -> f32 */
/* fn textureSampleCompareLevel<A : iu32>(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: A, depth_ref: f32) -> f32 */
@@ -11737,7 +11817,7 @@
/* overloads */ OverloadIndex(186),
},
{
- /* [100] */
+ /* [104] */
/* fn textureSampleGrad(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, ddx: vec2<f32>, ddy: vec2<f32>) -> vec4<f32> */
/* fn textureSampleGrad(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, ddx: vec2<f32>, ddy: vec2<f32>, @const offset: vec2<i32>) -> vec4<f32> */
/* fn textureSampleGrad<A : iu32>(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A, ddx: vec2<f32>, ddy: vec2<f32>) -> vec4<f32> */
@@ -11750,7 +11830,7 @@
/* overloads */ OverloadIndex(166),
},
{
- /* [101] */
+ /* [105] */
/* fn textureSampleLevel(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, level: f32) -> vec4<f32> */
/* fn textureSampleLevel(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, level: f32, @const offset: vec2<i32>) -> vec4<f32> */
/* fn textureSampleLevel<A : iu32>(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A, level: f32) -> vec4<f32> */
@@ -11769,14 +11849,14 @@
/* overloads */ OverloadIndex(79),
},
{
- /* [102] */
+ /* [106] */
/* fn textureSampleBaseClampToEdge(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>) -> vec4<f32> */
/* fn textureSampleBaseClampToEdge(texture: texture_external, sampler: sampler, coords: vec2<f32>) -> vec4<f32> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(406),
},
{
- /* [103] */
+ /* [107] */
/* fn textureStore<C : iu32>(texture: texture_storage_1d<f32_texel_format, writable>, coords: C, value: vec4<f32>) */
/* fn textureStore<C : iu32>(texture: texture_storage_2d<f32_texel_format, writable>, coords: vec2<C>, value: vec4<f32>) */
/* fn textureStore<C : iu32, A : iu32>(texture: texture_storage_2d_array<f32_texel_format, writable>, coords: vec2<C>, array_index: A, value: vec4<f32>) */
@@ -11793,7 +11873,7 @@
/* overloads */ OverloadIndex(105),
},
{
- /* [104] */
+ /* [108] */
/* fn textureLoad<T : fiu32, C : iu32, L : iu32>(texture: texture_1d<T>, coords: C, level: L) -> vec4<T> */
/* fn textureLoad<T : fiu32, C : iu32, L : iu32>(texture: texture_2d<T>, coords: vec2<C>, level: L) -> vec4<T> */
/* fn textureLoad<T : fiu32, C : iu32, A : iu32, L : iu32>(texture: texture_2d_array<T>, coords: vec2<C>, array_index: A, level: L) -> vec4<T> */
@@ -11819,89 +11899,89 @@
/* overloads */ OverloadIndex(27),
},
{
- /* [105] */
- /* fn atomicLoad<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>) -> T */
- /* num overloads */ 1,
- /* overloads */ OverloadIndex(457),
- },
- {
- /* [106] */
- /* fn atomicStore<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) */
- /* num overloads */ 1,
- /* overloads */ OverloadIndex(458),
- },
- {
- /* [107] */
- /* fn atomicAdd<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
- /* num overloads */ 1,
- /* overloads */ OverloadIndex(459),
- },
- {
- /* [108] */
- /* fn atomicSub<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
- /* num overloads */ 1,
- /* overloads */ OverloadIndex(459),
- },
- {
/* [109] */
- /* fn atomicMax<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
- /* num overloads */ 1,
- /* overloads */ OverloadIndex(459),
- },
- {
- /* [110] */
- /* fn atomicMin<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
- /* num overloads */ 1,
- /* overloads */ OverloadIndex(459),
- },
- {
- /* [111] */
- /* fn atomicAnd<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
- /* num overloads */ 1,
- /* overloads */ OverloadIndex(459),
- },
- {
- /* [112] */
- /* fn atomicOr<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
- /* num overloads */ 1,
- /* overloads */ OverloadIndex(459),
- },
- {
- /* [113] */
- /* fn atomicXor<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
- /* num overloads */ 1,
- /* overloads */ OverloadIndex(459),
- },
- {
- /* [114] */
- /* fn atomicExchange<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
- /* num overloads */ 1,
- /* overloads */ OverloadIndex(459),
- },
- {
- /* [115] */
- /* fn atomicCompareExchangeWeak<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T, T) -> __atomic_compare_exchange_result<T> */
- /* num overloads */ 1,
- /* overloads */ OverloadIndex(460),
- },
- {
- /* [116] */
- /* fn subgroupBallot() -> vec4<u32> */
+ /* fn atomicLoad<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>) -> T */
/* num overloads */ 1,
/* overloads */ OverloadIndex(461),
},
{
- /* [117] */
- /* fn subgroupBroadcast<T : fiu32>(value: T, @const sourceLaneIndex: u32) -> T */
+ /* [110] */
+ /* fn atomicStore<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) */
/* num overloads */ 1,
/* overloads */ OverloadIndex(462),
},
{
- /* [118] */
- /* fn _tint_materialize<T>(T) -> T */
+ /* [111] */
+ /* fn atomicAdd<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
/* num overloads */ 1,
/* overloads */ OverloadIndex(463),
},
+ {
+ /* [112] */
+ /* fn atomicSub<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(463),
+ },
+ {
+ /* [113] */
+ /* fn atomicMax<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(463),
+ },
+ {
+ /* [114] */
+ /* fn atomicMin<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(463),
+ },
+ {
+ /* [115] */
+ /* fn atomicAnd<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(463),
+ },
+ {
+ /* [116] */
+ /* fn atomicOr<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(463),
+ },
+ {
+ /* [117] */
+ /* fn atomicXor<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(463),
+ },
+ {
+ /* [118] */
+ /* fn atomicExchange<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(463),
+ },
+ {
+ /* [119] */
+ /* fn atomicCompareExchangeWeak<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T, T) -> __atomic_compare_exchange_result<T> */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(464),
+ },
+ {
+ /* [120] */
+ /* fn subgroupBallot() -> vec4<u32> */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(465),
+ },
+ {
+ /* [121] */
+ /* fn subgroupBroadcast<T : fiu32>(value: T, @const sourceLaneIndex: u32) -> T */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(466),
+ },
+ {
+ /* [122] */
+ /* fn _tint_materialize<T>(T) -> T */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(467),
+ },
};
constexpr IntrinsicInfo kUnaryOperators[] = {
@@ -12013,13 +12093,13 @@
/* [8] */
/* op &&(bool, bool) -> bool */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(464),
+ /* overloads */ OverloadIndex(468),
},
{
/* [9] */
/* op ||(bool, bool) -> bool */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(465),
+ /* overloads */ OverloadIndex(469),
},
{
/* [10] */
@@ -12294,7 +12374,7 @@
/* [17] */
/* conv packedVec3<T : concrete_scalar>(vec3<T>) -> packedVec3<T> */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(466),
+ /* overloads */ OverloadIndex(470),
},
};
diff --git a/src/tint/lang/wgsl/reader/lower/lower.cc b/src/tint/lang/wgsl/reader/lower/lower.cc
index bd218d7..f9a6ed9 100644
--- a/src/tint/lang/wgsl/reader/lower/lower.cc
+++ b/src/tint/lang/wgsl/reader/lower/lower.cc
@@ -107,6 +107,8 @@
CASE(kPack4X8Unorm)
CASE(kPack4XI8)
CASE(kPack4XU8)
+ CASE(kPack4XI8Clamp)
+ CASE(kPack4XU8Clamp)
CASE(kPow)
CASE(kQuantizeToF16)
CASE(kRadians)
@@ -132,6 +134,8 @@
CASE(kUnpack2X16Unorm)
CASE(kUnpack4X8Snorm)
CASE(kUnpack4X8Unorm)
+ CASE(kUnpack4XI8)
+ CASE(kUnpack4XU8)
CASE(kWorkgroupBarrier)
CASE(kTextureBarrier)
CASE(kTextureDimensions)
diff --git a/src/tint/lang/wgsl/resolver/builtin_validation_test.cc b/src/tint/lang/wgsl/resolver/builtin_validation_test.cc
index ca20ce7..3bae4eb 100644
--- a/src/tint/lang/wgsl/resolver/builtin_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/builtin_validation_test.cc
@@ -659,6 +659,114 @@
"current environment");
}
+TEST_F(ResolverPacked4x8IntegerDotProductValidationTest, Pack4xI8Clamp) {
+ // fn func { return pack4xI8Clamp(vec4i()); }
+ Require(wgsl::LanguageFeature::kPacked4X8IntegerDotProduct);
+
+ Func("func", tint::Empty, ty.u32(),
+ Vector{
+ Return(Call(Source{Source::Location{12, 34}}, "pack4xI8Clamp", Call<vec4<i32>>())),
+ });
+
+ EXPECT_TRUE(r()->Resolve());
+}
+
+TEST_F(ResolverPacked4x8IntegerDotProductValidationTest, Pack4xI8Clamp_FeatureDisallowed) {
+ // fn func { return pack4xI8Clamp(vec4i()); }
+ Func("func", tint::Empty, ty.u32(),
+ Vector{
+ Return(Call(Source{Source::Location{12, 34}}, "pack4xI8Clamp", Call<vec4<i32>>())),
+ });
+
+ auto resolver = Resolver(this, {});
+ EXPECT_FALSE(resolver.Resolve());
+ EXPECT_EQ(resolver.error(),
+ "12:34 error: built-in function 'pack4xI8Clamp' requires the "
+ "packed_4x8_integer_dot_product language feature, which is not allowed in the "
+ "current environment");
+}
+
+TEST_F(ResolverPacked4x8IntegerDotProductValidationTest, Pack4xU8Clamp) {
+ // fn func { return pack4xU8Clamp(vec4u()); }
+ Require(wgsl::LanguageFeature::kPacked4X8IntegerDotProduct);
+
+ Func("func", tint::Empty, ty.u32(),
+ Vector{
+ Return(Call(Source{Source::Location{12, 34}}, "pack4xU8Clamp", Call<vec4<u32>>())),
+ });
+
+ EXPECT_TRUE(r()->Resolve());
+}
+
+TEST_F(ResolverPacked4x8IntegerDotProductValidationTest, Pack4xU8Clamp_FeatureDisallowed) {
+ // fn func { return pack4xU8Clamp(vec4u()); }
+ Func("func", tint::Empty, ty.u32(),
+ Vector{
+ Return(Call(Source{Source::Location{12, 34}}, "pack4xU8Clamp", Call<vec4<u32>>())),
+ });
+
+ auto resolver = Resolver(this, {});
+ EXPECT_FALSE(resolver.Resolve());
+ EXPECT_EQ(resolver.error(),
+ "12:34 error: built-in function 'pack4xU8Clamp' requires the "
+ "packed_4x8_integer_dot_product language feature, which is not allowed in the "
+ "current environment");
+}
+
+TEST_F(ResolverPacked4x8IntegerDotProductValidationTest, Unpack4xI8) {
+ // fn func { return unpack4xI8(u32()); }
+ Require(wgsl::LanguageFeature::kPacked4X8IntegerDotProduct);
+
+ Func("func", tint::Empty, ty.vec4<i32>(),
+ Vector{
+ Return(Call(Source{Source::Location{12, 34}}, "unpack4xI8", Call<u32>())),
+ });
+
+ EXPECT_TRUE(r()->Resolve());
+}
+
+TEST_F(ResolverPacked4x8IntegerDotProductValidationTest, Unpack4xI8_FeatureDisallowed) {
+ // fn func { return unpack4xI8(u32()); }
+ Func("func", tint::Empty, ty.vec4<i32>(),
+ Vector{
+ Return(Call(Source{Source::Location{12, 34}}, "unpack4xI8", Call<u32>())),
+ });
+
+ auto resolver = Resolver(this, {});
+ EXPECT_FALSE(resolver.Resolve());
+ EXPECT_EQ(resolver.error(),
+ "12:34 error: built-in function 'unpack4xI8' requires the "
+ "packed_4x8_integer_dot_product language feature, which is not allowed in the "
+ "current environment");
+}
+
+TEST_F(ResolverPacked4x8IntegerDotProductValidationTest, Unpack4xU8) {
+ // fn func { return unpack4xU8(u32()); }
+ Require(wgsl::LanguageFeature::kPacked4X8IntegerDotProduct);
+
+ Func("func", tint::Empty, ty.vec4<u32>(),
+ Vector{
+ Return(Call(Source{Source::Location{12, 34}}, "unpack4xU8", Call<u32>())),
+ });
+
+ EXPECT_TRUE(r()->Resolve());
+}
+
+TEST_F(ResolverPacked4x8IntegerDotProductValidationTest, Unpack4xU8_FeatureDisallowed) {
+ // fn func { return unpack4xU8(u32()); }
+ Func("func", tint::Empty, ty.vec4<u32>(),
+ Vector{
+ Return(Call(Source{Source::Location{12, 34}}, "unpack4xU8", Call<u32>())),
+ });
+
+ auto resolver = Resolver(this, {});
+ EXPECT_FALSE(resolver.Resolve());
+ EXPECT_EQ(resolver.error(),
+ "12:34 error: built-in function 'unpack4xU8' requires the "
+ "packed_4x8_integer_dot_product language feature, which is not allowed in the "
+ "current environment");
+}
+
TEST_F(ResolverBuiltinValidationTest, WorkgroupUniformLoad_WrongAddressSpace) {
// @group(0) @binding(0) var<storage, read_write> v : i32;
// fn foo() {
diff --git a/src/tint/lang/wgsl/wgsl.def b/src/tint/lang/wgsl/wgsl.def
index cb5a480..8b40557 100644
--- a/src/tint/lang/wgsl/wgsl.def
+++ b/src/tint/lang/wgsl/wgsl.def
@@ -519,6 +519,8 @@
@must_use @const fn pack4x8unorm(vec4<f32>) -> u32
@must_use @const fn pack4xI8(vec4<i32>) -> u32
@must_use @const fn pack4xU8(vec4<u32>) -> u32
+@must_use @const fn pack4xI8Clamp(vec4<i32>) -> u32
+@must_use @const fn pack4xU8Clamp(vec4<u32>) -> u32
@must_use @const fn pow<T: fa_f32_f16>(T, T) -> T
@must_use @const fn pow<N: num, T: fa_f32_f16>(vec<N, T>, vec<N, T>) -> vec<N, T>
@must_use @const fn quantizeToF16(f32) -> f32
@@ -561,6 +563,8 @@
@must_use @const fn unpack2x16unorm(u32) -> vec2<f32>
@must_use @const fn unpack4x8snorm(u32) -> vec4<f32>
@must_use @const fn unpack4x8unorm(u32) -> vec4<f32>
+@must_use @const fn unpack4xI8(u32) -> vec4<i32>
+@must_use @const fn unpack4xU8(u32) -> vec4<u32>
@stage("compute") fn workgroupBarrier()
@must_use @stage("compute") fn workgroupUniformLoad<T>(ptr<workgroup, T, read_write>) -> T
diff --git a/test/tint/builtins/gen/literal/pack4xI8Clamp/e42b2a.wgsl b/test/tint/builtins/gen/literal/pack4xI8Clamp/e42b2a.wgsl
new file mode 100644
index 0000000..ea597c8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pack4xI8Clamp/e42b2a.wgsl
@@ -0,0 +1,59 @@
+// Copyright 2023 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// fn pack4xI8Clamp(vec4<i32>) -> u32
+fn pack4xI8Clamp_e42b2a() {
+ var res: u32 = pack4xI8Clamp(vec4<i32>(1i));
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ pack4xI8Clamp_e42b2a();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ pack4xI8Clamp_e42b2a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ pack4xI8Clamp_e42b2a();
+}
diff --git a/test/tint/builtins/gen/literal/pack4xI8Clamp/e42b2a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/pack4xI8Clamp/e42b2a.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..a99005b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pack4xI8Clamp/e42b2a.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+RWByteAddressBuffer prevent_dce : register(u0, space2);
+
+void pack4xI8Clamp_e42b2a() {
+ uint res = 16843009u;
+ prevent_dce.Store(0u, asuint(res));
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+float4 vertex_main_inner() {
+ pack4xI8Clamp_e42b2a();
+ return (0.0f).xxxx;
+}
+
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
+ pack4xI8Clamp_e42b2a();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ pack4xI8Clamp_e42b2a();
+ return;
+}
diff --git a/test/tint/builtins/gen/literal/pack4xI8Clamp/e42b2a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/pack4xI8Clamp/e42b2a.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..a99005b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pack4xI8Clamp/e42b2a.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+RWByteAddressBuffer prevent_dce : register(u0, space2);
+
+void pack4xI8Clamp_e42b2a() {
+ uint res = 16843009u;
+ prevent_dce.Store(0u, asuint(res));
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+float4 vertex_main_inner() {
+ pack4xI8Clamp_e42b2a();
+ return (0.0f).xxxx;
+}
+
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
+ pack4xI8Clamp_e42b2a();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ pack4xI8Clamp_e42b2a();
+ return;
+}
diff --git a/test/tint/builtins/gen/literal/pack4xI8Clamp/e42b2a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/pack4xI8Clamp/e42b2a.wgsl.expected.glsl
new file mode 100644
index 0000000..b764724
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pack4xI8Clamp/e42b2a.wgsl.expected.glsl
@@ -0,0 +1,64 @@
+#version 310 es
+
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void pack4xI8Clamp_e42b2a() {
+ uint res = 16843009u;
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ pack4xI8Clamp_e42b2a();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void pack4xI8Clamp_e42b2a() {
+ uint res = 16843009u;
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ pack4xI8Clamp_e42b2a();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void pack4xI8Clamp_e42b2a() {
+ uint res = 16843009u;
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ pack4xI8Clamp_e42b2a();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/literal/pack4xI8Clamp/e42b2a.wgsl.expected.msl b/test/tint/builtins/gen/literal/pack4xI8Clamp/e42b2a.wgsl.expected.msl
new file mode 100644
index 0000000..e2d64b5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pack4xI8Clamp/e42b2a.wgsl.expected.msl
@@ -0,0 +1,34 @@
+#include <metal_stdlib>
+
+using namespace metal;
+void pack4xI8Clamp_e42b2a(device uint* const tint_symbol_1) {
+ uint res = 16843009u;
+ *(tint_symbol_1) = res;
+}
+
+struct tint_symbol {
+ float4 value [[position]];
+};
+
+float4 vertex_main_inner(device uint* const tint_symbol_2) {
+ pack4xI8Clamp_e42b2a(tint_symbol_2);
+ return float4(0.0f);
+}
+
+vertex tint_symbol vertex_main(device uint* tint_symbol_3 [[buffer(0)]]) {
+ float4 const inner_result = vertex_main_inner(tint_symbol_3);
+ tint_symbol wrapper_result = {};
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+fragment void fragment_main(device uint* tint_symbol_4 [[buffer(0)]]) {
+ pack4xI8Clamp_e42b2a(tint_symbol_4);
+ return;
+}
+
+kernel void compute_main(device uint* tint_symbol_5 [[buffer(0)]]) {
+ pack4xI8Clamp_e42b2a(tint_symbol_5);
+ return;
+}
+
diff --git a/test/tint/builtins/gen/literal/pack4xI8Clamp/e42b2a.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/pack4xI8Clamp/e42b2a.wgsl.expected.spvasm
new file mode 100644
index 0000000..d935ad2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pack4xI8Clamp/e42b2a.wgsl.expected.spvasm
@@ -0,0 +1,81 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 39
+; Schema: 0
+ OpCapability Shader
+ OpMemoryModel Logical GLSL450
+ OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+ OpEntryPoint Fragment %fragment_main "fragment_main"
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %fragment_main OriginUpperLeft
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %value "value"
+ OpName %vertex_point_size "vertex_point_size"
+ OpName %prevent_dce_block "prevent_dce_block"
+ OpMemberName %prevent_dce_block 0 "inner"
+ OpName %prevent_dce "prevent_dce"
+ OpName %pack4xI8Clamp_e42b2a "pack4xI8Clamp_e42b2a"
+ OpName %res "res"
+ OpName %vertex_main_inner "vertex_main_inner"
+ OpName %vertex_main "vertex_main"
+ OpName %fragment_main "fragment_main"
+ OpName %compute_main "compute_main"
+ OpDecorate %value BuiltIn Position
+ OpDecorate %vertex_point_size BuiltIn PointSize
+ OpDecorate %prevent_dce_block Block
+ OpMemberDecorate %prevent_dce_block 0 Offset 0
+ OpDecorate %prevent_dce DescriptorSet 2
+ OpDecorate %prevent_dce Binding 0
+ %float = OpTypeFloat 32
+ %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %5 = OpConstantNull %v4float
+ %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+ %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+ %uint = OpTypeInt 32 0
+%prevent_dce_block = OpTypeStruct %uint
+%_ptr_StorageBuffer_prevent_dce_block = OpTypePointer StorageBuffer %prevent_dce_block
+%prevent_dce = OpVariable %_ptr_StorageBuffer_prevent_dce_block StorageBuffer
+ %void = OpTypeVoid
+ %13 = OpTypeFunction %void
+%uint_16843009 = OpConstant %uint 16843009
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %20 = OpConstantNull %uint
+ %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %25 = OpTypeFunction %v4float
+ %float_1 = OpConstant %float 1
+%pack4xI8Clamp_e42b2a = OpFunction %void None %13
+ %16 = OpLabel
+ %res = OpVariable %_ptr_Function_uint Function %20
+ OpStore %res %uint_16843009
+ %23 = OpAccessChain %_ptr_StorageBuffer_uint %prevent_dce %uint_0
+ %24 = OpLoad %uint %res
+ OpStore %23 %24
+ OpReturn
+ OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %25
+ %27 = OpLabel
+ %28 = OpFunctionCall %void %pack4xI8Clamp_e42b2a
+ OpReturnValue %5
+ OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+ %30 = OpLabel
+ %31 = OpFunctionCall %v4float %vertex_main_inner
+ OpStore %value %31
+ OpStore %vertex_point_size %float_1
+ OpReturn
+ OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+ %34 = OpLabel
+ %35 = OpFunctionCall %void %pack4xI8Clamp_e42b2a
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %13
+ %37 = OpLabel
+ %38 = OpFunctionCall %void %pack4xI8Clamp_e42b2a
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/pack4xI8Clamp/e42b2a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/pack4xI8Clamp/e42b2a.wgsl.expected.wgsl
new file mode 100644
index 0000000..071287d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pack4xI8Clamp/e42b2a.wgsl.expected.wgsl
@@ -0,0 +1,22 @@
+fn pack4xI8Clamp_e42b2a() {
+ var res : u32 = pack4xI8Clamp(vec4<i32>(1i));
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ pack4xI8Clamp_e42b2a();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ pack4xI8Clamp_e42b2a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ pack4xI8Clamp_e42b2a();
+}
diff --git a/test/tint/builtins/gen/literal/pack4xU8Clamp/6b8c1b.wgsl b/test/tint/builtins/gen/literal/pack4xU8Clamp/6b8c1b.wgsl
new file mode 100644
index 0000000..72c41dd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pack4xU8Clamp/6b8c1b.wgsl
@@ -0,0 +1,59 @@
+// Copyright 2023 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// fn pack4xU8Clamp(vec4<u32>) -> u32
+fn pack4xU8Clamp_6b8c1b() {
+ var res: u32 = pack4xU8Clamp(vec4<u32>(1u));
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ pack4xU8Clamp_6b8c1b();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ pack4xU8Clamp_6b8c1b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ pack4xU8Clamp_6b8c1b();
+}
diff --git a/test/tint/builtins/gen/literal/pack4xU8Clamp/6b8c1b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/pack4xU8Clamp/6b8c1b.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..1a9af2a5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pack4xU8Clamp/6b8c1b.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+RWByteAddressBuffer prevent_dce : register(u0, space2);
+
+void pack4xU8Clamp_6b8c1b() {
+ uint res = 16843009u;
+ prevent_dce.Store(0u, asuint(res));
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+float4 vertex_main_inner() {
+ pack4xU8Clamp_6b8c1b();
+ return (0.0f).xxxx;
+}
+
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
+ pack4xU8Clamp_6b8c1b();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ pack4xU8Clamp_6b8c1b();
+ return;
+}
diff --git a/test/tint/builtins/gen/literal/pack4xU8Clamp/6b8c1b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/pack4xU8Clamp/6b8c1b.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..1a9af2a5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pack4xU8Clamp/6b8c1b.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+RWByteAddressBuffer prevent_dce : register(u0, space2);
+
+void pack4xU8Clamp_6b8c1b() {
+ uint res = 16843009u;
+ prevent_dce.Store(0u, asuint(res));
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+float4 vertex_main_inner() {
+ pack4xU8Clamp_6b8c1b();
+ return (0.0f).xxxx;
+}
+
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
+ pack4xU8Clamp_6b8c1b();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ pack4xU8Clamp_6b8c1b();
+ return;
+}
diff --git a/test/tint/builtins/gen/literal/pack4xU8Clamp/6b8c1b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/pack4xU8Clamp/6b8c1b.wgsl.expected.glsl
new file mode 100644
index 0000000..8846c30
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pack4xU8Clamp/6b8c1b.wgsl.expected.glsl
@@ -0,0 +1,64 @@
+#version 310 es
+
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void pack4xU8Clamp_6b8c1b() {
+ uint res = 16843009u;
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ pack4xU8Clamp_6b8c1b();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void pack4xU8Clamp_6b8c1b() {
+ uint res = 16843009u;
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ pack4xU8Clamp_6b8c1b();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void pack4xU8Clamp_6b8c1b() {
+ uint res = 16843009u;
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ pack4xU8Clamp_6b8c1b();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/literal/pack4xU8Clamp/6b8c1b.wgsl.expected.msl b/test/tint/builtins/gen/literal/pack4xU8Clamp/6b8c1b.wgsl.expected.msl
new file mode 100644
index 0000000..d5d6d96
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pack4xU8Clamp/6b8c1b.wgsl.expected.msl
@@ -0,0 +1,34 @@
+#include <metal_stdlib>
+
+using namespace metal;
+void pack4xU8Clamp_6b8c1b(device uint* const tint_symbol_1) {
+ uint res = 16843009u;
+ *(tint_symbol_1) = res;
+}
+
+struct tint_symbol {
+ float4 value [[position]];
+};
+
+float4 vertex_main_inner(device uint* const tint_symbol_2) {
+ pack4xU8Clamp_6b8c1b(tint_symbol_2);
+ return float4(0.0f);
+}
+
+vertex tint_symbol vertex_main(device uint* tint_symbol_3 [[buffer(0)]]) {
+ float4 const inner_result = vertex_main_inner(tint_symbol_3);
+ tint_symbol wrapper_result = {};
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+fragment void fragment_main(device uint* tint_symbol_4 [[buffer(0)]]) {
+ pack4xU8Clamp_6b8c1b(tint_symbol_4);
+ return;
+}
+
+kernel void compute_main(device uint* tint_symbol_5 [[buffer(0)]]) {
+ pack4xU8Clamp_6b8c1b(tint_symbol_5);
+ return;
+}
+
diff --git a/test/tint/builtins/gen/literal/pack4xU8Clamp/6b8c1b.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/pack4xU8Clamp/6b8c1b.wgsl.expected.spvasm
new file mode 100644
index 0000000..b85c06d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pack4xU8Clamp/6b8c1b.wgsl.expected.spvasm
@@ -0,0 +1,81 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 39
+; Schema: 0
+ OpCapability Shader
+ OpMemoryModel Logical GLSL450
+ OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+ OpEntryPoint Fragment %fragment_main "fragment_main"
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %fragment_main OriginUpperLeft
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %value "value"
+ OpName %vertex_point_size "vertex_point_size"
+ OpName %prevent_dce_block "prevent_dce_block"
+ OpMemberName %prevent_dce_block 0 "inner"
+ OpName %prevent_dce "prevent_dce"
+ OpName %pack4xU8Clamp_6b8c1b "pack4xU8Clamp_6b8c1b"
+ OpName %res "res"
+ OpName %vertex_main_inner "vertex_main_inner"
+ OpName %vertex_main "vertex_main"
+ OpName %fragment_main "fragment_main"
+ OpName %compute_main "compute_main"
+ OpDecorate %value BuiltIn Position
+ OpDecorate %vertex_point_size BuiltIn PointSize
+ OpDecorate %prevent_dce_block Block
+ OpMemberDecorate %prevent_dce_block 0 Offset 0
+ OpDecorate %prevent_dce DescriptorSet 2
+ OpDecorate %prevent_dce Binding 0
+ %float = OpTypeFloat 32
+ %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %5 = OpConstantNull %v4float
+ %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+ %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+ %uint = OpTypeInt 32 0
+%prevent_dce_block = OpTypeStruct %uint
+%_ptr_StorageBuffer_prevent_dce_block = OpTypePointer StorageBuffer %prevent_dce_block
+%prevent_dce = OpVariable %_ptr_StorageBuffer_prevent_dce_block StorageBuffer
+ %void = OpTypeVoid
+ %13 = OpTypeFunction %void
+%uint_16843009 = OpConstant %uint 16843009
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %20 = OpConstantNull %uint
+ %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %25 = OpTypeFunction %v4float
+ %float_1 = OpConstant %float 1
+%pack4xU8Clamp_6b8c1b = OpFunction %void None %13
+ %16 = OpLabel
+ %res = OpVariable %_ptr_Function_uint Function %20
+ OpStore %res %uint_16843009
+ %23 = OpAccessChain %_ptr_StorageBuffer_uint %prevent_dce %uint_0
+ %24 = OpLoad %uint %res
+ OpStore %23 %24
+ OpReturn
+ OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %25
+ %27 = OpLabel
+ %28 = OpFunctionCall %void %pack4xU8Clamp_6b8c1b
+ OpReturnValue %5
+ OpFunctionEnd
+%vertex_main = OpFunction %void None %13
+ %30 = OpLabel
+ %31 = OpFunctionCall %v4float %vertex_main_inner
+ OpStore %value %31
+ OpStore %vertex_point_size %float_1
+ OpReturn
+ OpFunctionEnd
+%fragment_main = OpFunction %void None %13
+ %34 = OpLabel
+ %35 = OpFunctionCall %void %pack4xU8Clamp_6b8c1b
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %13
+ %37 = OpLabel
+ %38 = OpFunctionCall %void %pack4xU8Clamp_6b8c1b
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/pack4xU8Clamp/6b8c1b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/pack4xU8Clamp/6b8c1b.wgsl.expected.wgsl
new file mode 100644
index 0000000..b57dd70
--- /dev/null
+++ b/test/tint/builtins/gen/literal/pack4xU8Clamp/6b8c1b.wgsl.expected.wgsl
@@ -0,0 +1,22 @@
+fn pack4xU8Clamp_6b8c1b() {
+ var res : u32 = pack4xU8Clamp(vec4<u32>(1u));
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ pack4xU8Clamp_6b8c1b();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ pack4xU8Clamp_6b8c1b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ pack4xU8Clamp_6b8c1b();
+}
diff --git a/test/tint/builtins/gen/literal/unpack4xI8/830900.wgsl b/test/tint/builtins/gen/literal/unpack4xI8/830900.wgsl
new file mode 100644
index 0000000..dee72d7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/unpack4xI8/830900.wgsl
@@ -0,0 +1,59 @@
+// Copyright 2023 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// fn unpack4xI8(u32) -> vec4<i32>
+fn unpack4xI8_830900() {
+ var res: vec4<i32> = unpack4xI8(1u);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : vec4<i32>;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ unpack4xI8_830900();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ unpack4xI8_830900();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ unpack4xI8_830900();
+}
diff --git a/test/tint/builtins/gen/literal/unpack4xI8/830900.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/unpack4xI8/830900.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..a7d132d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/unpack4xI8/830900.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+RWByteAddressBuffer prevent_dce : register(u0, space2);
+
+void unpack4xI8_830900() {
+ int4 res = int4(1, 0, 0, 0);
+ prevent_dce.Store4(0u, asuint(res));
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+float4 vertex_main_inner() {
+ unpack4xI8_830900();
+ return (0.0f).xxxx;
+}
+
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
+ unpack4xI8_830900();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ unpack4xI8_830900();
+ return;
+}
diff --git a/test/tint/builtins/gen/literal/unpack4xI8/830900.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/unpack4xI8/830900.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..a7d132d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/unpack4xI8/830900.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+RWByteAddressBuffer prevent_dce : register(u0, space2);
+
+void unpack4xI8_830900() {
+ int4 res = int4(1, 0, 0, 0);
+ prevent_dce.Store4(0u, asuint(res));
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+float4 vertex_main_inner() {
+ unpack4xI8_830900();
+ return (0.0f).xxxx;
+}
+
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
+ unpack4xI8_830900();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ unpack4xI8_830900();
+ return;
+}
diff --git a/test/tint/builtins/gen/literal/unpack4xI8/830900.wgsl.expected.glsl b/test/tint/builtins/gen/literal/unpack4xI8/830900.wgsl.expected.glsl
new file mode 100644
index 0000000..5526b32
--- /dev/null
+++ b/test/tint/builtins/gen/literal/unpack4xI8/830900.wgsl.expected.glsl
@@ -0,0 +1,64 @@
+#version 310 es
+
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ ivec4 inner;
+} prevent_dce;
+
+void unpack4xI8_830900() {
+ ivec4 res = ivec4(1, 0, 0, 0);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ unpack4xI8_830900();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ ivec4 inner;
+} prevent_dce;
+
+void unpack4xI8_830900() {
+ ivec4 res = ivec4(1, 0, 0, 0);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ unpack4xI8_830900();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ ivec4 inner;
+} prevent_dce;
+
+void unpack4xI8_830900() {
+ ivec4 res = ivec4(1, 0, 0, 0);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ unpack4xI8_830900();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/literal/unpack4xI8/830900.wgsl.expected.msl b/test/tint/builtins/gen/literal/unpack4xI8/830900.wgsl.expected.msl
new file mode 100644
index 0000000..8695a29
--- /dev/null
+++ b/test/tint/builtins/gen/literal/unpack4xI8/830900.wgsl.expected.msl
@@ -0,0 +1,34 @@
+#include <metal_stdlib>
+
+using namespace metal;
+void unpack4xI8_830900(device int4* const tint_symbol_1) {
+ int4 res = int4(1, 0, 0, 0);
+ *(tint_symbol_1) = res;
+}
+
+struct tint_symbol {
+ float4 value [[position]];
+};
+
+float4 vertex_main_inner(device int4* const tint_symbol_2) {
+ unpack4xI8_830900(tint_symbol_2);
+ return float4(0.0f);
+}
+
+vertex tint_symbol vertex_main(device int4* tint_symbol_3 [[buffer(0)]]) {
+ float4 const inner_result = vertex_main_inner(tint_symbol_3);
+ tint_symbol wrapper_result = {};
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+fragment void fragment_main(device int4* tint_symbol_4 [[buffer(0)]]) {
+ unpack4xI8_830900(tint_symbol_4);
+ return;
+}
+
+kernel void compute_main(device int4* tint_symbol_5 [[buffer(0)]]) {
+ unpack4xI8_830900(tint_symbol_5);
+ return;
+}
+
diff --git a/test/tint/builtins/gen/literal/unpack4xI8/830900.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/unpack4xI8/830900.wgsl.expected.spvasm
new file mode 100644
index 0000000..ee6d5bc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/unpack4xI8/830900.wgsl.expected.spvasm
@@ -0,0 +1,85 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 43
+; Schema: 0
+ OpCapability Shader
+ OpMemoryModel Logical GLSL450
+ OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+ OpEntryPoint Fragment %fragment_main "fragment_main"
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %fragment_main OriginUpperLeft
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %value "value"
+ OpName %vertex_point_size "vertex_point_size"
+ OpName %prevent_dce_block "prevent_dce_block"
+ OpMemberName %prevent_dce_block 0 "inner"
+ OpName %prevent_dce "prevent_dce"
+ OpName %unpack4xI8_830900 "unpack4xI8_830900"
+ OpName %res "res"
+ OpName %vertex_main_inner "vertex_main_inner"
+ OpName %vertex_main "vertex_main"
+ OpName %fragment_main "fragment_main"
+ OpName %compute_main "compute_main"
+ OpDecorate %value BuiltIn Position
+ OpDecorate %vertex_point_size BuiltIn PointSize
+ OpDecorate %prevent_dce_block Block
+ OpMemberDecorate %prevent_dce_block 0 Offset 0
+ OpDecorate %prevent_dce DescriptorSet 2
+ OpDecorate %prevent_dce Binding 0
+ %float = OpTypeFloat 32
+ %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %5 = OpConstantNull %v4float
+ %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+ %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+ %int = OpTypeInt 32 1
+ %v4int = OpTypeVector %int 4
+%prevent_dce_block = OpTypeStruct %v4int
+%_ptr_StorageBuffer_prevent_dce_block = OpTypePointer StorageBuffer %prevent_dce_block
+%prevent_dce = OpVariable %_ptr_StorageBuffer_prevent_dce_block StorageBuffer
+ %void = OpTypeVoid
+ %14 = OpTypeFunction %void
+ %int_1 = OpConstant %int 1
+ %19 = OpConstantNull %int
+ %20 = OpConstantComposite %v4int %int_1 %19 %19 %19
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+ %23 = OpConstantNull %v4int
+ %uint = OpTypeInt 32 0
+ %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_v4int = OpTypePointer StorageBuffer %v4int
+ %29 = OpTypeFunction %v4float
+ %float_1 = OpConstant %float 1
+%unpack4xI8_830900 = OpFunction %void None %14
+ %17 = OpLabel
+ %res = OpVariable %_ptr_Function_v4int Function %23
+ OpStore %res %20
+ %27 = OpAccessChain %_ptr_StorageBuffer_v4int %prevent_dce %uint_0
+ %28 = OpLoad %v4int %res
+ OpStore %27 %28
+ OpReturn
+ OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %29
+ %31 = OpLabel
+ %32 = OpFunctionCall %void %unpack4xI8_830900
+ OpReturnValue %5
+ OpFunctionEnd
+%vertex_main = OpFunction %void None %14
+ %34 = OpLabel
+ %35 = OpFunctionCall %v4float %vertex_main_inner
+ OpStore %value %35
+ OpStore %vertex_point_size %float_1
+ OpReturn
+ OpFunctionEnd
+%fragment_main = OpFunction %void None %14
+ %38 = OpLabel
+ %39 = OpFunctionCall %void %unpack4xI8_830900
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %14
+ %41 = OpLabel
+ %42 = OpFunctionCall %void %unpack4xI8_830900
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/unpack4xI8/830900.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/unpack4xI8/830900.wgsl.expected.wgsl
new file mode 100644
index 0000000..4b89f80
--- /dev/null
+++ b/test/tint/builtins/gen/literal/unpack4xI8/830900.wgsl.expected.wgsl
@@ -0,0 +1,22 @@
+fn unpack4xI8_830900() {
+ var res : vec4<i32> = unpack4xI8(1u);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : vec4<i32>;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ unpack4xI8_830900();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ unpack4xI8_830900();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ unpack4xI8_830900();
+}
diff --git a/test/tint/builtins/gen/literal/unpack4xU8/a5ea55.wgsl b/test/tint/builtins/gen/literal/unpack4xU8/a5ea55.wgsl
new file mode 100644
index 0000000..57a7149
--- /dev/null
+++ b/test/tint/builtins/gen/literal/unpack4xU8/a5ea55.wgsl
@@ -0,0 +1,59 @@
+// Copyright 2023 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// fn unpack4xU8(u32) -> vec4<u32>
+fn unpack4xU8_a5ea55() {
+ var res: vec4<u32> = unpack4xU8(1u);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : vec4<u32>;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ unpack4xU8_a5ea55();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ unpack4xU8_a5ea55();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ unpack4xU8_a5ea55();
+}
diff --git a/test/tint/builtins/gen/literal/unpack4xU8/a5ea55.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/unpack4xU8/a5ea55.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..e318e0f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/unpack4xU8/a5ea55.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+RWByteAddressBuffer prevent_dce : register(u0, space2);
+
+void unpack4xU8_a5ea55() {
+ uint4 res = uint4(1u, 0u, 0u, 0u);
+ prevent_dce.Store4(0u, asuint(res));
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+float4 vertex_main_inner() {
+ unpack4xU8_a5ea55();
+ return (0.0f).xxxx;
+}
+
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
+ unpack4xU8_a5ea55();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ unpack4xU8_a5ea55();
+ return;
+}
diff --git a/test/tint/builtins/gen/literal/unpack4xU8/a5ea55.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/unpack4xU8/a5ea55.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..e318e0f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/unpack4xU8/a5ea55.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+RWByteAddressBuffer prevent_dce : register(u0, space2);
+
+void unpack4xU8_a5ea55() {
+ uint4 res = uint4(1u, 0u, 0u, 0u);
+ prevent_dce.Store4(0u, asuint(res));
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+float4 vertex_main_inner() {
+ unpack4xU8_a5ea55();
+ return (0.0f).xxxx;
+}
+
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
+ unpack4xU8_a5ea55();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ unpack4xU8_a5ea55();
+ return;
+}
diff --git a/test/tint/builtins/gen/literal/unpack4xU8/a5ea55.wgsl.expected.glsl b/test/tint/builtins/gen/literal/unpack4xU8/a5ea55.wgsl.expected.glsl
new file mode 100644
index 0000000..66939c2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/unpack4xU8/a5ea55.wgsl.expected.glsl
@@ -0,0 +1,64 @@
+#version 310 es
+
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uvec4 inner;
+} prevent_dce;
+
+void unpack4xU8_a5ea55() {
+ uvec4 res = uvec4(1u, 0u, 0u, 0u);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ unpack4xU8_a5ea55();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uvec4 inner;
+} prevent_dce;
+
+void unpack4xU8_a5ea55() {
+ uvec4 res = uvec4(1u, 0u, 0u, 0u);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ unpack4xU8_a5ea55();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uvec4 inner;
+} prevent_dce;
+
+void unpack4xU8_a5ea55() {
+ uvec4 res = uvec4(1u, 0u, 0u, 0u);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ unpack4xU8_a5ea55();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/literal/unpack4xU8/a5ea55.wgsl.expected.msl b/test/tint/builtins/gen/literal/unpack4xU8/a5ea55.wgsl.expected.msl
new file mode 100644
index 0000000..98eeb68
--- /dev/null
+++ b/test/tint/builtins/gen/literal/unpack4xU8/a5ea55.wgsl.expected.msl
@@ -0,0 +1,34 @@
+#include <metal_stdlib>
+
+using namespace metal;
+void unpack4xU8_a5ea55(device uint4* const tint_symbol_1) {
+ uint4 res = uint4(1u, 0u, 0u, 0u);
+ *(tint_symbol_1) = res;
+}
+
+struct tint_symbol {
+ float4 value [[position]];
+};
+
+float4 vertex_main_inner(device uint4* const tint_symbol_2) {
+ unpack4xU8_a5ea55(tint_symbol_2);
+ return float4(0.0f);
+}
+
+vertex tint_symbol vertex_main(device uint4* tint_symbol_3 [[buffer(0)]]) {
+ float4 const inner_result = vertex_main_inner(tint_symbol_3);
+ tint_symbol wrapper_result = {};
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+fragment void fragment_main(device uint4* tint_symbol_4 [[buffer(0)]]) {
+ unpack4xU8_a5ea55(tint_symbol_4);
+ return;
+}
+
+kernel void compute_main(device uint4* tint_symbol_5 [[buffer(0)]]) {
+ unpack4xU8_a5ea55(tint_symbol_5);
+ return;
+}
+
diff --git a/test/tint/builtins/gen/literal/unpack4xU8/a5ea55.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/unpack4xU8/a5ea55.wgsl.expected.spvasm
new file mode 100644
index 0000000..c045fa2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/unpack4xU8/a5ea55.wgsl.expected.spvasm
@@ -0,0 +1,84 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 42
+; Schema: 0
+ OpCapability Shader
+ OpMemoryModel Logical GLSL450
+ OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+ OpEntryPoint Fragment %fragment_main "fragment_main"
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %fragment_main OriginUpperLeft
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %value "value"
+ OpName %vertex_point_size "vertex_point_size"
+ OpName %prevent_dce_block "prevent_dce_block"
+ OpMemberName %prevent_dce_block 0 "inner"
+ OpName %prevent_dce "prevent_dce"
+ OpName %unpack4xU8_a5ea55 "unpack4xU8_a5ea55"
+ OpName %res "res"
+ OpName %vertex_main_inner "vertex_main_inner"
+ OpName %vertex_main "vertex_main"
+ OpName %fragment_main "fragment_main"
+ OpName %compute_main "compute_main"
+ OpDecorate %value BuiltIn Position
+ OpDecorate %vertex_point_size BuiltIn PointSize
+ OpDecorate %prevent_dce_block Block
+ OpMemberDecorate %prevent_dce_block 0 Offset 0
+ OpDecorate %prevent_dce DescriptorSet 2
+ OpDecorate %prevent_dce Binding 0
+ %float = OpTypeFloat 32
+ %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %5 = OpConstantNull %v4float
+ %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+ %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+ %uint = OpTypeInt 32 0
+ %v4uint = OpTypeVector %uint 4
+%prevent_dce_block = OpTypeStruct %v4uint
+%_ptr_StorageBuffer_prevent_dce_block = OpTypePointer StorageBuffer %prevent_dce_block
+%prevent_dce = OpVariable %_ptr_StorageBuffer_prevent_dce_block StorageBuffer
+ %void = OpTypeVoid
+ %14 = OpTypeFunction %void
+ %uint_1 = OpConstant %uint 1
+ %19 = OpConstantNull %uint
+ %20 = OpConstantComposite %v4uint %uint_1 %19 %19 %19
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+ %23 = OpConstantNull %v4uint
+ %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_v4uint = OpTypePointer StorageBuffer %v4uint
+ %28 = OpTypeFunction %v4float
+ %float_1 = OpConstant %float 1
+%unpack4xU8_a5ea55 = OpFunction %void None %14
+ %17 = OpLabel
+ %res = OpVariable %_ptr_Function_v4uint Function %23
+ OpStore %res %20
+ %26 = OpAccessChain %_ptr_StorageBuffer_v4uint %prevent_dce %uint_0
+ %27 = OpLoad %v4uint %res
+ OpStore %26 %27
+ OpReturn
+ OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %28
+ %30 = OpLabel
+ %31 = OpFunctionCall %void %unpack4xU8_a5ea55
+ OpReturnValue %5
+ OpFunctionEnd
+%vertex_main = OpFunction %void None %14
+ %33 = OpLabel
+ %34 = OpFunctionCall %v4float %vertex_main_inner
+ OpStore %value %34
+ OpStore %vertex_point_size %float_1
+ OpReturn
+ OpFunctionEnd
+%fragment_main = OpFunction %void None %14
+ %37 = OpLabel
+ %38 = OpFunctionCall %void %unpack4xU8_a5ea55
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %14
+ %40 = OpLabel
+ %41 = OpFunctionCall %void %unpack4xU8_a5ea55
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/unpack4xU8/a5ea55.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/unpack4xU8/a5ea55.wgsl.expected.wgsl
new file mode 100644
index 0000000..27e2c58
--- /dev/null
+++ b/test/tint/builtins/gen/literal/unpack4xU8/a5ea55.wgsl.expected.wgsl
@@ -0,0 +1,22 @@
+fn unpack4xU8_a5ea55() {
+ var res : vec4<u32> = unpack4xU8(1u);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : vec4<u32>;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ unpack4xU8_a5ea55();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ unpack4xU8_a5ea55();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ unpack4xU8_a5ea55();
+}
diff --git a/test/tint/builtins/gen/var/pack4xI8/bfce01.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/pack4xI8/bfce01.wgsl.expected.dxc.hlsl
index cff1b15..2602401 100644
--- a/test/tint/builtins/gen/var/pack4xI8/bfce01.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/pack4xI8/bfce01.wgsl.expected.dxc.hlsl
@@ -1,6 +1,7 @@
uint tint_pack_4xi8(int4 a) {
- const uint4 a_i8 = uint4(((a & (255).xxxx) << uint4(0u, 8u, 16u, 24u)));
- return dot(a_i8, (1u).xxxx);
+ const uint4 a_u32 = asuint(a);
+ const uint4 a_u8 = ((a_u32 & (255u).xxxx) << uint4(0u, 8u, 16u, 24u));
+ return dot(a_u8, (1u).xxxx);
}
RWByteAddressBuffer prevent_dce : register(u0, space2);
diff --git a/test/tint/builtins/gen/var/pack4xI8/bfce01.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/pack4xI8/bfce01.wgsl.expected.fxc.hlsl
index cff1b15..2602401 100644
--- a/test/tint/builtins/gen/var/pack4xI8/bfce01.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/pack4xI8/bfce01.wgsl.expected.fxc.hlsl
@@ -1,6 +1,7 @@
uint tint_pack_4xi8(int4 a) {
- const uint4 a_i8 = uint4(((a & (255).xxxx) << uint4(0u, 8u, 16u, 24u)));
- return dot(a_i8, (1u).xxxx);
+ const uint4 a_u32 = asuint(a);
+ const uint4 a_u8 = ((a_u32 & (255u).xxxx) << uint4(0u, 8u, 16u, 24u));
+ return dot(a_u8, (1u).xxxx);
}
RWByteAddressBuffer prevent_dce : register(u0, space2);
diff --git a/test/tint/builtins/gen/var/pack4xI8/bfce01.wgsl.expected.glsl b/test/tint/builtins/gen/var/pack4xI8/bfce01.wgsl.expected.glsl
index ef6ce2f..1fe5607 100644
--- a/test/tint/builtins/gen/var/pack4xI8/bfce01.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/pack4xI8/bfce01.wgsl.expected.glsl
@@ -5,8 +5,9 @@
}
uint tint_pack_4xi8(ivec4 a) {
- uvec4 a_i8 = uvec4(((a & ivec4(255)) << uvec4(0u, 8u, 16u, 24u)));
- return tint_int_dot(a_i8, uvec4(1u));
+ uvec4 a_u32 = uvec4(a);
+ uvec4 a_u8 = ((a_u32 & uvec4(255u)) << uvec4(0u, 8u, 16u, 24u));
+ return tint_int_dot(a_u8, uvec4(1u));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
@@ -40,8 +41,9 @@
}
uint tint_pack_4xi8(ivec4 a) {
- uvec4 a_i8 = uvec4(((a & ivec4(255)) << uvec4(0u, 8u, 16u, 24u)));
- return tint_int_dot(a_i8, uvec4(1u));
+ uvec4 a_u32 = uvec4(a);
+ uvec4 a_u8 = ((a_u32 & uvec4(255u)) << uvec4(0u, 8u, 16u, 24u));
+ return tint_int_dot(a_u8, uvec4(1u));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
@@ -69,8 +71,9 @@
}
uint tint_pack_4xi8(ivec4 a) {
- uvec4 a_i8 = uvec4(((a & ivec4(255)) << uvec4(0u, 8u, 16u, 24u)));
- return tint_int_dot(a_i8, uvec4(1u));
+ uvec4 a_u32 = uvec4(a);
+ uvec4 a_u8 = ((a_u32 & uvec4(255u)) << uvec4(0u, 8u, 16u, 24u));
+ return tint_int_dot(a_u8, uvec4(1u));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
diff --git a/test/tint/builtins/gen/var/pack4xI8/bfce01.wgsl.expected.msl b/test/tint/builtins/gen/var/pack4xI8/bfce01.wgsl.expected.msl
index f20c827..212a8fb 100644
--- a/test/tint/builtins/gen/var/pack4xI8/bfce01.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/pack4xI8/bfce01.wgsl.expected.msl
@@ -7,8 +7,9 @@
return a[0]*b[0] + a[1]*b[1] + a[2]*b[2] + a[3]*b[3];
}
uint tint_pack_4xi8(int4 a) {
- uint4 const a_i8 = uint4(as_type<int4>((as_type<uint4>((a & int4(255))) << uint4(0u, 8u, 16u, 24u))));
- return tint_dot4(a_i8, uint4(1u));
+ uint4 const a_u32 = as_type<uint4>(a);
+ uint4 const a_u8 = ((a_u32 & uint4(255u)) << uint4(0u, 8u, 16u, 24u));
+ return tint_dot4(a_u8, uint4(1u));
}
void pack4xI8_bfce01(device uint* const tint_symbol_1) {
diff --git a/test/tint/builtins/gen/var/pack4xI8/bfce01.wgsl.expected.spvasm b/test/tint/builtins/gen/var/pack4xI8/bfce01.wgsl.expected.spvasm
index 75c8ddb..5748c53 100644
--- a/test/tint/builtins/gen/var/pack4xI8/bfce01.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/pack4xI8/bfce01.wgsl.expected.spvasm
@@ -46,8 +46,8 @@
%v4int = OpTypeVector %int 4
%13 = OpTypeFunction %uint %v4int
%v4uint = OpTypeVector %uint 4
- %int_255 = OpConstant %int 255
- %22 = OpConstantComposite %v4int %int_255 %int_255 %int_255 %int_255
+ %uint_255 = OpConstant %uint 255
+ %22 = OpConstantComposite %v4uint %uint_255 %uint_255 %uint_255 %uint_255
%24 = OpConstantNull %uint
%uint_8 = OpConstant %uint 8
%uint_16 = OpConstant %uint 16
@@ -69,21 +69,21 @@
%tint_pack_4xi8 = OpFunction %uint None %13
%a = OpFunctionParameter %v4int
%18 = OpLabel
- %23 = OpBitwiseAnd %v4int %a %22
- %29 = OpShiftLeftLogical %v4int %23 %28
- %19 = OpBitcast %v4uint %29
- %33 = OpCompositeExtract %uint %19 0
+ %19 = OpBitcast %v4uint %a
+ %23 = OpBitwiseAnd %v4uint %19 %22
+ %29 = OpShiftLeftLogical %v4uint %23 %28
+ %33 = OpCompositeExtract %uint %29 0
%34 = OpCompositeExtract %uint %32 0
%35 = OpIMul %uint %33 %34
- %36 = OpCompositeExtract %uint %19 1
+ %36 = OpCompositeExtract %uint %29 1
%37 = OpCompositeExtract %uint %32 1
%38 = OpIMul %uint %36 %37
%39 = OpIAdd %uint %35 %38
- %40 = OpCompositeExtract %uint %19 2
+ %40 = OpCompositeExtract %uint %29 2
%41 = OpCompositeExtract %uint %32 2
%42 = OpIMul %uint %40 %41
%43 = OpIAdd %uint %39 %42
- %44 = OpCompositeExtract %uint %19 3
+ %44 = OpCompositeExtract %uint %29 3
%45 = OpCompositeExtract %uint %32 3
%46 = OpIMul %uint %44 %45
%30 = OpIAdd %uint %43 %46
diff --git a/test/tint/builtins/gen/var/pack4xI8Clamp/e42b2a.wgsl b/test/tint/builtins/gen/var/pack4xI8Clamp/e42b2a.wgsl
new file mode 100644
index 0000000..6814e09
--- /dev/null
+++ b/test/tint/builtins/gen/var/pack4xI8Clamp/e42b2a.wgsl
@@ -0,0 +1,60 @@
+// Copyright 2023 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// fn pack4xI8Clamp(vec4<i32>) -> u32
+fn pack4xI8Clamp_e42b2a() {
+ var arg_0 = vec4<i32>(1i);
+ var res: u32 = pack4xI8Clamp(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ pack4xI8Clamp_e42b2a();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ pack4xI8Clamp_e42b2a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ pack4xI8Clamp_e42b2a();
+}
diff --git a/test/tint/builtins/gen/var/pack4xI8Clamp/e42b2a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/pack4xI8Clamp/e42b2a.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..63ba8e6
--- /dev/null
+++ b/test/tint/builtins/gen/var/pack4xI8Clamp/e42b2a.wgsl.expected.dxc.hlsl
@@ -0,0 +1,41 @@
+uint tint_pack_4xi8_clamp(int4 a) {
+ const int4 a_clamp = clamp(a, (-128).xxxx, (127).xxxx);
+ const uint4 a_u32 = asuint(a_clamp);
+ const uint4 a_u8 = ((a_u32 & (255u).xxxx) << uint4(0u, 8u, 16u, 24u));
+ return dot(a_u8, (1u).xxxx);
+}
+
+RWByteAddressBuffer prevent_dce : register(u0, space2);
+
+void pack4xI8Clamp_e42b2a() {
+ int4 arg_0 = (1).xxxx;
+ uint res = tint_pack_4xi8_clamp(arg_0);
+ prevent_dce.Store(0u, asuint(res));
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+float4 vertex_main_inner() {
+ pack4xI8Clamp_e42b2a();
+ return (0.0f).xxxx;
+}
+
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
+ pack4xI8Clamp_e42b2a();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ pack4xI8Clamp_e42b2a();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/pack4xI8Clamp/e42b2a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/pack4xI8Clamp/e42b2a.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..63ba8e6
--- /dev/null
+++ b/test/tint/builtins/gen/var/pack4xI8Clamp/e42b2a.wgsl.expected.fxc.hlsl
@@ -0,0 +1,41 @@
+uint tint_pack_4xi8_clamp(int4 a) {
+ const int4 a_clamp = clamp(a, (-128).xxxx, (127).xxxx);
+ const uint4 a_u32 = asuint(a_clamp);
+ const uint4 a_u8 = ((a_u32 & (255u).xxxx) << uint4(0u, 8u, 16u, 24u));
+ return dot(a_u8, (1u).xxxx);
+}
+
+RWByteAddressBuffer prevent_dce : register(u0, space2);
+
+void pack4xI8Clamp_e42b2a() {
+ int4 arg_0 = (1).xxxx;
+ uint res = tint_pack_4xi8_clamp(arg_0);
+ prevent_dce.Store(0u, asuint(res));
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+float4 vertex_main_inner() {
+ pack4xI8Clamp_e42b2a();
+ return (0.0f).xxxx;
+}
+
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
+ pack4xI8Clamp_e42b2a();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ pack4xI8Clamp_e42b2a();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/pack4xI8Clamp/e42b2a.wgsl.expected.glsl b/test/tint/builtins/gen/var/pack4xI8Clamp/e42b2a.wgsl.expected.glsl
new file mode 100644
index 0000000..0efeef2
--- /dev/null
+++ b/test/tint/builtins/gen/var/pack4xI8Clamp/e42b2a.wgsl.expected.glsl
@@ -0,0 +1,100 @@
+#version 310 es
+
+uint tint_int_dot(uvec4 a, uvec4 b) {
+ return a[0]*b[0] + a[1]*b[1] + a[2]*b[2] + a[3]*b[3];
+}
+
+uint tint_pack_4xi8_clamp(ivec4 a) {
+ ivec4 a_clamp = clamp(a, ivec4(-128), ivec4(127));
+ uvec4 a_u32 = uvec4(a_clamp);
+ uvec4 a_u8 = ((a_u32 & uvec4(255u)) << uvec4(0u, 8u, 16u, 24u));
+ return tint_int_dot(a_u8, uvec4(1u));
+}
+
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void pack4xI8Clamp_e42b2a() {
+ ivec4 arg_0 = ivec4(1);
+ uint res = tint_pack_4xi8_clamp(arg_0);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ pack4xI8Clamp_e42b2a();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+uint tint_int_dot(uvec4 a, uvec4 b) {
+ return a[0]*b[0] + a[1]*b[1] + a[2]*b[2] + a[3]*b[3];
+}
+
+uint tint_pack_4xi8_clamp(ivec4 a) {
+ ivec4 a_clamp = clamp(a, ivec4(-128), ivec4(127));
+ uvec4 a_u32 = uvec4(a_clamp);
+ uvec4 a_u8 = ((a_u32 & uvec4(255u)) << uvec4(0u, 8u, 16u, 24u));
+ return tint_int_dot(a_u8, uvec4(1u));
+}
+
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void pack4xI8Clamp_e42b2a() {
+ ivec4 arg_0 = ivec4(1);
+ uint res = tint_pack_4xi8_clamp(arg_0);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ pack4xI8Clamp_e42b2a();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+uint tint_int_dot(uvec4 a, uvec4 b) {
+ return a[0]*b[0] + a[1]*b[1] + a[2]*b[2] + a[3]*b[3];
+}
+
+uint tint_pack_4xi8_clamp(ivec4 a) {
+ ivec4 a_clamp = clamp(a, ivec4(-128), ivec4(127));
+ uvec4 a_u32 = uvec4(a_clamp);
+ uvec4 a_u8 = ((a_u32 & uvec4(255u)) << uvec4(0u, 8u, 16u, 24u));
+ return tint_int_dot(a_u8, uvec4(1u));
+}
+
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void pack4xI8Clamp_e42b2a() {
+ ivec4 arg_0 = ivec4(1);
+ uint res = tint_pack_4xi8_clamp(arg_0);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ pack4xI8Clamp_e42b2a();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/pack4xI8Clamp/e42b2a.wgsl.expected.msl b/test/tint/builtins/gen/var/pack4xI8Clamp/e42b2a.wgsl.expected.msl
new file mode 100644
index 0000000..3847c81
--- /dev/null
+++ b/test/tint/builtins/gen/var/pack4xI8Clamp/e42b2a.wgsl.expected.msl
@@ -0,0 +1,47 @@
+#include <metal_stdlib>
+
+using namespace metal;
+
+template<typename T>
+T tint_dot4(vec<T,4> a, vec<T,4> b) {
+ return a[0]*b[0] + a[1]*b[1] + a[2]*b[2] + a[3]*b[3];
+}
+uint tint_pack_4xi8_clamp(int4 a) {
+ int4 const a_clamp = clamp(a, int4(-128), int4(127));
+ uint4 const a_u32 = as_type<uint4>(a_clamp);
+ uint4 const a_u8 = ((a_u32 & uint4(255u)) << uint4(0u, 8u, 16u, 24u));
+ return tint_dot4(a_u8, uint4(1u));
+}
+
+void pack4xI8Clamp_e42b2a(device uint* const tint_symbol_1) {
+ int4 arg_0 = int4(1);
+ uint res = tint_pack_4xi8_clamp(arg_0);
+ *(tint_symbol_1) = res;
+}
+
+struct tint_symbol {
+ float4 value [[position]];
+};
+
+float4 vertex_main_inner(device uint* const tint_symbol_2) {
+ pack4xI8Clamp_e42b2a(tint_symbol_2);
+ return float4(0.0f);
+}
+
+vertex tint_symbol vertex_main(device uint* tint_symbol_3 [[buffer(0)]]) {
+ float4 const inner_result = vertex_main_inner(tint_symbol_3);
+ tint_symbol wrapper_result = {};
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+fragment void fragment_main(device uint* tint_symbol_4 [[buffer(0)]]) {
+ pack4xI8Clamp_e42b2a(tint_symbol_4);
+ return;
+}
+
+kernel void compute_main(device uint* tint_symbol_5 [[buffer(0)]]) {
+ pack4xI8Clamp_e42b2a(tint_symbol_5);
+ return;
+}
+
diff --git a/test/tint/builtins/gen/var/pack4xI8Clamp/e42b2a.wgsl.expected.spvasm b/test/tint/builtins/gen/var/pack4xI8Clamp/e42b2a.wgsl.expected.spvasm
new file mode 100644
index 0000000..ff2692f
--- /dev/null
+++ b/test/tint/builtins/gen/var/pack4xI8Clamp/e42b2a.wgsl.expected.spvasm
@@ -0,0 +1,132 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 84
+; Schema: 0
+ OpCapability Shader
+ %20 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical GLSL450
+ OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+ OpEntryPoint Fragment %fragment_main "fragment_main"
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %fragment_main OriginUpperLeft
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %value "value"
+ OpName %vertex_point_size "vertex_point_size"
+ OpName %prevent_dce_block "prevent_dce_block"
+ OpMemberName %prevent_dce_block 0 "inner"
+ OpName %prevent_dce "prevent_dce"
+ OpName %tint_pack_4xi8_clamp "tint_pack_4xi8_clamp"
+ OpName %a "a"
+ OpName %pack4xI8Clamp_e42b2a "pack4xI8Clamp_e42b2a"
+ OpName %arg_0 "arg_0"
+ OpName %res "res"
+ OpName %vertex_main_inner "vertex_main_inner"
+ OpName %vertex_main "vertex_main"
+ OpName %fragment_main "fragment_main"
+ OpName %compute_main "compute_main"
+ OpDecorate %value BuiltIn Position
+ OpDecorate %vertex_point_size BuiltIn PointSize
+ OpDecorate %prevent_dce_block Block
+ OpMemberDecorate %prevent_dce_block 0 Offset 0
+ OpDecorate %prevent_dce DescriptorSet 2
+ OpDecorate %prevent_dce Binding 0
+ %float = OpTypeFloat 32
+ %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %5 = OpConstantNull %v4float
+ %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+ %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+ %uint = OpTypeInt 32 0
+%prevent_dce_block = OpTypeStruct %uint
+%_ptr_StorageBuffer_prevent_dce_block = OpTypePointer StorageBuffer %prevent_dce_block
+%prevent_dce = OpVariable %_ptr_StorageBuffer_prevent_dce_block StorageBuffer
+ %int = OpTypeInt 32 1
+ %v4int = OpTypeVector %int 4
+ %13 = OpTypeFunction %uint %v4int
+ %int_n128 = OpConstant %int -128
+ %22 = OpConstantComposite %v4int %int_n128 %int_n128 %int_n128 %int_n128
+ %int_127 = OpConstant %int 127
+ %24 = OpConstantComposite %v4int %int_127 %int_127 %int_127 %int_127
+ %v4uint = OpTypeVector %uint 4
+ %uint_255 = OpConstant %uint 255
+ %28 = OpConstantComposite %v4uint %uint_255 %uint_255 %uint_255 %uint_255
+ %30 = OpConstantNull %uint
+ %uint_8 = OpConstant %uint 8
+ %uint_16 = OpConstant %uint 16
+ %uint_24 = OpConstant %uint 24
+ %34 = OpConstantComposite %v4uint %30 %uint_8 %uint_16 %uint_24
+ %uint_1 = OpConstant %uint 1
+ %38 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+ %void = OpTypeVoid
+ %53 = OpTypeFunction %void
+ %int_1 = OpConstant %int 1
+ %58 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+ %61 = OpConstantNull %v4int
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %70 = OpTypeFunction %v4float
+ %float_1 = OpConstant %float 1
+%tint_pack_4xi8_clamp = OpFunction %uint None %13
+ %a = OpFunctionParameter %v4int
+ %18 = OpLabel
+ %19 = OpExtInst %v4int %20 SClamp %a %22 %24
+ %25 = OpBitcast %v4uint %19
+ %29 = OpBitwiseAnd %v4uint %25 %28
+ %35 = OpShiftLeftLogical %v4uint %29 %34
+ %39 = OpCompositeExtract %uint %35 0
+ %40 = OpCompositeExtract %uint %38 0
+ %41 = OpIMul %uint %39 %40
+ %42 = OpCompositeExtract %uint %35 1
+ %43 = OpCompositeExtract %uint %38 1
+ %44 = OpIMul %uint %42 %43
+ %45 = OpIAdd %uint %41 %44
+ %46 = OpCompositeExtract %uint %35 2
+ %47 = OpCompositeExtract %uint %38 2
+ %48 = OpIMul %uint %46 %47
+ %49 = OpIAdd %uint %45 %48
+ %50 = OpCompositeExtract %uint %35 3
+ %51 = OpCompositeExtract %uint %38 3
+ %52 = OpIMul %uint %50 %51
+ %36 = OpIAdd %uint %49 %52
+ OpReturnValue %36
+ OpFunctionEnd
+%pack4xI8Clamp_e42b2a = OpFunction %void None %53
+ %56 = OpLabel
+ %arg_0 = OpVariable %_ptr_Function_v4int Function %61
+ %res = OpVariable %_ptr_Function_uint Function %30
+ OpStore %arg_0 %58
+ %63 = OpLoad %v4int %arg_0
+ %62 = OpFunctionCall %uint %tint_pack_4xi8_clamp %63
+ OpStore %res %62
+ %68 = OpAccessChain %_ptr_StorageBuffer_uint %prevent_dce %uint_0
+ %69 = OpLoad %uint %res
+ OpStore %68 %69
+ OpReturn
+ OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %70
+ %72 = OpLabel
+ %73 = OpFunctionCall %void %pack4xI8Clamp_e42b2a
+ OpReturnValue %5
+ OpFunctionEnd
+%vertex_main = OpFunction %void None %53
+ %75 = OpLabel
+ %76 = OpFunctionCall %v4float %vertex_main_inner
+ OpStore %value %76
+ OpStore %vertex_point_size %float_1
+ OpReturn
+ OpFunctionEnd
+%fragment_main = OpFunction %void None %53
+ %79 = OpLabel
+ %80 = OpFunctionCall %void %pack4xI8Clamp_e42b2a
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %53
+ %82 = OpLabel
+ %83 = OpFunctionCall %void %pack4xI8Clamp_e42b2a
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/pack4xI8Clamp/e42b2a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/pack4xI8Clamp/e42b2a.wgsl.expected.wgsl
new file mode 100644
index 0000000..b36b32d
--- /dev/null
+++ b/test/tint/builtins/gen/var/pack4xI8Clamp/e42b2a.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+fn pack4xI8Clamp_e42b2a() {
+ var arg_0 = vec4<i32>(1i);
+ var res : u32 = pack4xI8Clamp(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ pack4xI8Clamp_e42b2a();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ pack4xI8Clamp_e42b2a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ pack4xI8Clamp_e42b2a();
+}
diff --git a/test/tint/builtins/gen/var/pack4xU8Clamp/6b8c1b.wgsl b/test/tint/builtins/gen/var/pack4xU8Clamp/6b8c1b.wgsl
new file mode 100644
index 0000000..ec45fb5
--- /dev/null
+++ b/test/tint/builtins/gen/var/pack4xU8Clamp/6b8c1b.wgsl
@@ -0,0 +1,60 @@
+// Copyright 2023 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// fn pack4xU8Clamp(vec4<u32>) -> u32
+fn pack4xU8Clamp_6b8c1b() {
+ var arg_0 = vec4<u32>(1u);
+ var res: u32 = pack4xU8Clamp(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ pack4xU8Clamp_6b8c1b();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ pack4xU8Clamp_6b8c1b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ pack4xU8Clamp_6b8c1b();
+}
diff --git a/test/tint/builtins/gen/var/pack4xU8Clamp/6b8c1b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/pack4xU8Clamp/6b8c1b.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..bd5dd50
--- /dev/null
+++ b/test/tint/builtins/gen/var/pack4xU8Clamp/6b8c1b.wgsl.expected.dxc.hlsl
@@ -0,0 +1,40 @@
+uint tint_pack_4xu8_clamp(uint4 a) {
+ const uint4 a_clamp = clamp(a, (0u).xxxx, (255u).xxxx);
+ const uint4 a_u8 = uint4((a_clamp << uint4(0u, 8u, 16u, 24u)));
+ return dot(a_u8, (1u).xxxx);
+}
+
+RWByteAddressBuffer prevent_dce : register(u0, space2);
+
+void pack4xU8Clamp_6b8c1b() {
+ uint4 arg_0 = (1u).xxxx;
+ uint res = tint_pack_4xu8_clamp(arg_0);
+ prevent_dce.Store(0u, asuint(res));
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+float4 vertex_main_inner() {
+ pack4xU8Clamp_6b8c1b();
+ return (0.0f).xxxx;
+}
+
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
+ pack4xU8Clamp_6b8c1b();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ pack4xU8Clamp_6b8c1b();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/pack4xU8Clamp/6b8c1b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/pack4xU8Clamp/6b8c1b.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..bd5dd50
--- /dev/null
+++ b/test/tint/builtins/gen/var/pack4xU8Clamp/6b8c1b.wgsl.expected.fxc.hlsl
@@ -0,0 +1,40 @@
+uint tint_pack_4xu8_clamp(uint4 a) {
+ const uint4 a_clamp = clamp(a, (0u).xxxx, (255u).xxxx);
+ const uint4 a_u8 = uint4((a_clamp << uint4(0u, 8u, 16u, 24u)));
+ return dot(a_u8, (1u).xxxx);
+}
+
+RWByteAddressBuffer prevent_dce : register(u0, space2);
+
+void pack4xU8Clamp_6b8c1b() {
+ uint4 arg_0 = (1u).xxxx;
+ uint res = tint_pack_4xu8_clamp(arg_0);
+ prevent_dce.Store(0u, asuint(res));
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+float4 vertex_main_inner() {
+ pack4xU8Clamp_6b8c1b();
+ return (0.0f).xxxx;
+}
+
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
+ pack4xU8Clamp_6b8c1b();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ pack4xU8Clamp_6b8c1b();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/pack4xU8Clamp/6b8c1b.wgsl.expected.glsl b/test/tint/builtins/gen/var/pack4xU8Clamp/6b8c1b.wgsl.expected.glsl
new file mode 100644
index 0000000..c306293
--- /dev/null
+++ b/test/tint/builtins/gen/var/pack4xU8Clamp/6b8c1b.wgsl.expected.glsl
@@ -0,0 +1,97 @@
+#version 310 es
+
+uint tint_int_dot(uvec4 a, uvec4 b) {
+ return a[0]*b[0] + a[1]*b[1] + a[2]*b[2] + a[3]*b[3];
+}
+
+uint tint_pack_4xu8_clamp(uvec4 a) {
+ uvec4 a_clamp = clamp(a, uvec4(0u), uvec4(255u));
+ uvec4 a_u8 = uvec4((a_clamp << uvec4(0u, 8u, 16u, 24u)));
+ return tint_int_dot(a_u8, uvec4(1u));
+}
+
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void pack4xU8Clamp_6b8c1b() {
+ uvec4 arg_0 = uvec4(1u);
+ uint res = tint_pack_4xu8_clamp(arg_0);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ pack4xU8Clamp_6b8c1b();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+uint tint_int_dot(uvec4 a, uvec4 b) {
+ return a[0]*b[0] + a[1]*b[1] + a[2]*b[2] + a[3]*b[3];
+}
+
+uint tint_pack_4xu8_clamp(uvec4 a) {
+ uvec4 a_clamp = clamp(a, uvec4(0u), uvec4(255u));
+ uvec4 a_u8 = uvec4((a_clamp << uvec4(0u, 8u, 16u, 24u)));
+ return tint_int_dot(a_u8, uvec4(1u));
+}
+
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void pack4xU8Clamp_6b8c1b() {
+ uvec4 arg_0 = uvec4(1u);
+ uint res = tint_pack_4xu8_clamp(arg_0);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ pack4xU8Clamp_6b8c1b();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+uint tint_int_dot(uvec4 a, uvec4 b) {
+ return a[0]*b[0] + a[1]*b[1] + a[2]*b[2] + a[3]*b[3];
+}
+
+uint tint_pack_4xu8_clamp(uvec4 a) {
+ uvec4 a_clamp = clamp(a, uvec4(0u), uvec4(255u));
+ uvec4 a_u8 = uvec4((a_clamp << uvec4(0u, 8u, 16u, 24u)));
+ return tint_int_dot(a_u8, uvec4(1u));
+}
+
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uint inner;
+} prevent_dce;
+
+void pack4xU8Clamp_6b8c1b() {
+ uvec4 arg_0 = uvec4(1u);
+ uint res = tint_pack_4xu8_clamp(arg_0);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ pack4xU8Clamp_6b8c1b();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/pack4xU8Clamp/6b8c1b.wgsl.expected.msl b/test/tint/builtins/gen/var/pack4xU8Clamp/6b8c1b.wgsl.expected.msl
new file mode 100644
index 0000000..7499ea1
--- /dev/null
+++ b/test/tint/builtins/gen/var/pack4xU8Clamp/6b8c1b.wgsl.expected.msl
@@ -0,0 +1,46 @@
+#include <metal_stdlib>
+
+using namespace metal;
+
+template<typename T>
+T tint_dot4(vec<T,4> a, vec<T,4> b) {
+ return a[0]*b[0] + a[1]*b[1] + a[2]*b[2] + a[3]*b[3];
+}
+uint tint_pack_4xu8_clamp(uint4 a) {
+ uint4 const a_clamp = clamp(a, uint4(0u), uint4(255u));
+ uint4 const a_u8 = uint4((a_clamp << uint4(0u, 8u, 16u, 24u)));
+ return tint_dot4(a_u8, uint4(1u));
+}
+
+void pack4xU8Clamp_6b8c1b(device uint* const tint_symbol_1) {
+ uint4 arg_0 = uint4(1u);
+ uint res = tint_pack_4xu8_clamp(arg_0);
+ *(tint_symbol_1) = res;
+}
+
+struct tint_symbol {
+ float4 value [[position]];
+};
+
+float4 vertex_main_inner(device uint* const tint_symbol_2) {
+ pack4xU8Clamp_6b8c1b(tint_symbol_2);
+ return float4(0.0f);
+}
+
+vertex tint_symbol vertex_main(device uint* tint_symbol_3 [[buffer(0)]]) {
+ float4 const inner_result = vertex_main_inner(tint_symbol_3);
+ tint_symbol wrapper_result = {};
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+fragment void fragment_main(device uint* tint_symbol_4 [[buffer(0)]]) {
+ pack4xU8Clamp_6b8c1b(tint_symbol_4);
+ return;
+}
+
+kernel void compute_main(device uint* tint_symbol_5 [[buffer(0)]]) {
+ pack4xU8Clamp_6b8c1b(tint_symbol_5);
+ return;
+}
+
diff --git a/test/tint/builtins/gen/var/pack4xU8Clamp/6b8c1b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/pack4xU8Clamp/6b8c1b.wgsl.expected.spvasm
new file mode 100644
index 0000000..bbe5118
--- /dev/null
+++ b/test/tint/builtins/gen/var/pack4xU8Clamp/6b8c1b.wgsl.expected.spvasm
@@ -0,0 +1,122 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 75
+; Schema: 0
+ OpCapability Shader
+ %19 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical GLSL450
+ OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+ OpEntryPoint Fragment %fragment_main "fragment_main"
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %fragment_main OriginUpperLeft
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %value "value"
+ OpName %vertex_point_size "vertex_point_size"
+ OpName %prevent_dce_block "prevent_dce_block"
+ OpMemberName %prevent_dce_block 0 "inner"
+ OpName %prevent_dce "prevent_dce"
+ OpName %tint_pack_4xu8_clamp "tint_pack_4xu8_clamp"
+ OpName %a "a"
+ OpName %pack4xU8Clamp_6b8c1b "pack4xU8Clamp_6b8c1b"
+ OpName %arg_0 "arg_0"
+ OpName %res "res"
+ OpName %vertex_main_inner "vertex_main_inner"
+ OpName %vertex_main "vertex_main"
+ OpName %fragment_main "fragment_main"
+ OpName %compute_main "compute_main"
+ OpDecorate %value BuiltIn Position
+ OpDecorate %vertex_point_size BuiltIn PointSize
+ OpDecorate %prevent_dce_block Block
+ OpMemberDecorate %prevent_dce_block 0 Offset 0
+ OpDecorate %prevent_dce DescriptorSet 2
+ OpDecorate %prevent_dce Binding 0
+ %float = OpTypeFloat 32
+ %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %5 = OpConstantNull %v4float
+ %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+ %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+ %uint = OpTypeInt 32 0
+%prevent_dce_block = OpTypeStruct %uint
+%_ptr_StorageBuffer_prevent_dce_block = OpTypePointer StorageBuffer %prevent_dce_block
+%prevent_dce = OpVariable %_ptr_StorageBuffer_prevent_dce_block StorageBuffer
+ %v4uint = OpTypeVector %uint 4
+ %13 = OpTypeFunction %uint %v4uint
+ %20 = OpConstantNull %v4uint
+ %uint_255 = OpConstant %uint 255
+ %22 = OpConstantComposite %v4uint %uint_255 %uint_255 %uint_255 %uint_255
+ %24 = OpConstantNull %uint
+ %uint_8 = OpConstant %uint 8
+ %uint_16 = OpConstant %uint 16
+ %uint_24 = OpConstant %uint 24
+ %28 = OpConstantComposite %v4uint %24 %uint_8 %uint_16 %uint_24
+ %uint_1 = OpConstant %uint 1
+ %32 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
+ %void = OpTypeVoid
+ %47 = OpTypeFunction %void
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+%_ptr_Function_uint = OpTypePointer Function %uint
+ %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+ %61 = OpTypeFunction %v4float
+ %float_1 = OpConstant %float 1
+%tint_pack_4xu8_clamp = OpFunction %uint None %13
+ %a = OpFunctionParameter %v4uint
+ %17 = OpLabel
+ %18 = OpExtInst %v4uint %19 UClamp %a %20 %22
+ %29 = OpShiftLeftLogical %v4uint %18 %28
+ %33 = OpCompositeExtract %uint %29 0
+ %34 = OpCompositeExtract %uint %32 0
+ %35 = OpIMul %uint %33 %34
+ %36 = OpCompositeExtract %uint %29 1
+ %37 = OpCompositeExtract %uint %32 1
+ %38 = OpIMul %uint %36 %37
+ %39 = OpIAdd %uint %35 %38
+ %40 = OpCompositeExtract %uint %29 2
+ %41 = OpCompositeExtract %uint %32 2
+ %42 = OpIMul %uint %40 %41
+ %43 = OpIAdd %uint %39 %42
+ %44 = OpCompositeExtract %uint %29 3
+ %45 = OpCompositeExtract %uint %32 3
+ %46 = OpIMul %uint %44 %45
+ %30 = OpIAdd %uint %43 %46
+ OpReturnValue %30
+ OpFunctionEnd
+%pack4xU8Clamp_6b8c1b = OpFunction %void None %47
+ %50 = OpLabel
+ %arg_0 = OpVariable %_ptr_Function_v4uint Function %20
+ %res = OpVariable %_ptr_Function_uint Function %24
+ OpStore %arg_0 %32
+ %54 = OpLoad %v4uint %arg_0
+ %53 = OpFunctionCall %uint %tint_pack_4xu8_clamp %54
+ OpStore %res %53
+ %59 = OpAccessChain %_ptr_StorageBuffer_uint %prevent_dce %uint_0
+ %60 = OpLoad %uint %res
+ OpStore %59 %60
+ OpReturn
+ OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %61
+ %63 = OpLabel
+ %64 = OpFunctionCall %void %pack4xU8Clamp_6b8c1b
+ OpReturnValue %5
+ OpFunctionEnd
+%vertex_main = OpFunction %void None %47
+ %66 = OpLabel
+ %67 = OpFunctionCall %v4float %vertex_main_inner
+ OpStore %value %67
+ OpStore %vertex_point_size %float_1
+ OpReturn
+ OpFunctionEnd
+%fragment_main = OpFunction %void None %47
+ %70 = OpLabel
+ %71 = OpFunctionCall %void %pack4xU8Clamp_6b8c1b
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %47
+ %73 = OpLabel
+ %74 = OpFunctionCall %void %pack4xU8Clamp_6b8c1b
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/pack4xU8Clamp/6b8c1b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/pack4xU8Clamp/6b8c1b.wgsl.expected.wgsl
new file mode 100644
index 0000000..5ce391e
--- /dev/null
+++ b/test/tint/builtins/gen/var/pack4xU8Clamp/6b8c1b.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+fn pack4xU8Clamp_6b8c1b() {
+ var arg_0 = vec4<u32>(1u);
+ var res : u32 = pack4xU8Clamp(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ pack4xU8Clamp_6b8c1b();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ pack4xU8Clamp_6b8c1b();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ pack4xU8Clamp_6b8c1b();
+}
diff --git a/test/tint/builtins/gen/var/unpack4xI8/830900.wgsl b/test/tint/builtins/gen/var/unpack4xI8/830900.wgsl
new file mode 100644
index 0000000..f39c5aa
--- /dev/null
+++ b/test/tint/builtins/gen/var/unpack4xI8/830900.wgsl
@@ -0,0 +1,60 @@
+// Copyright 2023 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// fn unpack4xI8(u32) -> vec4<i32>
+fn unpack4xI8_830900() {
+ var arg_0 = 1u;
+ var res: vec4<i32> = unpack4xI8(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : vec4<i32>;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ unpack4xI8_830900();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ unpack4xI8_830900();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ unpack4xI8_830900();
+}
diff --git a/test/tint/builtins/gen/var/unpack4xI8/830900.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/unpack4xI8/830900.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..c171d45
--- /dev/null
+++ b/test/tint/builtins/gen/var/unpack4xI8/830900.wgsl.expected.dxc.hlsl
@@ -0,0 +1,40 @@
+int4 tint_unpack_4xi8(uint a) {
+ const uint4 a_vec4u = uint4((a).xxxx);
+ const int4 a_vec4i = asint((a_vec4u << uint4(24u, 16u, 8u, 0u)));
+ return (a_vec4i >> (24u).xxxx);
+}
+
+RWByteAddressBuffer prevent_dce : register(u0, space2);
+
+void unpack4xI8_830900() {
+ uint arg_0 = 1u;
+ int4 res = tint_unpack_4xi8(arg_0);
+ prevent_dce.Store4(0u, asuint(res));
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+float4 vertex_main_inner() {
+ unpack4xI8_830900();
+ return (0.0f).xxxx;
+}
+
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
+ unpack4xI8_830900();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ unpack4xI8_830900();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/unpack4xI8/830900.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/unpack4xI8/830900.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..c171d45
--- /dev/null
+++ b/test/tint/builtins/gen/var/unpack4xI8/830900.wgsl.expected.fxc.hlsl
@@ -0,0 +1,40 @@
+int4 tint_unpack_4xi8(uint a) {
+ const uint4 a_vec4u = uint4((a).xxxx);
+ const int4 a_vec4i = asint((a_vec4u << uint4(24u, 16u, 8u, 0u)));
+ return (a_vec4i >> (24u).xxxx);
+}
+
+RWByteAddressBuffer prevent_dce : register(u0, space2);
+
+void unpack4xI8_830900() {
+ uint arg_0 = 1u;
+ int4 res = tint_unpack_4xi8(arg_0);
+ prevent_dce.Store4(0u, asuint(res));
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+float4 vertex_main_inner() {
+ unpack4xI8_830900();
+ return (0.0f).xxxx;
+}
+
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
+ unpack4xI8_830900();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ unpack4xI8_830900();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/unpack4xI8/830900.wgsl.expected.glsl b/test/tint/builtins/gen/var/unpack4xI8/830900.wgsl.expected.glsl
new file mode 100644
index 0000000..34dc06c
--- /dev/null
+++ b/test/tint/builtins/gen/var/unpack4xI8/830900.wgsl.expected.glsl
@@ -0,0 +1,85 @@
+#version 310 es
+
+ivec4 tint_unpack_4xi8(uint a) {
+ uvec4 a_vec4u = uvec4(a);
+ ivec4 a_vec4i = ivec4((a_vec4u << uvec4(24u, 16u, 8u, 0u)));
+ return (a_vec4i >> uvec4(24u));
+}
+
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ ivec4 inner;
+} prevent_dce;
+
+void unpack4xI8_830900() {
+ uint arg_0 = 1u;
+ ivec4 res = tint_unpack_4xi8(arg_0);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ unpack4xI8_830900();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+ivec4 tint_unpack_4xi8(uint a) {
+ uvec4 a_vec4u = uvec4(a);
+ ivec4 a_vec4i = ivec4((a_vec4u << uvec4(24u, 16u, 8u, 0u)));
+ return (a_vec4i >> uvec4(24u));
+}
+
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ ivec4 inner;
+} prevent_dce;
+
+void unpack4xI8_830900() {
+ uint arg_0 = 1u;
+ ivec4 res = tint_unpack_4xi8(arg_0);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ unpack4xI8_830900();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+ivec4 tint_unpack_4xi8(uint a) {
+ uvec4 a_vec4u = uvec4(a);
+ ivec4 a_vec4i = ivec4((a_vec4u << uvec4(24u, 16u, 8u, 0u)));
+ return (a_vec4i >> uvec4(24u));
+}
+
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ ivec4 inner;
+} prevent_dce;
+
+void unpack4xI8_830900() {
+ uint arg_0 = 1u;
+ ivec4 res = tint_unpack_4xi8(arg_0);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ unpack4xI8_830900();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/unpack4xI8/830900.wgsl.expected.ir.spvasm b/test/tint/builtins/gen/var/unpack4xI8/830900.wgsl.expected.ir.spvasm
new file mode 100644
index 0000000..6c9842a
--- /dev/null
+++ b/test/tint/builtins/gen/var/unpack4xI8/830900.wgsl.expected.ir.spvasm
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\spirv\writer\printer\printer.cc:1807 internal compiler error: unhandled convert instruction
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
diff --git a/test/tint/builtins/gen/var/unpack4xI8/830900.wgsl.expected.msl b/test/tint/builtins/gen/var/unpack4xI8/830900.wgsl.expected.msl
new file mode 100644
index 0000000..80f7585
--- /dev/null
+++ b/test/tint/builtins/gen/var/unpack4xI8/830900.wgsl.expected.msl
@@ -0,0 +1,41 @@
+#include <metal_stdlib>
+
+using namespace metal;
+int4 tint_unpack_4xi8(uint a) {
+ uint4 const a_vec4u = uint4(a);
+ int4 const a_vec4i = as_type<int4>((a_vec4u << uint4(24u, 16u, 8u, 0u)));
+ return (a_vec4i >> uint4(24u));
+}
+
+void unpack4xI8_830900(device int4* const tint_symbol_1) {
+ uint arg_0 = 1u;
+ int4 res = tint_unpack_4xi8(arg_0);
+ *(tint_symbol_1) = res;
+}
+
+struct tint_symbol {
+ float4 value [[position]];
+};
+
+float4 vertex_main_inner(device int4* const tint_symbol_2) {
+ unpack4xI8_830900(tint_symbol_2);
+ return float4(0.0f);
+}
+
+vertex tint_symbol vertex_main(device int4* tint_symbol_3 [[buffer(0)]]) {
+ float4 const inner_result = vertex_main_inner(tint_symbol_3);
+ tint_symbol wrapper_result = {};
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+fragment void fragment_main(device int4* tint_symbol_4 [[buffer(0)]]) {
+ unpack4xI8_830900(tint_symbol_4);
+ return;
+}
+
+kernel void compute_main(device int4* tint_symbol_5 [[buffer(0)]]) {
+ unpack4xI8_830900(tint_symbol_5);
+ return;
+}
+
diff --git a/test/tint/builtins/gen/var/unpack4xI8/830900.wgsl.expected.spvasm b/test/tint/builtins/gen/var/unpack4xI8/830900.wgsl.expected.spvasm
new file mode 100644
index 0000000..51d6e1a
--- /dev/null
+++ b/test/tint/builtins/gen/var/unpack4xI8/830900.wgsl.expected.spvasm
@@ -0,0 +1,108 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 60
+; Schema: 0
+ OpCapability Shader
+ OpMemoryModel Logical GLSL450
+ OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+ OpEntryPoint Fragment %fragment_main "fragment_main"
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %fragment_main OriginUpperLeft
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %value "value"
+ OpName %vertex_point_size "vertex_point_size"
+ OpName %prevent_dce_block "prevent_dce_block"
+ OpMemberName %prevent_dce_block 0 "inner"
+ OpName %prevent_dce "prevent_dce"
+ OpName %tint_unpack_4xi8 "tint_unpack_4xi8"
+ OpName %a "a"
+ OpName %unpack4xI8_830900 "unpack4xI8_830900"
+ OpName %arg_0 "arg_0"
+ OpName %res "res"
+ OpName %vertex_main_inner "vertex_main_inner"
+ OpName %vertex_main "vertex_main"
+ OpName %fragment_main "fragment_main"
+ OpName %compute_main "compute_main"
+ OpDecorate %value BuiltIn Position
+ OpDecorate %vertex_point_size BuiltIn PointSize
+ OpDecorate %prevent_dce_block Block
+ OpMemberDecorate %prevent_dce_block 0 Offset 0
+ OpDecorate %prevent_dce DescriptorSet 2
+ OpDecorate %prevent_dce Binding 0
+ %float = OpTypeFloat 32
+ %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %5 = OpConstantNull %v4float
+ %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+ %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+ %int = OpTypeInt 32 1
+ %v4int = OpTypeVector %int 4
+%prevent_dce_block = OpTypeStruct %v4int
+%_ptr_StorageBuffer_prevent_dce_block = OpTypePointer StorageBuffer %prevent_dce_block
+%prevent_dce = OpVariable %_ptr_StorageBuffer_prevent_dce_block StorageBuffer
+ %uint = OpTypeInt 32 0
+ %14 = OpTypeFunction %v4int %uint
+ %v4uint = OpTypeVector %uint 4
+ %uint_24 = OpConstant %uint 24
+ %uint_16 = OpConstant %uint 16
+ %uint_8 = OpConstant %uint 8
+ %25 = OpConstantNull %uint
+ %26 = OpConstantComposite %v4uint %uint_24 %uint_16 %uint_8 %25
+ %28 = OpConstantComposite %v4uint %uint_24 %uint_24 %uint_24 %uint_24
+ %void = OpTypeVoid
+ %30 = OpTypeFunction %void
+ %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+ %41 = OpConstantNull %v4int
+ %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_v4int = OpTypePointer StorageBuffer %v4int
+ %46 = OpTypeFunction %v4float
+ %float_1 = OpConstant %float 1
+%tint_unpack_4xi8 = OpFunction %v4int None %14
+ %a = OpFunctionParameter %uint
+ %18 = OpLabel
+ %20 = OpCompositeConstruct %v4uint %a %a %a %a
+ %27 = OpShiftLeftLogical %v4uint %20 %26
+ %21 = OpBitcast %v4int %27
+ %29 = OpShiftRightArithmetic %v4int %21 %28
+ OpReturnValue %29
+ OpFunctionEnd
+%unpack4xI8_830900 = OpFunction %void None %30
+ %33 = OpLabel
+ %arg_0 = OpVariable %_ptr_Function_uint Function %25
+ %res = OpVariable %_ptr_Function_v4int Function %41
+ OpStore %arg_0 %uint_1
+ %38 = OpLoad %uint %arg_0
+ %37 = OpFunctionCall %v4int %tint_unpack_4xi8 %38
+ OpStore %res %37
+ %44 = OpAccessChain %_ptr_StorageBuffer_v4int %prevent_dce %uint_0
+ %45 = OpLoad %v4int %res
+ OpStore %44 %45
+ OpReturn
+ OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %46
+ %48 = OpLabel
+ %49 = OpFunctionCall %void %unpack4xI8_830900
+ OpReturnValue %5
+ OpFunctionEnd
+%vertex_main = OpFunction %void None %30
+ %51 = OpLabel
+ %52 = OpFunctionCall %v4float %vertex_main_inner
+ OpStore %value %52
+ OpStore %vertex_point_size %float_1
+ OpReturn
+ OpFunctionEnd
+%fragment_main = OpFunction %void None %30
+ %55 = OpLabel
+ %56 = OpFunctionCall %void %unpack4xI8_830900
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %30
+ %58 = OpLabel
+ %59 = OpFunctionCall %void %unpack4xI8_830900
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/unpack4xI8/830900.wgsl.expected.wgsl b/test/tint/builtins/gen/var/unpack4xI8/830900.wgsl.expected.wgsl
new file mode 100644
index 0000000..b67b1a2
--- /dev/null
+++ b/test/tint/builtins/gen/var/unpack4xI8/830900.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+fn unpack4xI8_830900() {
+ var arg_0 = 1u;
+ var res : vec4<i32> = unpack4xI8(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : vec4<i32>;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ unpack4xI8_830900();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ unpack4xI8_830900();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ unpack4xI8_830900();
+}
diff --git a/test/tint/builtins/gen/var/unpack4xU8/a5ea55.wgsl b/test/tint/builtins/gen/var/unpack4xU8/a5ea55.wgsl
new file mode 100644
index 0000000..fff361c
--- /dev/null
+++ b/test/tint/builtins/gen/var/unpack4xU8/a5ea55.wgsl
@@ -0,0 +1,60 @@
+// Copyright 2023 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// fn unpack4xU8(u32) -> vec4<u32>
+fn unpack4xU8_a5ea55() {
+ var arg_0 = 1u;
+ var res: vec4<u32> = unpack4xU8(arg_0);
+ prevent_dce = res;
+}
+@group(2) @binding(0) var<storage, read_write> prevent_dce : vec4<u32>;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ unpack4xU8_a5ea55();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ unpack4xU8_a5ea55();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ unpack4xU8_a5ea55();
+}
diff --git a/test/tint/builtins/gen/var/unpack4xU8/a5ea55.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/unpack4xU8/a5ea55.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..8c55d34
--- /dev/null
+++ b/test/tint/builtins/gen/var/unpack4xU8/a5ea55.wgsl.expected.dxc.hlsl
@@ -0,0 +1,39 @@
+uint4 tint_unpack_4xu8(uint a) {
+ const uint4 a_vec4u = (uint4((a).xxxx) >> uint4(0u, 8u, 16u, 24u));
+ return (a_vec4u & (255u).xxxx);
+}
+
+RWByteAddressBuffer prevent_dce : register(u0, space2);
+
+void unpack4xU8_a5ea55() {
+ uint arg_0 = 1u;
+ uint4 res = tint_unpack_4xu8(arg_0);
+ prevent_dce.Store4(0u, asuint(res));
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+float4 vertex_main_inner() {
+ unpack4xU8_a5ea55();
+ return (0.0f).xxxx;
+}
+
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
+ unpack4xU8_a5ea55();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ unpack4xU8_a5ea55();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/unpack4xU8/a5ea55.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/unpack4xU8/a5ea55.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..8c55d34
--- /dev/null
+++ b/test/tint/builtins/gen/var/unpack4xU8/a5ea55.wgsl.expected.fxc.hlsl
@@ -0,0 +1,39 @@
+uint4 tint_unpack_4xu8(uint a) {
+ const uint4 a_vec4u = (uint4((a).xxxx) >> uint4(0u, 8u, 16u, 24u));
+ return (a_vec4u & (255u).xxxx);
+}
+
+RWByteAddressBuffer prevent_dce : register(u0, space2);
+
+void unpack4xU8_a5ea55() {
+ uint arg_0 = 1u;
+ uint4 res = tint_unpack_4xu8(arg_0);
+ prevent_dce.Store4(0u, asuint(res));
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+float4 vertex_main_inner() {
+ unpack4xU8_a5ea55();
+ return (0.0f).xxxx;
+}
+
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
+ unpack4xU8_a5ea55();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ unpack4xU8_a5ea55();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/unpack4xU8/a5ea55.wgsl.expected.glsl b/test/tint/builtins/gen/var/unpack4xU8/a5ea55.wgsl.expected.glsl
new file mode 100644
index 0000000..1af35ba
--- /dev/null
+++ b/test/tint/builtins/gen/var/unpack4xU8/a5ea55.wgsl.expected.glsl
@@ -0,0 +1,82 @@
+#version 310 es
+
+uvec4 tint_unpack_4xu8(uint a) {
+ uvec4 a_vec4u = (uvec4(a) >> uvec4(0u, 8u, 16u, 24u));
+ return (a_vec4u & uvec4(255u));
+}
+
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uvec4 inner;
+} prevent_dce;
+
+void unpack4xU8_a5ea55() {
+ uint arg_0 = 1u;
+ uvec4 res = tint_unpack_4xu8(arg_0);
+ prevent_dce.inner = res;
+}
+
+vec4 vertex_main() {
+ unpack4xU8_a5ea55();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision highp float;
+
+uvec4 tint_unpack_4xu8(uint a) {
+ uvec4 a_vec4u = (uvec4(a) >> uvec4(0u, 8u, 16u, 24u));
+ return (a_vec4u & uvec4(255u));
+}
+
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uvec4 inner;
+} prevent_dce;
+
+void unpack4xU8_a5ea55() {
+ uint arg_0 = 1u;
+ uvec4 res = tint_unpack_4xu8(arg_0);
+ prevent_dce.inner = res;
+}
+
+void fragment_main() {
+ unpack4xU8_a5ea55();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+uvec4 tint_unpack_4xu8(uint a) {
+ uvec4 a_vec4u = (uvec4(a) >> uvec4(0u, 8u, 16u, 24u));
+ return (a_vec4u & uvec4(255u));
+}
+
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+ uvec4 inner;
+} prevent_dce;
+
+void unpack4xU8_a5ea55() {
+ uint arg_0 = 1u;
+ uvec4 res = tint_unpack_4xu8(arg_0);
+ prevent_dce.inner = res;
+}
+
+void compute_main() {
+ unpack4xU8_a5ea55();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/unpack4xU8/a5ea55.wgsl.expected.ir.spvasm b/test/tint/builtins/gen/var/unpack4xU8/a5ea55.wgsl.expected.ir.spvasm
new file mode 100644
index 0000000..6c9842a
--- /dev/null
+++ b/test/tint/builtins/gen/var/unpack4xU8/a5ea55.wgsl.expected.ir.spvasm
@@ -0,0 +1,9 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\spirv\writer\printer\printer.cc:1807 internal compiler error: unhandled convert instruction
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
diff --git a/test/tint/builtins/gen/var/unpack4xU8/a5ea55.wgsl.expected.msl b/test/tint/builtins/gen/var/unpack4xU8/a5ea55.wgsl.expected.msl
new file mode 100644
index 0000000..044446a
--- /dev/null
+++ b/test/tint/builtins/gen/var/unpack4xU8/a5ea55.wgsl.expected.msl
@@ -0,0 +1,40 @@
+#include <metal_stdlib>
+
+using namespace metal;
+uint4 tint_unpack_4xu8(uint a) {
+ uint4 const a_vec4u = (uint4(a) >> uint4(0u, 8u, 16u, 24u));
+ return (a_vec4u & uint4(255u));
+}
+
+void unpack4xU8_a5ea55(device uint4* const tint_symbol_1) {
+ uint arg_0 = 1u;
+ uint4 res = tint_unpack_4xu8(arg_0);
+ *(tint_symbol_1) = res;
+}
+
+struct tint_symbol {
+ float4 value [[position]];
+};
+
+float4 vertex_main_inner(device uint4* const tint_symbol_2) {
+ unpack4xU8_a5ea55(tint_symbol_2);
+ return float4(0.0f);
+}
+
+vertex tint_symbol vertex_main(device uint4* tint_symbol_3 [[buffer(0)]]) {
+ float4 const inner_result = vertex_main_inner(tint_symbol_3);
+ tint_symbol wrapper_result = {};
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+fragment void fragment_main(device uint4* tint_symbol_4 [[buffer(0)]]) {
+ unpack4xU8_a5ea55(tint_symbol_4);
+ return;
+}
+
+kernel void compute_main(device uint4* tint_symbol_5 [[buffer(0)]]) {
+ unpack4xU8_a5ea55(tint_symbol_5);
+ return;
+}
+
diff --git a/test/tint/builtins/gen/var/unpack4xU8/a5ea55.wgsl.expected.spvasm b/test/tint/builtins/gen/var/unpack4xU8/a5ea55.wgsl.expected.spvasm
new file mode 100644
index 0000000..616204e
--- /dev/null
+++ b/test/tint/builtins/gen/var/unpack4xU8/a5ea55.wgsl.expected.spvasm
@@ -0,0 +1,106 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 58
+; Schema: 0
+ OpCapability Shader
+ OpMemoryModel Logical GLSL450
+ OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+ OpEntryPoint Fragment %fragment_main "fragment_main"
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %fragment_main OriginUpperLeft
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %value "value"
+ OpName %vertex_point_size "vertex_point_size"
+ OpName %prevent_dce_block "prevent_dce_block"
+ OpMemberName %prevent_dce_block 0 "inner"
+ OpName %prevent_dce "prevent_dce"
+ OpName %tint_unpack_4xu8 "tint_unpack_4xu8"
+ OpName %a "a"
+ OpName %unpack4xU8_a5ea55 "unpack4xU8_a5ea55"
+ OpName %arg_0 "arg_0"
+ OpName %res "res"
+ OpName %vertex_main_inner "vertex_main_inner"
+ OpName %vertex_main "vertex_main"
+ OpName %fragment_main "fragment_main"
+ OpName %compute_main "compute_main"
+ OpDecorate %value BuiltIn Position
+ OpDecorate %vertex_point_size BuiltIn PointSize
+ OpDecorate %prevent_dce_block Block
+ OpMemberDecorate %prevent_dce_block 0 Offset 0
+ OpDecorate %prevent_dce DescriptorSet 2
+ OpDecorate %prevent_dce Binding 0
+ %float = OpTypeFloat 32
+ %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %5 = OpConstantNull %v4float
+ %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+ %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+ %uint = OpTypeInt 32 0
+ %v4uint = OpTypeVector %uint 4
+%prevent_dce_block = OpTypeStruct %v4uint
+%_ptr_StorageBuffer_prevent_dce_block = OpTypePointer StorageBuffer %prevent_dce_block
+%prevent_dce = OpVariable %_ptr_StorageBuffer_prevent_dce_block StorageBuffer
+ %14 = OpTypeFunction %v4uint %uint
+ %19 = OpConstantNull %uint
+ %uint_8 = OpConstant %uint 8
+ %uint_16 = OpConstant %uint 16
+ %uint_24 = OpConstant %uint 24
+ %23 = OpConstantComposite %v4uint %19 %uint_8 %uint_16 %uint_24
+ %uint_255 = OpConstant %uint 255
+ %26 = OpConstantComposite %v4uint %uint_255 %uint_255 %uint_255 %uint_255
+ %void = OpTypeVoid
+ %28 = OpTypeFunction %void
+ %uint_1 = OpConstant %uint 1
+%_ptr_Function_uint = OpTypePointer Function %uint
+%_ptr_Function_v4uint = OpTypePointer Function %v4uint
+ %39 = OpConstantNull %v4uint
+ %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_v4uint = OpTypePointer StorageBuffer %v4uint
+ %44 = OpTypeFunction %v4float
+ %float_1 = OpConstant %float 1
+%tint_unpack_4xu8 = OpFunction %v4uint None %14
+ %a = OpFunctionParameter %uint
+ %17 = OpLabel
+ %18 = OpCompositeConstruct %v4uint %a %a %a %a
+ %24 = OpShiftRightLogical %v4uint %18 %23
+ %27 = OpBitwiseAnd %v4uint %24 %26
+ OpReturnValue %27
+ OpFunctionEnd
+%unpack4xU8_a5ea55 = OpFunction %void None %28
+ %31 = OpLabel
+ %arg_0 = OpVariable %_ptr_Function_uint Function %19
+ %res = OpVariable %_ptr_Function_v4uint Function %39
+ OpStore %arg_0 %uint_1
+ %36 = OpLoad %uint %arg_0
+ %35 = OpFunctionCall %v4uint %tint_unpack_4xu8 %36
+ OpStore %res %35
+ %42 = OpAccessChain %_ptr_StorageBuffer_v4uint %prevent_dce %uint_0
+ %43 = OpLoad %v4uint %res
+ OpStore %42 %43
+ OpReturn
+ OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %44
+ %46 = OpLabel
+ %47 = OpFunctionCall %void %unpack4xU8_a5ea55
+ OpReturnValue %5
+ OpFunctionEnd
+%vertex_main = OpFunction %void None %28
+ %49 = OpLabel
+ %50 = OpFunctionCall %v4float %vertex_main_inner
+ OpStore %value %50
+ OpStore %vertex_point_size %float_1
+ OpReturn
+ OpFunctionEnd
+%fragment_main = OpFunction %void None %28
+ %53 = OpLabel
+ %54 = OpFunctionCall %void %unpack4xU8_a5ea55
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %28
+ %56 = OpLabel
+ %57 = OpFunctionCall %void %unpack4xU8_a5ea55
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/unpack4xU8/a5ea55.wgsl.expected.wgsl b/test/tint/builtins/gen/var/unpack4xU8/a5ea55.wgsl.expected.wgsl
new file mode 100644
index 0000000..de478e3
--- /dev/null
+++ b/test/tint/builtins/gen/var/unpack4xU8/a5ea55.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+fn unpack4xU8_a5ea55() {
+ var arg_0 = 1u;
+ var res : vec4<u32> = unpack4xU8(arg_0);
+ prevent_dce = res;
+}
+
+@group(2) @binding(0) var<storage, read_write> prevent_dce : vec4<u32>;
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ unpack4xU8_a5ea55();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ unpack4xU8_a5ea55();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ unpack4xU8_a5ea55();
+}