From f8672d8c359ff23b1c22000274e55a6d937c9dc1 Mon Sep 17 00:00:00 2001 From: Ben Clayton Date: Tue, 22 Feb 2022 23:16:39 +0000 Subject: [PATCH] builtins: Add countTrailingZeros Requires polyfilling for all but the MSL backend. CTS tests: https://github.com/gpuweb/cts/pull/1002 Bug: tint:1367 Change-Id: I0cf56b74c01f30436f9ad00595a554a4042587e4 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/81501 Reviewed-by: David Neto Commit-Queue: Ben Clayton Kokoro: Ben Clayton --- src/tint/builtin_table.inl | 4939 +++++++++-------- src/tint/builtins.def | 2 + src/tint/sem/builtin_type.cc | 5 + src/tint/sem/builtin_type.h | 1 + src/tint/transform/builtin_polyfill.cc | 86 + src/tint/transform/builtin_polyfill.h | 2 + src/tint/transform/builtin_polyfill_test.cc | 154 + src/tint/transform/glsl.cc | 1 + src/tint/writer/hlsl/generator_impl.cc | 1 + src/tint/writer/msl/generator_impl.cc | 3 + .../writer/msl/generator_impl_builtin_test.cc | 2 + src/tint/writer/spirv/builder.cc | 1 + .../gen/countTrailingZeros/1ad138.wgsl | 45 + .../1ad138.wgsl.expected.glsl | 93 + .../1ad138.wgsl.expected.hlsl | 45 + .../1ad138.wgsl.expected.msl | 33 + .../1ad138.wgsl.expected.spvasm | 140 + .../1ad138.wgsl.expected.wgsl | 19 + .../gen/countTrailingZeros/1dc84a.wgsl | 45 + .../1dc84a.wgsl.expected.glsl | 93 + .../1dc84a.wgsl.expected.hlsl | 45 + .../1dc84a.wgsl.expected.msl | 33 + .../1dc84a.wgsl.expected.spvasm | 146 + .../1dc84a.wgsl.expected.wgsl | 19 + .../gen/countTrailingZeros/21e394.wgsl | 45 + .../21e394.wgsl.expected.glsl | 93 + .../21e394.wgsl.expected.hlsl | 45 + .../21e394.wgsl.expected.msl | 33 + .../21e394.wgsl.expected.spvasm | 128 + .../21e394.wgsl.expected.wgsl | 19 + .../gen/countTrailingZeros/327c37.wgsl | 45 + .../327c37.wgsl.expected.glsl | 93 + .../327c37.wgsl.expected.hlsl | 45 + .../327c37.wgsl.expected.msl | 33 + .../327c37.wgsl.expected.spvasm | 146 + .../327c37.wgsl.expected.wgsl | 19 + .../gen/countTrailingZeros/42fed6.wgsl | 45 + .../42fed6.wgsl.expected.glsl | 93 + .../42fed6.wgsl.expected.hlsl | 45 + .../42fed6.wgsl.expected.msl | 33 + .../42fed6.wgsl.expected.spvasm | 134 + .../42fed6.wgsl.expected.wgsl | 19 + .../gen/countTrailingZeros/8ed26f.wgsl | 45 + .../8ed26f.wgsl.expected.glsl | 93 + .../8ed26f.wgsl.expected.hlsl | 45 + .../8ed26f.wgsl.expected.msl | 33 + .../8ed26f.wgsl.expected.spvasm | 140 + .../8ed26f.wgsl.expected.wgsl | 19 + .../gen/countTrailingZeros/acfacb.wgsl | 45 + .../acfacb.wgsl.expected.glsl | 93 + .../acfacb.wgsl.expected.hlsl | 45 + .../acfacb.wgsl.expected.msl | 33 + .../acfacb.wgsl.expected.spvasm | 146 + .../acfacb.wgsl.expected.wgsl | 19 + .../gen/countTrailingZeros/d2b4a0.wgsl | 45 + .../d2b4a0.wgsl.expected.glsl | 93 + .../d2b4a0.wgsl.expected.hlsl | 45 + .../d2b4a0.wgsl.expected.msl | 33 + .../d2b4a0.wgsl.expected.spvasm | 140 + .../d2b4a0.wgsl.expected.wgsl | 19 + 60 files changed, 5748 insertions(+), 2449 deletions(-) create mode 100644 test/tint/builtins/gen/countTrailingZeros/1ad138.wgsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/1ad138.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/1ad138.wgsl.expected.hlsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/1ad138.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/countTrailingZeros/1ad138.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/countTrailingZeros/1ad138.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/1dc84a.wgsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/1dc84a.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/1dc84a.wgsl.expected.hlsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/1dc84a.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/countTrailingZeros/1dc84a.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/countTrailingZeros/1dc84a.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/21e394.wgsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/21e394.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/21e394.wgsl.expected.hlsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/21e394.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/countTrailingZeros/21e394.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/countTrailingZeros/21e394.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/327c37.wgsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/327c37.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/327c37.wgsl.expected.hlsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/327c37.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/countTrailingZeros/327c37.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/countTrailingZeros/327c37.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/42fed6.wgsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/42fed6.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/42fed6.wgsl.expected.hlsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/42fed6.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/countTrailingZeros/42fed6.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/countTrailingZeros/42fed6.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/8ed26f.wgsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/8ed26f.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/8ed26f.wgsl.expected.hlsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/8ed26f.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/countTrailingZeros/8ed26f.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/countTrailingZeros/8ed26f.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/acfacb.wgsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/acfacb.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/acfacb.wgsl.expected.hlsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/acfacb.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/countTrailingZeros/acfacb.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/countTrailingZeros/acfacb.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/d2b4a0.wgsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/d2b4a0.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/d2b4a0.wgsl.expected.hlsl create mode 100644 test/tint/builtins/gen/countTrailingZeros/d2b4a0.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/countTrailingZeros/d2b4a0.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/countTrailingZeros/d2b4a0.wgsl.expected.wgsl diff --git a/src/tint/builtin_table.inl b/src/tint/builtin_table.inl index de4e587f0a..dd7120d793 100644 --- a/src/tint/builtin_table.inl +++ b/src/tint/builtin_table.inl @@ -1666,10 +1666,10 @@ constexpr MatcherIndex kMatcherIndices[] = { /* [24] */ 8, /* [25] */ 0, /* [26] */ 1, - /* [27] */ 29, + /* [27] */ 30, /* [28] */ 0, /* [29] */ 1, - /* [30] */ 30, + /* [30] */ 29, /* [31] */ 0, /* [32] */ 1, /* [33] */ 28, @@ -1720,38 +1720,38 @@ constexpr MatcherIndex kMatcherIndices[] = { /* [78] */ 8, /* [79] */ 0, /* [80] */ 3, - /* [81] */ 15, - /* [82] */ 0, - /* [83] */ 7, - /* [84] */ 2, - /* [85] */ 18, + /* [81] */ 7, + /* [82] */ 2, + /* [83] */ 5, + /* [84] */ 3, + /* [85] */ 5, /* [86] */ 2, - /* [87] */ 5, - /* [88] */ 3, - /* [89] */ 5, + /* [87] */ 18, + /* [88] */ 2, + /* [89] */ 6, /* [90] */ 2, - /* [91] */ 6, + /* [91] */ 17, /* [92] */ 2, - /* [93] */ 17, - /* [94] */ 2, - /* [95] */ 6, - /* [96] */ 3, + /* [93] */ 6, + /* [94] */ 3, + /* [95] */ 16, + /* [96] */ 2, /* [97] */ 19, /* [98] */ 2, - /* [99] */ 16, + /* [99] */ 20, /* [100] */ 2, - /* [101] */ 20, - /* [102] */ 2, - /* [103] */ 33, + /* [101] */ 33, + /* [102] */ 0, + /* [103] */ 5, /* [104] */ 0, - /* [105] */ 5, + /* [105] */ 35, /* [106] */ 0, - /* [107] */ 35, - /* [108] */ 0, + /* [107] */ 7, + /* [108] */ 3, /* [109] */ 7, - /* [110] */ 3, - /* [111] */ 7, - /* [112] */ 4, + /* [110] */ 4, + /* [111] */ 15, + /* [112] */ 0, /* [113] */ 7, /* [114] */ 0, /* [115] */ 16, @@ -1768,11 +1768,11 @@ constexpr MatcherIndex kMatcherIndices[] = { /* [126] */ 0, /* [127] */ 15, /* [128] */ 2, - /* [129] */ 14, - /* [130] */ 25, - /* [131] */ 23, - /* [132] */ 22, - /* [133] */ 24, + /* [129] */ 25, + /* [130] */ 23, + /* [131] */ 22, + /* [132] */ 24, + /* [133] */ 14, /* [134] */ 26, /* [135] */ 13, /* [136] */ 31, @@ -1790,7 +1790,7 @@ constexpr ParameterInfo kParameters[] = { { /* [0] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[93], + /* matcher indices */ &kMatcherIndices[91], }, { /* [1] */ @@ -1800,7 +1800,7 @@ constexpr ParameterInfo kParameters[] = { { /* [2] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[85], }, { /* [3] */ @@ -1810,22 +1810,22 @@ constexpr ParameterInfo kParameters[] = { { /* [4] */ /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[85], }, { /* [5] */ /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[85], }, { /* [6] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[83], }, { /* [7] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[95], }, { /* [8] */ @@ -1835,27 +1835,27 @@ constexpr ParameterInfo kParameters[] = { { /* [9] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[85], }, { /* [10] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[85], }, { /* [11] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[85], }, { /* [12] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[83], }, { /* [13] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[101], + /* matcher indices */ &kMatcherIndices[91], }, { /* [14] */ @@ -1865,7 +1865,7 @@ constexpr ParameterInfo kParameters[] = { { /* [15] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[85], }, { /* [16] */ @@ -1874,18 +1874,18 @@ constexpr ParameterInfo kParameters[] = { }, { /* [17] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[12], }, { /* [18] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[83], }, { /* [19] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[93], + /* matcher indices */ &kMatcherIndices[91], }, { /* [20] */ @@ -1895,7 +1895,7 @@ constexpr ParameterInfo kParameters[] = { { /* [21] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[85], }, { /* [22] */ @@ -1910,22 +1910,22 @@ constexpr ParameterInfo kParameters[] = { { /* [24] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[83], }, { /* [25] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[93], + /* matcher indices */ &kMatcherIndices[130], }, { /* [26] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* matcher indices */ &kMatcherIndices[133], }, { /* [27] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[85], }, { /* [28] */ @@ -1934,48 +1934,48 @@ constexpr ParameterInfo kParameters[] = { }, { /* [29] */ - /* usage */ ParameterUsage::kLevel, + /* usage */ ParameterUsage::kDepthRef, /* matcher indices */ &kMatcherIndices[12], }, { /* [30] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[83], }, { /* [31] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[93], + /* usage */ ParameterUsage::kComponent, + /* matcher indices */ &kMatcherIndices[55], }, { /* [32] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[117], + }, + { + /* [33] */ /* usage */ ParameterUsage::kSampler, /* matcher indices */ &kMatcherIndices[135], }, { - /* [33] */ + /* [34] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[85], }, { - /* [34] */ + /* [35] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[55], }, - { - /* [35] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[89], - }, { /* [36] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[89], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[83], }, { /* [37] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[99], + /* matcher indices */ &kMatcherIndices[87], }, { /* [38] */ @@ -2000,17 +2000,17 @@ constexpr ParameterInfo kParameters[] = { { /* [42] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[93], }, { /* [43] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[99], }, { /* [44] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[135], }, { /* [45] */ @@ -2024,58 +2024,58 @@ constexpr ParameterInfo kParameters[] = { }, { /* [47] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [48] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], - }, - { - /* [49] */ - /* usage */ ParameterUsage::kComponent, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [50] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[117], - }, - { - /* [51] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], - }, - { - /* [52] */ - /* usage */ ParameterUsage::kCoords, + /* usage */ ParameterUsage::kDdx, /* matcher indices */ &kMatcherIndices[89], }, { - /* [53] */ + /* [48] */ + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[89], + }, + { + /* [49] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[130], + }, + { + /* [50] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[133], + }, + { + /* [51] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[85], + }, + { + /* [52] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[55], }, + { + /* [53] */ + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], + }, { /* [54] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[83], }, { /* [55] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[91], }, { /* [56] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[135], }, { /* [57] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[85], }, { /* [58] */ @@ -2084,28 +2084,28 @@ constexpr ParameterInfo kParameters[] = { }, { /* [59] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[85], }, { /* [60] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[85], }, { /* [61] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[130], }, { /* [62] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[133], }, { /* [63] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[85], }, { /* [64] */ @@ -2120,12 +2120,12 @@ constexpr ParameterInfo kParameters[] = { { /* [66] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[83], }, { /* [67] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[130], }, { /* [68] */ @@ -2135,127 +2135,127 @@ constexpr ParameterInfo kParameters[] = { { /* [69] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[85], }, { /* [70] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [71] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [72] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[95], + /* matcher indices */ &kMatcherIndices[83], }, { /* [73] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[95], }, { /* [74] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[135], }, { /* [75] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[85], }, { /* [76] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[85], }, { /* [77] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[85], }, { /* [78] */ - /* usage */ ParameterUsage::kComponent, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[129], }, { /* [79] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[125], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[133], }, { /* [80] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[89], }, { /* [81] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [82] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], }, { /* [83] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[91], }, { /* [84] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[135], }, { /* [85] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[85], }, { /* [86] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [87] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], - }, - { - /* [88] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], - }, - { - /* [89] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [90] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], - }, - { - /* [91] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[55], }, + { + /* [87] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[83], + }, + { + /* [88] */ + /* usage */ ParameterUsage::kComponent, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [89] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[125], + }, + { + /* [90] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], + }, + { + /* [91] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[89], + }, { /* [92] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [93] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[87], }, { /* [94] */ @@ -2269,53 +2269,53 @@ constexpr ParameterInfo kParameters[] = { }, { /* [96] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[89], }, { /* [97] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[89], }, { /* [98] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[130], }, { /* [99] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[133], }, { /* [100] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[85], }, { /* [101] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [102] */ /* usage */ ParameterUsage::kDepthRef, /* matcher indices */ &kMatcherIndices[12], }, - { - /* [102] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], - }, { /* [103] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[130], }, { /* [104] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[135], }, { /* [105] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[85], }, { /* [106] */ @@ -2324,18 +2324,18 @@ constexpr ParameterInfo kParameters[] = { }, { /* [107] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[83], }, { /* [108] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[129], }, { /* [109] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[133], }, { /* [110] */ @@ -2344,53 +2344,53 @@ constexpr ParameterInfo kParameters[] = { }, { /* [111] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [112] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], - }, - { - /* [113] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[101], - }, - { - /* [114] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], - }, - { - /* [115] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], - }, - { - /* [116] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[55], }, { - /* [117] */ - /* usage */ ParameterUsage::kBias, + /* [112] */ + /* usage */ ParameterUsage::kDepthRef, /* matcher indices */ &kMatcherIndices[12], }, + { + /* [113] */ + /* usage */ ParameterUsage::kComponent, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [114] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[117], + }, + { + /* [115] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], + }, + { + /* [116] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[85], + }, + { + /* [117] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], + }, { /* [118] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[130], }, { /* [119] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[133], }, { /* [120] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[85], }, { /* [121] */ @@ -2404,43 +2404,43 @@ constexpr ParameterInfo kParameters[] = { }, { /* [123] */ - /* usage */ ParameterUsage::kComponent, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[97], }, { /* [124] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[117], - }, - { - /* [125] */ /* usage */ ParameterUsage::kSampler, /* matcher indices */ &kMatcherIndices[135], }, { - /* [126] */ + /* [125] */ /* usage */ ParameterUsage::kCoords, /* matcher indices */ &kMatcherIndices[89], }, + { + /* [126] */ + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[89], + }, { /* [127] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[89], }, { /* [128] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[129], }, { /* [129] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[133], }, { /* [130] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[89], }, { /* [131] */ @@ -2455,7 +2455,7 @@ constexpr ParameterInfo kParameters[] = { { /* [133] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[95], }, { /* [134] */ @@ -2465,72 +2465,72 @@ constexpr ParameterInfo kParameters[] = { { /* [135] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[85], }, { /* [136] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [137] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [138] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], - }, - { - /* [139] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [140] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], - }, - { - /* [141] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [142] */ - /* usage */ ParameterUsage::kDepthRef, + /* usage */ ParameterUsage::kBias, /* matcher indices */ &kMatcherIndices[12], }, { - /* [143] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[99], + /* [137] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[83], }, { - /* [144] */ + /* [138] */ + /* usage */ ParameterUsage::kComponent, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [139] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[115], + }, + { + /* [140] */ /* usage */ ParameterUsage::kSampler, /* matcher indices */ &kMatcherIndices[135], }, + { + /* [141] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[85], + }, + { + /* [142] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[83], + }, + { + /* [143] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[130], + }, + { + /* [144] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[133], + }, { /* [145] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[85], }, { /* [146] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[89], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [147] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[89], + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], }, { /* [148] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[95], }, { /* [149] */ @@ -2540,22 +2540,22 @@ constexpr ParameterInfo kParameters[] = { { /* [150] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[85], }, { /* [151] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[12], }, { /* [152] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[83], }, { /* [153] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[87], }, { /* [154] */ @@ -2569,18 +2569,18 @@ constexpr ParameterInfo kParameters[] = { }, { /* [156] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kBias, + /* matcher indices */ &kMatcherIndices[12], }, { /* [157] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[93], }, { /* [158] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[130], }, { /* [159] */ @@ -2590,7 +2590,7 @@ constexpr ParameterInfo kParameters[] = { { /* [160] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[85], }, { /* [161] */ @@ -2600,87 +2600,87 @@ constexpr ParameterInfo kParameters[] = { { /* [162] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[83], }, { /* [163] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[101], + /* matcher indices */ &kMatcherIndices[131], }, { /* [164] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* matcher indices */ &kMatcherIndices[133], }, { /* [165] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[85], }, { /* [166] */ + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [167] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[83], + }, + { + /* [168] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [169] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], + }, + { + /* [170] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[85], + }, + { + /* [171] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[55], }, { - /* [167] */ + /* [172] */ /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[12], }, - { - /* [168] */ - /* usage */ ParameterUsage::kComponent, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [169] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[115], - }, - { - /* [170] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], - }, - { - /* [171] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], - }, - { - /* [172] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], - }, { /* [173] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[131], }, { /* [174] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* matcher indices */ &kMatcherIndices[133], }, { /* [175] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[85], }, { /* [176] */ - /* usage */ ParameterUsage::kLevel, + /* usage */ ParameterUsage::kDepthRef, /* matcher indices */ &kMatcherIndices[12], }, { /* [177] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[95], + /* matcher indices */ &kMatcherIndices[83], }, { /* [178] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[99], }, { /* [179] */ @@ -2690,22 +2690,22 @@ constexpr ParameterInfo kParameters[] = { { /* [180] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[89], }, { /* [181] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [182] */ /* usage */ ParameterUsage::kBias, /* matcher indices */ &kMatcherIndices[12], }, - { - /* [182] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[95], - }, { /* [183] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[93], + /* matcher indices */ &kMatcherIndices[87], }, { /* [184] */ @@ -2719,18 +2719,18 @@ constexpr ParameterInfo kParameters[] = { }, { /* [186] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[12], }, { /* [187] */ - /* usage */ ParameterUsage::kBias, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[93], }, { /* [188] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[93], + /* matcher indices */ &kMatcherIndices[91], }, { /* [189] */ @@ -2740,7 +2740,7 @@ constexpr ParameterInfo kParameters[] = { { /* [190] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[85], }, { /* [191] */ @@ -2749,7 +2749,7 @@ constexpr ParameterInfo kParameters[] = { }, { /* [192] */ - /* usage */ ParameterUsage::kLevel, + /* usage */ ParameterUsage::kBias, /* matcher indices */ &kMatcherIndices[12], }, { @@ -2769,43 +2769,43 @@ constexpr ParameterInfo kParameters[] = { }, { /* [196] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [197] */ /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[12], }, - { - /* [197] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], - }, { /* [198] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[131], }, { /* [199] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* matcher indices */ &kMatcherIndices[133], }, { /* [200] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[85], }, { /* [201] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], }, { /* [202] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[83], }, { /* [203] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[99], + /* matcher indices */ &kMatcherIndices[129], }, { /* [204] */ @@ -2819,18 +2819,18 @@ constexpr ParameterInfo kParameters[] = { }, { /* [206] */ - /* usage */ ParameterUsage::kBias, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [207] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [208] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[97], + /* matcher indices */ &kMatcherIndices[131], }, { /* [209] */ @@ -2840,22 +2840,22 @@ constexpr ParameterInfo kParameters[] = { { /* [210] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[85], }, { /* [211] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [212] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[83], }, { /* [213] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[93], + /* matcher indices */ &kMatcherIndices[130], }, { /* [214] */ @@ -2865,7 +2865,7 @@ constexpr ParameterInfo kParameters[] = { { /* [215] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[85], }, { /* [216] */ @@ -2874,33 +2874,33 @@ constexpr ParameterInfo kParameters[] = { }, { /* [217] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [218] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[99], + /* matcher indices */ &kMatcherIndices[131], }, { /* [219] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* matcher indices */ &kMatcherIndices[133], }, { /* [220] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[85], }, { /* [221] */ - /* usage */ ParameterUsage::kLevel, + /* usage */ ParameterUsage::kDepthRef, /* matcher indices */ &kMatcherIndices[12], }, { /* [222] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[132], }, { /* [223] */ @@ -2910,17 +2910,17 @@ constexpr ParameterInfo kParameters[] = { { /* [224] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[89], }, { /* [225] */ /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[55], }, { /* [226] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[97], + /* matcher indices */ &kMatcherIndices[131], }, { /* [227] */ @@ -2930,17 +2930,17 @@ constexpr ParameterInfo kParameters[] = { { /* [228] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[85], }, { /* [229] */ /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[55], }, { /* [230] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[129], }, { /* [231] */ @@ -2954,13 +2954,13 @@ constexpr ParameterInfo kParameters[] = { }, { /* [233] */ - /* usage */ ParameterUsage::kLevel, + /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[55], }, { /* [234] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[99], + /* matcher indices */ &kMatcherIndices[97], }, { /* [235] */ @@ -2974,13 +2974,13 @@ constexpr ParameterInfo kParameters[] = { }, { /* [237] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[12], }, { /* [238] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* matcher indices */ &kMatcherIndices[129], }, { /* [239] */ @@ -2990,77 +2990,77 @@ constexpr ParameterInfo kParameters[] = { { /* [240] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[89], }, { /* [241] */ - /* usage */ ParameterUsage::kLevel, + /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[55], }, { /* [242] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* matcher indices */ &kMatcherIndices[87], }, { /* [243] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[135], }, { /* [244] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[89], }, { /* [245] */ - /* usage */ ParameterUsage::kDepthRef, + /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[12], }, { /* [246] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[97], }, { /* [247] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], }, { /* [248] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [249] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[83], - }, - { - /* [250] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], - }, - { - /* [251] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [252] */ /* usage */ ParameterUsage::kCoords, /* matcher indices */ &kMatcherIndices[89], }, { - /* [253] */ - /* usage */ ParameterUsage::kDepthRef, + /* [249] */ + /* usage */ ParameterUsage::kBias, /* matcher indices */ &kMatcherIndices[12], }, + { + /* [250] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[69], + }, + { + /* [251] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], + }, + { + /* [252] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [253] */ + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[81], + }, { /* [254] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[93], + /* matcher indices */ &kMatcherIndices[87], }, { /* [255] */ @@ -3074,13 +3074,13 @@ constexpr ParameterInfo kParameters[] = { }, { /* [257] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kBias, + /* matcher indices */ &kMatcherIndices[12], }, { /* [258] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[95], }, { /* [259] */ @@ -3090,37 +3090,37 @@ constexpr ParameterInfo kParameters[] = { { /* [260] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[85], }, { /* [261] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[12], }, { /* [262] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[57], }, { /* [263] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], }, { /* [264] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [265] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[107], }, { /* [266] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[97], + /* matcher indices */ &kMatcherIndices[95], }, { /* [267] */ @@ -3130,7 +3130,7 @@ constexpr ParameterInfo kParameters[] = { { /* [268] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[85], }, { /* [269] */ @@ -3140,32 +3140,32 @@ constexpr ParameterInfo kParameters[] = { { /* [270] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[45], }, { /* [271] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], }, { /* [272] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [273] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[95], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[109], }, { /* [274] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[132], }, { /* [275] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* matcher indices */ &kMatcherIndices[133], }, { /* [276] */ @@ -3174,23 +3174,23 @@ constexpr ParameterInfo kParameters[] = { }, { /* [277] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], }, { /* [278] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* matcher indices */ &kMatcherIndices[131], }, { /* [279] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[133], }, { /* [280] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[85], }, { /* [281] */ @@ -3200,267 +3200,267 @@ constexpr ParameterInfo kParameters[] = { { /* [282] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[57], + /* matcher indices */ &kMatcherIndices[130], }, { /* [283] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], }, { /* [284] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[85], }, { /* [285] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[109], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [286] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], - }, - { - /* [287] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], - }, - { - /* [288] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], - }, - { - /* [289] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], - }, - { - /* [290] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[45], - }, - { - /* [291] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], - }, - { - /* [292] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [293] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[111], - }, - { - /* [294] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], - }, - { - /* [295] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [296] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], - }, - { - /* [297] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [298] */ - /* usage */ ParameterUsage::kComponent, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [299] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[123], - }, - { - /* [300] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], - }, - { - /* [301] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], - }, - { - /* [302] */ - /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[117], }, { - /* [303] */ + /* [287] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[83], }, { - /* [304] */ + /* [288] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[55], }, { - /* [305] */ + /* [289] */ /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[55], }, { - /* [306] */ - /* usage */ ParameterUsage::kComponent, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [307] */ + /* [290] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[115], + /* matcher indices */ &kMatcherIndices[131], }, { - /* [308] */ + /* [291] */ /* usage */ ParameterUsage::kSampler, /* matcher indices */ &kMatcherIndices[135], }, { - /* [309] */ + /* [292] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[85], + }, + { + /* [293] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[83], + }, + { + /* [294] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[130], + }, + { + /* [295] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], + }, + { + /* [296] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[85], + }, + { + /* [297] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [298] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[99], + }, + { + /* [299] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], + }, + { + /* [300] */ /* usage */ ParameterUsage::kCoords, /* matcher indices */ &kMatcherIndices[89], }, { - /* [310] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[85], + /* [301] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { - /* [311] */ + /* [302] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[87], + }, + { + /* [303] */ /* usage */ ParameterUsage::kSampler, /* matcher indices */ &kMatcherIndices[135], }, + { + /* [304] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[89], + }, + { + /* [305] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[93], + }, + { + /* [306] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[130], + }, + { + /* [307] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], + }, + { + /* [308] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [309] */ + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [310] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[132], + }, + { + /* [311] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[133], + }, { /* [312] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[89], }, { /* [313] */ - /* usage */ ParameterUsage::kBias, + /* usage */ ParameterUsage::kDepthRef, /* matcher indices */ &kMatcherIndices[12], }, { /* [314] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[91], }, { /* [315] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], }, { /* [316] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[85], }, { /* [317] */ - /* usage */ ParameterUsage::kLevel, + /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[55], }, { /* [318] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[101], - }, - { - /* [319] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], - }, - { - /* [320] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], - }, - { - /* [321] */ - /* usage */ ParameterUsage::kArrayIndex, + /* usage */ ParameterUsage::kComponent, /* matcher indices */ &kMatcherIndices[55], }, { - /* [322] */ + /* [319] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* matcher indices */ &kMatcherIndices[123], }, { - /* [323] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [324] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], - }, - { - /* [325] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [326] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[99], - }, - { - /* [327] */ + /* [320] */ /* usage */ ParameterUsage::kSampler, /* matcher indices */ &kMatcherIndices[135], }, { - /* [328] */ + /* [321] */ /* usage */ ParameterUsage::kCoords, /* matcher indices */ &kMatcherIndices[89], }, + { + /* [322] */ + /* usage */ ParameterUsage::kComponent, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [323] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[115], + }, + { + /* [324] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], + }, + { + /* [325] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[85], + }, + { + /* [326] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[131], + }, + { + /* [327] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[133], + }, + { + /* [328] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[85], + }, { /* [329] */ - /* usage */ ParameterUsage::kBias, + /* usage */ ParameterUsage::kDepthRef, /* matcher indices */ &kMatcherIndices[12], }, { /* [330] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[132], }, { /* [331] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* matcher indices */ &kMatcherIndices[133], }, { /* [332] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[89], }, { /* [333] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], }, { /* [334] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[131], }, { /* [335] */ @@ -3470,17 +3470,17 @@ constexpr ParameterInfo kParameters[] = { { /* [336] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[85], }, { /* [337] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[83], }, { /* [338] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[95], }, { /* [339] */ @@ -3490,32 +3490,32 @@ constexpr ParameterInfo kParameters[] = { { /* [340] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[85], }, { /* [341] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[83], }, { /* [342] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[54], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [343] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[95], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [344] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[109], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [345] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* matcher indices */ &kMatcherIndices[136], }, { /* [346] */ @@ -3525,242 +3525,242 @@ constexpr ParameterInfo kParameters[] = { { /* [347] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[85], }, { /* [348] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [349] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [350] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [351] */ /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[132], }, { - /* [349] */ + /* [352] */ /* usage */ ParameterUsage::kSampler, /* matcher indices */ &kMatcherIndices[135], }, { - /* [350] */ + /* [353] */ /* usage */ ParameterUsage::kCoords, /* matcher indices */ &kMatcherIndices[89], }, - { - /* [351] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], - }, - { - /* [352] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [353] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, { /* [354] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[97], + /* matcher indices */ &kMatcherIndices[72], }, { /* [355] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], }, { /* [356] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[81], }, { /* [357] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [358] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [359] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [360] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[66], }, { /* [361] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[93], }, { /* [362] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[81], }, { /* [363] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[63], }, { /* [364] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [365] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [366] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], - }, - { - /* [367] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], - }, - { - /* [368] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], - }, - { - /* [369] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], - }, - { - /* [370] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], - }, - { - /* [371] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[24], - }, - { - /* [372] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[99], - }, - { - /* [373] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], - }, - { - /* [374] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], - }, - { - /* [375] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[127], - }, - { - /* [376] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], - }, - { - /* [377] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [378] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[136], - }, - { - /* [379] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], - }, - { - /* [380] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], - }, - { - /* [381] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[75], - }, - { - /* [382] */ /* usage */ ParameterUsage::kCoords, /* matcher indices */ &kMatcherIndices[55], }, + { + /* [365] */ + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[107], + }, + { + /* [366] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[60], + }, + { + /* [367] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], + }, + { + /* [368] */ + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[107], + }, + { + /* [369] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[54], + }, + { + /* [370] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[93], + }, + { + /* [371] */ + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[107], + }, + { + /* [372] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[0], + }, + { + /* [373] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], + }, + { + /* [374] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], + }, + { + /* [375] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[51], + }, + { + /* [376] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [377] */ + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[109], + }, + { + /* [378] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[48], + }, + { + /* [379] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], + }, + { + /* [380] */ + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[109], + }, + { + /* [381] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[42], + }, + { + /* [382] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[93], + }, { /* [383] */ /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[83], + /* matcher indices */ &kMatcherIndices[109], }, { /* [384] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[72], + /* matcher indices */ &kMatcherIndices[111], }, { /* [385] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[55], }, { /* [386] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[83], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [387] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[115], }, { /* [388] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], }, { /* [389] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [390] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[127], }, { /* [391] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], }, { /* [392] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[12], }, { /* [393] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [394] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [395] */ @@ -3769,53 +3769,53 @@ constexpr ParameterInfo kParameters[] = { }, { /* [396] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[66], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [397] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[95], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [398] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[83], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [399] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[21], }, { /* [400] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[21], }, { /* [401] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[12], }, { /* [402] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[21], }, { /* [403] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[21], }, { /* [404] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[21], }, { /* [405] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* matcher indices */ &kMatcherIndices[132], }, { /* [406] */ @@ -3825,57 +3825,57 @@ constexpr ParameterInfo kParameters[] = { { /* [407] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[89], }, { /* [408] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[63], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[39], }, { /* [409] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[39], }, { /* [410] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[109], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[39], }, { /* [411] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[60], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [412] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [413] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[109], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [414] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[51], + /* matcher indices */ &kMatcherIndices[119], }, { /* [415] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[55], + /* matcher indices */ &kMatcherIndices[93], }, { /* [416] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[111], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [417] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[131], }, { /* [418] */ @@ -3885,77 +3885,77 @@ constexpr ParameterInfo kParameters[] = { { /* [419] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[85], }, { /* [420] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[48], + /* matcher indices */ &kMatcherIndices[121], }, { /* [421] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[83], }, { /* [422] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[111], + /* usage */ ParameterUsage::kSampleIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [423] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[42], + /* matcher indices */ &kMatcherIndices[97], }, { /* [424] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[95], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], }, { /* [425] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[111], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[89], }, { /* [426] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[95], }, { /* [427] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], }, { /* [428] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[85], }, { /* [429] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[115], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[39], }, { /* [430] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[39], }, { /* [431] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[24], }, { /* [432] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[119], + /* matcher indices */ &kMatcherIndices[131], }, { /* [433] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[95], + /* matcher indices */ &kMatcherIndices[83], }, { /* [434] */ @@ -3964,118 +3964,118 @@ constexpr ParameterInfo kParameters[] = { }, { /* [435] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[87], }, { /* [436] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], }, { /* [437] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[89], }, { /* [438] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[121], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [439] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [440] */ - /* usage */ ParameterUsage::kSampleIndex, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [441] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], - }, - { - /* [442] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], - }, - { - /* [443] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [444] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], - }, - { - /* [445] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], - }, - { - /* [446] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], - }, - { - /* [447] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [448] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [449] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [450] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[134], - }, - { - /* [451] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], - }, - { - /* [452] */ - /* usage */ ParameterUsage::kSampleIndex, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [453] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], - }, - { - /* [454] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], - }, - { - /* [455] */ /* usage */ ParameterUsage::kNone, /* matcher indices */ &kMatcherIndices[10], }, + { + /* [441] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [442] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [443] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [444] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[134], + }, + { + /* [445] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], + }, + { + /* [446] */ + /* usage */ ParameterUsage::kSampleIndex, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [447] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[131], + }, + { + /* [448] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], + }, + { + /* [449] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[85], + }, + { + /* [450] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [451] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [452] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [453] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[75], + }, + { + /* [454] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [455] */ + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[81], + }, { /* [456] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[39], }, { /* [457] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[39], }, { /* [458] */ @@ -4084,48 +4084,48 @@ constexpr ParameterInfo kParameters[] = { }, { /* [459] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[125], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], }, { /* [460] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], }, { /* [461] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[21], }, { /* [462] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[21], }, { /* [463] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[12], }, { /* [464] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[12], }, { /* [465] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[39], }, { /* [466] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[39], }, { /* [467] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[1], }, { /* [468] */ @@ -4135,17 +4135,17 @@ constexpr ParameterInfo kParameters[] = { { /* [469] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[39], }, { /* [470] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[39], }, { /* [471] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[1], }, { /* [472] */ @@ -4155,42 +4155,42 @@ constexpr ParameterInfo kParameters[] = { { /* [473] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[21], }, { /* [474] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[78], }, { /* [475] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[136], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], }, { /* [476] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[55], }, { /* [477] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[123], }, { /* [478] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [479] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[39], }, { /* [480] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[39], }, { /* [481] */ @@ -4205,12 +4205,12 @@ constexpr ParameterInfo kParameters[] = { { /* [483] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[12], }, { /* [484] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[12], }, { /* [485] */ @@ -4225,12 +4225,12 @@ constexpr ParameterInfo kParameters[] = { { /* [487] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[0], }, { /* [488] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[1], }, { /* [489] */ @@ -4245,47 +4245,47 @@ constexpr ParameterInfo kParameters[] = { { /* [491] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[89], }, { /* [492] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[89], }, { /* [493] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[21], }, { /* [494] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[21], }, { /* [495] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[125], }, { /* [496] */ - /* usage */ ParameterUsage::kNone, + /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[55], }, { /* [497] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[136], }, { /* [498] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[78], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[83], }, { /* [499] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[0], }, { /* [500] */ @@ -4295,37 +4295,37 @@ constexpr ParameterInfo kParameters[] = { { /* [501] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[0], }, { /* [502] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[1], }, { /* [503] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[0], }, { /* [504] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [505] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[119], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[0], }, { /* [506] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [507] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[0], }, { /* [508] */ @@ -4344,38 +4344,38 @@ constexpr ParameterInfo kParameters[] = { }, { /* [511] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[129], }, { /* [512] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], - }, - { - /* [513] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[81], - }, - { - /* [514] */ /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[55], }, { - /* [515] */ + /* [513] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[0], + }, + { + /* [514] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], + }, + { + /* [515] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[132], }, { /* [516] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [517] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[115], + /* matcher indices */ &kMatcherIndices[111], }, { /* [518] */ @@ -4384,18 +4384,18 @@ constexpr ParameterInfo kParameters[] = { }, { /* [519] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[130], }, { /* [520] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [521] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[117], + /* matcher indices */ &kMatcherIndices[115], }, { /* [522] */ @@ -4404,18 +4404,18 @@ constexpr ParameterInfo kParameters[] = { }, { /* [523] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[131], }, { /* [524] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [525] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[117], }, { /* [526] */ @@ -4424,18 +4424,18 @@ constexpr ParameterInfo kParameters[] = { }, { /* [527] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[0], }, { /* [528] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [529] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[123], + /* matcher indices */ &kMatcherIndices[119], }, { /* [530] */ @@ -4444,33 +4444,33 @@ constexpr ParameterInfo kParameters[] = { }, { /* [531] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [532] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [533] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[43], + /* matcher indices */ &kMatcherIndices[21], }, { /* [534] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[121], + /* matcher indices */ &kMatcherIndices[125], }, { /* [535] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[123], }, { /* [536] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[125], + /* matcher indices */ &kMatcherIndices[121], }, { /* [537] */ @@ -4480,112 +4480,112 @@ constexpr ParameterInfo kParameters[] = { { /* [538] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[123], + /* matcher indices */ &kMatcherIndices[117], }, { /* [539] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], - }, - { - /* [540] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [541] */ - /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[130], }, { - /* [542] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], - }, - { - /* [543] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[134], - }, - { - /* [544] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[36], - }, - { - /* [545] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[33], - }, - { - /* [546] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[27], - }, - { - /* [547] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[30], - }, - { - /* [548] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[136], - }, - { - /* [549] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [550] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[119], - }, - { - /* [551] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], - }, - { - /* [552] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [553] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[117], - }, - { - /* [554] */ + /* [540] */ /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[115], }, + { + /* [541] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[132], + }, + { + /* [542] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[111], + }, + { + /* [543] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[129], + }, + { + /* [544] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[43], + }, + { + /* [545] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[134], + }, + { + /* [546] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[36], + }, + { + /* [547] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[33], + }, + { + /* [548] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[30], + }, + { + /* [549] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[27], + }, + { + /* [550] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[136], + }, + { + /* [551] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[43], + }, + { + /* [552] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[43], + }, + { + /* [553] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[43], + }, + { + /* [554] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[43], + }, { /* [555] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[83], + /* matcher indices */ &kMatcherIndices[21], }, { /* [556] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[83], + /* matcher indices */ &kMatcherIndices[12], }, { /* [557] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[13], }, { /* [558] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[21], }, { /* [559] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[12], }, { /* [560] */ @@ -4595,102 +4595,102 @@ constexpr ParameterInfo kParameters[] = { { /* [561] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [562] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[21], }, { /* [563] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[81], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], }, { /* [564] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[43], + /* matcher indices */ &kMatcherIndices[21], }, { /* [565] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[43], + /* matcher indices */ &kMatcherIndices[12], }, { /* [566] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[43], - }, - { - /* [567] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[117], - }, - { - /* [568] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[125], - }, - { - /* [569] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], - }, - { - /* [570] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], - }, - { - /* [571] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[27], - }, - { - /* [572] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[81], - }, - { - /* [573] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[115], - }, - { - /* [574] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[117], - }, - { - /* [575] */ /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[119], }, { - /* [576] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[123], + /* [567] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { - /* [577] */ + /* [568] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [569] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[117], + }, + { + /* [570] */ /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[125], }, + { + /* [571] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[130], + }, + { + /* [572] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[129], + }, + { + /* [573] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[30], + }, + { + /* [574] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[111], + }, + { + /* [575] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[115], + }, + { + /* [576] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[117], + }, + { + /* [577] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[119], + }, { /* [578] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[123], }, { /* [579] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[125], }, { /* [580] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* matcher indices */ &kMatcherIndices[131], }, { /* [581] */ @@ -4700,32 +4700,32 @@ constexpr ParameterInfo kParameters[] = { { /* [582] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[121], + /* matcher indices */ &kMatcherIndices[132], }, { /* [583] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[129], }, { /* [584] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[43], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[121], }, { /* [585] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[134], }, { /* [586] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[21], }, { /* [587] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [588] */ @@ -4735,12 +4735,12 @@ constexpr ParameterInfo kParameters[] = { { /* [589] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[39], }, { /* [590] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[1], }, { /* [591] */ @@ -4755,32 +4755,32 @@ constexpr ParameterInfo kParameters[] = { { /* [593] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[81], }, { /* [594] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[81], }, { /* [595] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[85], }, { /* [596] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[85], }, { /* [597] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[85], }, { /* [598] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[21], }, { /* [599] */ @@ -4945,22 +4945,22 @@ constexpr ParameterInfo kParameters[] = { { /* [631] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[13], + /* matcher indices */ &kMatcherIndices[21], }, { /* [632] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [633] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[21], }, { /* [634] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[17], + /* matcher indices */ &kMatcherIndices[12], }, { /* [635] */ @@ -4980,42 +4980,42 @@ constexpr ParameterInfo kParameters[] = { { /* [638] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[12], }, { /* [639] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[21], }, { /* [640] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[12], }, { /* [641] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[21], }, { /* [642] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [643] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[21], }, { /* [644] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [645] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[17], }, { /* [646] */ @@ -5030,112 +5030,112 @@ constexpr ParameterInfo kParameters[] = { { /* [648] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[39], }, { /* [649] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[1], }, { /* [650] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[39], }, { /* [651] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[1], }, { /* [652] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[39], }, { /* [653] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[1], }, { /* [654] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[4], + /* matcher indices */ &kMatcherIndices[21], }, { /* [655] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[24], + /* matcher indices */ &kMatcherIndices[12], }, { /* [656] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[10], + /* matcher indices */ &kMatcherIndices[21], }, { /* [657] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[24], + /* matcher indices */ &kMatcherIndices[12], }, { /* [658] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[10], + /* matcher indices */ &kMatcherIndices[21], }, { /* [659] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [660] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[21], }, { /* [661] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[12], }, { /* [662] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[21], }, { /* [663] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[12], }, { /* [664] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[4], }, { /* [665] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[0], }, { /* [666] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[24], }, { /* [667] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[10], }, { /* [668] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[24], }, { /* [669] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[10], }, { /* [670] */ @@ -5145,6 +5145,16 @@ constexpr ParameterInfo kParameters[] = { { /* [671] */ /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [672] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[39], + }, + { + /* [673] */ + /* usage */ ParameterUsage::kNone, /* matcher indices */ &kMatcherIndices[1], }, }; @@ -5213,7 +5223,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[563], + /* parameters */ &kParameters[542], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5225,7 +5235,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[513], + /* parameters */ &kParameters[517], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5237,8 +5247,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[554], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[540], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5249,8 +5259,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[517], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[521], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5261,8 +5271,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[553], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[538], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5273,8 +5283,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[521], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[525], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5285,8 +5295,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[550], - /* return matcher indices */ &kMatcherIndices[95], + /* parameters */ &kParameters[566], + /* return matcher indices */ &kMatcherIndices[93], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5297,8 +5307,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[505], - /* return matcher indices */ &kMatcherIndices[95], + /* parameters */ &kParameters[529], + /* return matcher indices */ &kMatcherIndices[93], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5309,8 +5319,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[538], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[535], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5321,8 +5331,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[529], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[477], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5333,8 +5343,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[536], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[534], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5345,8 +5355,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[459], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[495], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5357,8 +5367,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[534], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[536], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5369,8 +5379,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[535], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[537], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5381,8 +5391,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[531], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[523], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5393,8 +5403,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[537], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[539], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5405,8 +5415,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[527], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[519], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5417,8 +5427,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[539], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[541], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5429,8 +5439,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[503], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[515], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5441,8 +5451,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[541], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[543], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5453,8 +5463,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[525], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[511], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5465,8 +5475,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[543], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[545], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5477,7 +5487,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 2, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[0], - /* parameters */ &kParameters[544], + /* parameters */ &kParameters[546], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5489,8 +5499,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 2, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[0], - /* parameters */ &kParameters[545], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[547], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5501,8 +5511,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 2, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[0], - /* parameters */ &kParameters[546], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[548], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5513,8 +5523,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 2, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[0], - /* parameters */ &kParameters[547], - /* return matcher indices */ &kMatcherIndices[95], + /* parameters */ &kParameters[549], + /* return matcher indices */ &kMatcherIndices[93], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5525,81 +5535,81 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[548], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[550], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [27] */ - /* num parameters */ 3, + /* num parameters */ 4, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[375], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* parameters */ &kParameters[258], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [28] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[372], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [29] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[234], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [30] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[254], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [31] */ /* num parameters */ 5, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[213], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* parameters */ &kParameters[148], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { - /* [32] */ - /* num parameters */ 3, + /* [29] */ + /* num parameters */ 5, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[360], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* parameters */ &kParameters[168], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [30] */ + /* num parameters */ 6, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[13], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [31] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[242], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [32] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[183], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { @@ -5609,21 +5619,21 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[270], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* parameters */ &kParameters[234], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [34] */ - /* num parameters */ 3, + /* num parameters */ 5, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[354], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* parameters */ &kParameters[193], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { @@ -5633,155 +5643,155 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[318], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* parameters */ &kParameters[226], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [36] */ - /* num parameters */ 3, + /* num parameters */ 5, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[348], + /* parameters */ &kParameters[208], /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [37] */ - /* num parameters */ 4, + /* num parameters */ 5, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[334], + /* parameters */ &kParameters[213], /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [38] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[338], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [39] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[158], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [40] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[345], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [41] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[330], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [42] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[218], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [43] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[193], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [44] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[188], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [45] */ /* num parameters */ 6, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[25], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[67], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { - /* [46] */ + /* [39] */ /* num parameters */ 4, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[222], - /* return matcher indices */ &kMatcherIndices[83], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { - /* [47] */ + /* [40] */ /* num parameters */ 5, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[173], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[203], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, + { + /* [41] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[345], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [42] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[390], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [43] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[426], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [44] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[338], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [45] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[314], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [46] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[83], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [47] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[435], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, { /* [48] */ /* num parameters */ 4, @@ -5789,21 +5799,21 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[226], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* parameters */ &kParameters[302], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, { /* [49] */ - /* num parameters */ 5, + /* num parameters */ 3, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[163], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* parameters */ &kParameters[423], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, { @@ -5813,81 +5823,81 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[230], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* parameters */ &kParameters[298], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, { /* [51] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[153], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [52] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[148], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [53] */ - /* num parameters */ 6, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[7], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [54] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[238], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [55] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[133], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [56] */ /* num parameters */ 3, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[378], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* parameters */ &kParameters[417], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [52] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[290], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [53] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[282], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [54] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[103], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [55] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[405], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [56] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[230], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, { @@ -5897,7 +5907,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[306], + /* parameters */ &kParameters[322], /* return matcher indices */ &kMatcherIndices[113], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5909,7 +5919,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[168], + /* parameters */ &kParameters[138], /* return matcher indices */ &kMatcherIndices[113], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5921,7 +5931,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[123], + /* parameters */ &kParameters[113], /* return matcher indices */ &kMatcherIndices[113], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5933,7 +5943,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[49], + /* parameters */ &kParameters[31], /* return matcher indices */ &kMatcherIndices[113], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5945,7 +5955,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[298], + /* parameters */ &kParameters[318], /* return matcher indices */ &kMatcherIndices[113], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5957,7 +5967,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[78], + /* parameters */ &kParameters[88], /* return matcher indices */ &kMatcherIndices[113], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5969,8 +5979,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[417], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[447], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5981,8 +5991,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[286], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[334], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5993,8 +6003,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[274], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[294], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6005,8 +6015,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[93], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[158], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6017,8 +6027,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[405], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[351], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6029,8 +6039,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[258], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[238], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6041,7 +6051,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[381], + /* parameters */ &kParameters[453], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6053,7 +6063,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[384], + /* parameters */ &kParameters[354], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6065,7 +6075,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[246], + /* parameters */ &kParameters[250], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6077,7 +6087,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[396], + /* parameters */ &kParameters[360], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6089,7 +6099,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[408], + /* parameters */ &kParameters[363], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6101,7 +6111,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[411], + /* parameters */ &kParameters[366], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6113,7 +6123,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[282], + /* parameters */ &kParameters[262], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6125,7 +6135,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[342], + /* parameters */ &kParameters[369], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6137,7 +6147,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[414], + /* parameters */ &kParameters[375], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6149,7 +6159,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[420], + /* parameters */ &kParameters[378], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6161,7 +6171,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[290], + /* parameters */ &kParameters[270], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6173,7 +6183,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[423], + /* parameters */ &kParameters[381], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6185,7 +6195,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[572], + /* parameters */ &kParameters[574], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6197,7 +6207,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[573], + /* parameters */ &kParameters[575], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6209,7 +6219,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[574], + /* parameters */ &kParameters[576], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6221,7 +6231,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[575], + /* parameters */ &kParameters[577], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6233,7 +6243,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[576], + /* parameters */ &kParameters[578], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6245,7 +6255,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[577], + /* parameters */ &kParameters[579], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6257,7 +6267,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[578], + /* parameters */ &kParameters[580], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6269,7 +6279,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[579], + /* parameters */ &kParameters[581], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6281,7 +6291,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[580], + /* parameters */ &kParameters[582], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6293,7 +6303,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[581], + /* parameters */ &kParameters[583], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6305,7 +6315,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[426], + /* parameters */ &kParameters[384], /* return matcher indices */ &kMatcherIndices[113], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6317,7 +6327,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[429], + /* parameters */ &kParameters[387], /* return matcher indices */ &kMatcherIndices[113], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6329,7 +6339,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[302], + /* parameters */ &kParameters[286], /* return matcher indices */ &kMatcherIndices[113], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6341,7 +6351,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[432], + /* parameters */ &kParameters[414], /* return matcher indices */ &kMatcherIndices[113], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6353,7 +6363,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[438], + /* parameters */ &kParameters[420], /* return matcher indices */ &kMatcherIndices[113], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6365,7 +6375,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[441], + /* parameters */ &kParameters[432], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6377,7 +6387,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[314], + /* parameters */ &kParameters[306], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6389,7 +6399,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[450], + /* parameters */ &kParameters[444], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6401,203 +6411,203 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[475], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[497], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [100] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[143], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [101] */ - /* num parameters */ 6, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[37], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [102] */ - /* num parameters */ 6, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[31], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [103] */ - /* num parameters */ 7, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[0], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [104] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[198], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [105] */ - /* num parameters */ 6, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[67], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [106] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[208], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [107] */ - /* num parameters */ 6, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[13], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [108] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[326], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [109] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[203], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [110] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[183], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [111] */ - /* num parameters */ 6, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[19], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [112] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[310], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [113] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[178], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), - /* is_deprecated */ false, - }, - { - /* [114] */ /* num parameters */ 4, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[266], - /* return matcher indices */ &kMatcherIndices[83], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, { - /* [115] */ + /* [101] */ /* num parameters */ 5, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[113], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[133], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, + { + /* [102] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[188], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [103] */ + /* num parameters */ 6, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[19], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [104] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[254], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [105] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[153], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [106] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[246], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [107] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[178], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [108] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[73], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [109] */ + /* num parameters */ 6, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[7], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [110] */ + /* num parameters */ 6, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[55], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [111] */ + /* num parameters */ 7, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[0], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [112] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[93], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [113] */ + /* num parameters */ 6, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[37], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [114] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[123], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [115] */ + /* num parameters */ 6, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[43], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, { /* [116] */ /* num parameters */ 4, @@ -6605,9 +6615,9 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[294], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* parameters */ &kParameters[218], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { @@ -6617,9 +6627,9 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[83], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* parameters */ &kParameters[163], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { @@ -6629,9 +6639,9 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[73], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* parameters */ &kParameters[118], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { @@ -6642,8 +6652,8 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[61], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { @@ -6653,37 +6663,121 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[274], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [121] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[108], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [122] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[278], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, { - /* [121] */ + /* [123] */ /* num parameters */ 5, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[88], + /* parameters */ &kParameters[198], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, { - /* [122] */ + /* [124] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[143], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [125] */ + /* num parameters */ 6, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[25], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [126] */ /* num parameters */ 4, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[262], + /* parameters */ &kParameters[330], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [127] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[128], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* is_deprecated */ false, + }, + { + /* [128] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[326], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { - /* [123] */ + /* [129] */ + /* num parameters */ 5, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[173], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [130] */ /* num parameters */ 5, /* num open types */ 0, /* num open numbers */ 0, @@ -6694,90 +6788,6 @@ constexpr OverloadInfo kOverloads[] = { /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, - { - /* [124] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[103], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [125] */ - /* num parameters */ 6, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[55], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [126] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[242], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [127] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[138], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [128] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[250], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [129] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[108], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [130] */ - /* num parameters */ 5, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[118], - /* return matcher indices */ &kMatcherIndices[83], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, { /* [131] */ /* num parameters */ 6, @@ -6785,8 +6795,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[43], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[49], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6797,8 +6807,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[322], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[310], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6809,8 +6819,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[128], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[78], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6821,7 +6831,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[567], + /* parameters */ &kParameters[569], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6833,7 +6843,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[568], + /* parameters */ &kParameters[570], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6845,7 +6855,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[569], + /* parameters */ &kParameters[571], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6857,7 +6867,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[570], + /* parameters */ &kParameters[572], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6869,7 +6879,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 2, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[0], - /* parameters */ &kParameters[571], + /* parameters */ &kParameters[573], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6881,7 +6891,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[3], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[456], + /* parameters */ &kParameters[438], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6893,7 +6903,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[3], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[453], + /* parameters */ &kParameters[456], /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6905,7 +6915,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[3], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[369], + /* parameters */ &kParameters[429], /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6917,7 +6927,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[387], + /* parameters */ &kParameters[393], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6929,7 +6939,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[390], + /* parameters */ &kParameters[342], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6941,7 +6951,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[393], + /* parameters */ &kParameters[399], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6953,7 +6963,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[647], + /* parameters */ &kParameters[556], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6965,7 +6975,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[646], + /* parameters */ &kParameters[555], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6977,7 +6987,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[633], + /* parameters */ &kParameters[647], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6989,13 +6999,37 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[632], + /* parameters */ &kParameters[646], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [149] */ + /* num parameters */ 1, + /* num open types */ 1, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[1], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[649], + /* return matcher indices */ &kMatcherIndices[1], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [150] */ + /* num parameters */ 1, + /* num open types */ 1, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[1], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[648], + /* return matcher indices */ &kMatcherIndices[39], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [151] */ /* num parameters */ 2, /* num open types */ 0, /* num open numbers */ 0, @@ -7007,63 +7041,39 @@ constexpr OverloadInfo kOverloads[] = { /* is_deprecated */ false, }, { - /* [150] */ + /* [152] */ /* num parameters */ 2, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[491], + /* parameters */ &kParameters[481], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, - { - /* [151] */ - /* num parameters */ 1, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[636], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [152] */ - /* num parameters */ 1, - /* num open types */ 0, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[635], - /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, { /* [153] */ /* num parameters */ 1, - /* num open types */ 0, + /* num open types */ 1, /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], + /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[630], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* parameters */ &kParameters[651], + /* return matcher indices */ &kMatcherIndices[1], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [154] */ /* num parameters */ 1, - /* num open types */ 0, + /* num open types */ 1, /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], + /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[629], - /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* parameters */ &kParameters[650], + /* return matcher indices */ &kMatcherIndices[39], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { @@ -7073,7 +7083,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[628], + /* parameters */ &kParameters[644], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -7085,7 +7095,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[627], + /* parameters */ &kParameters[643], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -7097,7 +7107,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[626], + /* parameters */ &kParameters[642], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -7109,7 +7119,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[625], + /* parameters */ &kParameters[641], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -7121,7 +7131,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[624], + /* parameters */ &kParameters[640], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -7133,7 +7143,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[623], + /* parameters */ &kParameters[639], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -7145,7 +7155,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[622], + /* parameters */ &kParameters[638], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -7157,7 +7167,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[621], + /* parameters */ &kParameters[637], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -7169,7 +7179,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[620], + /* parameters */ &kParameters[636], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -7181,7 +7191,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[619], + /* parameters */ &kParameters[635], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -7193,9 +7203,9 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[618], + /* parameters */ &kParameters[634], /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, { @@ -7205,9 +7215,9 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[617], + /* parameters */ &kParameters[633], /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, { @@ -7217,7 +7227,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[616], + /* parameters */ &kParameters[632], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7229,7 +7239,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[615], + /* parameters */ &kParameters[631], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7237,95 +7247,95 @@ constexpr OverloadInfo kOverloads[] = { { /* [169] */ /* num parameters */ 1, - /* num open types */ 1, + /* num open types */ 0, /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], + /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[639], - /* return matcher indices */ &kMatcherIndices[1], + /* parameters */ &kParameters[630], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [170] */ /* num parameters */ 1, - /* num open types */ 1, + /* num open types */ 0, /* num open numbers */ 1, - /* open types */ &kOpenTypes[1], + /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[638], - /* return matcher indices */ &kMatcherIndices[39], + /* parameters */ &kParameters[629], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [171] */ /* num parameters */ 1, - /* num open types */ 0, + /* num open types */ 1, /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], + /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[614], - /* return matcher indices */ &kMatcherIndices[12], + /* parameters */ &kParameters[653], + /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [172] */ /* num parameters */ 1, - /* num open types */ 0, + /* num open types */ 1, /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], + /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[613], - /* return matcher indices */ &kMatcherIndices[21], + /* parameters */ &kParameters[652], + /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [173] */ - /* num parameters */ 3, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[363], + /* parameters */ &kParameters[628], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [174] */ - /* num parameters */ 3, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[357], + /* parameters */ &kParameters[627], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [175] */ - /* num parameters */ 1, + /* num parameters */ 3, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[612], + /* parameters */ &kParameters[450], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [176] */ - /* num parameters */ 1, + /* num parameters */ 3, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[611], + /* parameters */ &kParameters[402], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7337,8 +7347,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[610], - /* return matcher indices */ &kMatcherIndices[138], + /* parameters */ &kParameters[626], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7349,8 +7359,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[609], - /* return matcher indices */ &kMatcherIndices[107], + /* parameters */ &kParameters[625], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7361,9 +7371,9 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[608], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* parameters */ &kParameters[624], + /* return matcher indices */ &kMatcherIndices[138], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { @@ -7373,9 +7383,9 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[607], - /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* parameters */ &kParameters[623], + /* return matcher indices */ &kMatcherIndices[105], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { @@ -7385,7 +7395,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[606], + /* parameters */ &kParameters[622], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -7397,7 +7407,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[605], + /* parameters */ &kParameters[621], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -7409,7 +7419,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[604], + /* parameters */ &kParameters[620], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -7421,7 +7431,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[603], + /* parameters */ &kParameters[619], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -7433,9 +7443,9 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[602], + /* parameters */ &kParameters[618], /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, { @@ -7445,9 +7455,9 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[601], + /* parameters */ &kParameters[617], /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, { @@ -7457,10 +7467,10 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[600], - /* return matcher indices */ &kMatcherIndices[10], + /* parameters */ &kParameters[616], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ true, + /* is_deprecated */ false, }, { /* [188] */ @@ -7469,10 +7479,10 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[599], - /* return matcher indices */ &kMatcherIndices[24], + /* parameters */ &kParameters[615], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ true, + /* is_deprecated */ false, }, { /* [189] */ @@ -7481,7 +7491,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[598], + /* parameters */ &kParameters[614], /* return matcher indices */ &kMatcherIndices[10], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ true, @@ -7493,7 +7503,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[597], + /* parameters */ &kParameters[613], /* return matcher indices */ &kMatcherIndices[24], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ true, @@ -7505,7 +7515,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[596], + /* parameters */ &kParameters[612], /* return matcher indices */ &kMatcherIndices[10], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ true, @@ -7517,7 +7527,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[595], + /* parameters */ &kParameters[611], /* return matcher indices */ &kMatcherIndices[24], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ true, @@ -7529,7 +7539,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[594], + /* parameters */ &kParameters[610], /* return matcher indices */ &kMatcherIndices[10], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ true, @@ -7541,56 +7551,56 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[593], + /* parameters */ &kParameters[609], /* return matcher indices */ &kMatcherIndices[24], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ true, }, { /* [195] */ - /* num parameters */ 2, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[495], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [196] */ - /* num parameters */ 2, - /* num open types */ 0, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[497], - /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [197] */ /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[590], + /* parameters */ &kParameters[608], + /* return matcher indices */ &kMatcherIndices[10], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ true, + }, + { + /* [196] */ + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[607], + /* return matcher indices */ &kMatcherIndices[24], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ true, + }, + { + /* [197] */ + /* num parameters */ 2, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[475], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [198] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[589], - /* return matcher indices */ &kMatcherIndices[12], + /* parameters */ &kParameters[473], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7601,7 +7611,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[588], + /* parameters */ &kParameters[606], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7613,8 +7623,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[587], - /* return matcher indices */ &kMatcherIndices[21], + /* parameters */ &kParameters[605], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7625,7 +7635,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[586], + /* parameters */ &kParameters[604], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7637,32 +7647,32 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[585], + /* parameters */ &kParameters[603], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [203] */ - /* num parameters */ 2, - /* num open types */ 1, + /* num parameters */ 1, + /* num open types */ 0, /* num open numbers */ 0, - /* open types */ &kOpenTypes[0], + /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[499], - /* return matcher indices */ &kMatcherIndices[1], + /* parameters */ &kParameters[602], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [204] */ - /* num parameters */ 2, - /* num open types */ 1, + /* num parameters */ 1, + /* num open types */ 0, /* num open numbers */ 1, - /* open types */ &kOpenTypes[0], + /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[501], - /* return matcher indices */ &kMatcherIndices[39], + /* parameters */ &kParameters[601], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7673,7 +7683,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[507], + /* parameters */ &kParameters[471], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7685,31 +7695,31 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[511], + /* parameters */ &kParameters[469], /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [207] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num open types */ 1, /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], + /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[641], + /* parameters */ &kParameters[467], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [208] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num open types */ 1, /* num open numbers */ 1, - /* open types */ &kOpenTypes[1], + /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[640], + /* parameters */ &kParameters[465], /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7721,8 +7731,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[562], - /* return matcher indices */ &kMatcherIndices[137], + /* parameters */ &kParameters[655], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7733,8 +7743,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[561], - /* return matcher indices */ &kMatcherIndices[103], + /* parameters */ &kParameters[654], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7745,8 +7755,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[643], - /* return matcher indices */ &kMatcherIndices[12], + /* parameters */ &kParameters[600], + /* return matcher indices */ &kMatcherIndices[137], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7757,8 +7767,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[642], - /* return matcher indices */ &kMatcherIndices[21], + /* parameters */ &kParameters[599], + /* return matcher indices */ &kMatcherIndices[101], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7769,7 +7779,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[645], + /* parameters */ &kParameters[657], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7781,7 +7791,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[644], + /* parameters */ &kParameters[656], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7793,7 +7803,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[402], + /* parameters */ &kParameters[411], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7805,68 +7815,68 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[399], + /* parameters */ &kParameters[408], /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [217] */ - /* num parameters */ 2, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[477], + /* parameters */ &kParameters[659], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [218] */ - /* num parameters */ 2, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[485], + /* parameters */ &kParameters[658], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [219] */ - /* num parameters */ 1, - /* num open types */ 1, + /* num parameters */ 3, + /* num open types */ 0, /* num open numbers */ 0, - /* open types */ &kOpenTypes[0], + /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[582], - /* return matcher indices */ &kMatcherIndices[55], + /* parameters */ &kParameters[357], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [220] */ - /* num parameters */ 1, + /* num parameters */ 3, /* num open types */ 0, - /* num open numbers */ 0, + /* num open numbers */ 1, /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[583], - /* return matcher indices */ &kMatcherIndices[55], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[348], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [221] */ /* num parameters */ 1, - /* num open types */ 0, + /* num open types */ 1, /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], + /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[651], - /* return matcher indices */ &kMatcherIndices[12], + /* parameters */ &kParameters[584], + /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7874,58 +7884,58 @@ constexpr OverloadInfo kOverloads[] = { /* [222] */ /* num parameters */ 1, /* num open types */ 0, - /* num open numbers */ 1, + /* num open numbers */ 0, /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[650], - /* return matcher indices */ &kMatcherIndices[21], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[585], + /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [223] */ - /* num parameters */ 2, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[515], + /* parameters */ &kParameters[559], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [224] */ - /* num parameters */ 2, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[519], + /* parameters */ &kParameters[558], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [225] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[552], + /* parameters */ &kParameters[463], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [226] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[551], + /* parameters */ &kParameters[461], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7937,7 +7947,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[653], + /* parameters */ &kParameters[592], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7949,80 +7959,80 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[652], + /* parameters */ &kParameters[591], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [229] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[656], - /* return matcher indices */ &kMatcherIndices[10], + /* parameters */ &kParameters[459], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [230] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[655], - /* return matcher indices */ &kMatcherIndices[10], + /* parameters */ &kParameters[493], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [231] */ /* num parameters */ 1, - /* num open types */ 1, + /* num open types */ 0, /* num open numbers */ 0, - /* open types */ &kOpenTypes[1], + /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[549], - /* return matcher indices */ &kMatcherIndices[1], + /* parameters */ &kParameters[661], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [232] */ /* num parameters */ 1, - /* num open types */ 1, + /* num open types */ 0, /* num open numbers */ 1, - /* open types */ &kOpenTypes[1], + /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[542], - /* return matcher indices */ &kMatcherIndices[39], + /* parameters */ &kParameters[660], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [233] */ /* num parameters */ 1, - /* num open types */ 0, + /* num open types */ 1, /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], + /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[664], - /* return matcher indices */ &kMatcherIndices[12], + /* parameters */ &kParameters[590], + /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [234] */ /* num parameters */ 1, - /* num open types */ 0, + /* num open types */ 1, /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], + /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[665], - /* return matcher indices */ &kMatcherIndices[21], + /* parameters */ &kParameters[589], + /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -8033,8 +8043,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[658], - /* return matcher indices */ &kMatcherIndices[10], + /* parameters */ &kParameters[588], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -8045,8 +8055,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[657], - /* return matcher indices */ &kMatcherIndices[10], + /* parameters */ &kParameters[533], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -8057,7 +8067,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[540], + /* parameters */ &kParameters[663], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8069,7 +8079,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[670], + /* parameters */ &kParameters[662], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8081,8 +8091,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[669], - /* return matcher indices */ &kMatcherIndices[12], + /* parameters */ &kParameters[667], + /* return matcher indices */ &kMatcherIndices[10], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -8093,8 +8103,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[668], - /* return matcher indices */ &kMatcherIndices[21], + /* parameters */ &kParameters[666], + /* return matcher indices */ &kMatcherIndices[10], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -8105,7 +8115,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[660], + /* parameters */ &kParameters[568], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8117,31 +8127,31 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[659], + /* parameters */ &kParameters[567], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [243] */ - /* num parameters */ 3, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[447], + /* parameters */ &kParameters[565], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [244] */ - /* num parameters */ 3, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[444], + /* parameters */ &kParameters[564], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8153,8 +8163,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[662], - /* return matcher indices */ &kMatcherIndices[12], + /* parameters */ &kParameters[669], + /* return matcher indices */ &kMatcherIndices[10], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -8165,55 +8175,55 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[649], - /* return matcher indices */ &kMatcherIndices[21], + /* parameters */ &kParameters[668], + /* return matcher indices */ &kMatcherIndices[10], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [247] */ - /* num parameters */ 2, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[479], + /* parameters */ &kParameters[563], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [248] */ - /* num parameters */ 2, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[481], + /* parameters */ &kParameters[562], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [249] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[592], + /* parameters */ &kParameters[483], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [250] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[591], + /* parameters */ &kParameters[485], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8225,7 +8235,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[648], + /* parameters */ &kParameters[671], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8237,7 +8247,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[637], + /* parameters */ &kParameters[670], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8249,7 +8259,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[667], + /* parameters */ &kParameters[561], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8261,7 +8271,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[666], + /* parameters */ &kParameters[560], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8269,48 +8279,48 @@ constexpr OverloadInfo kOverloads[] = { { /* [255] */ /* num parameters */ 1, - /* num open types */ 1, + /* num open types */ 0, /* num open numbers */ 0, - /* open types */ &kOpenTypes[0], + /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[671], - /* return matcher indices */ &kMatcherIndices[1], + /* parameters */ &kParameters[587], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [256] */ /* num parameters */ 1, - /* num open types */ 1, + /* num open types */ 0, /* num open numbers */ 1, - /* open types */ &kOpenTypes[0], + /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[661], - /* return matcher indices */ &kMatcherIndices[39], + /* parameters */ &kParameters[586], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [257] */ /* num parameters */ 1, - /* num open types */ 0, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[560], - /* return matcher indices */ &kMatcherIndices[21], + /* num open types */ 1, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[673], + /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [258] */ /* num parameters */ 1, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[584], - /* return matcher indices */ &kMatcherIndices[89], + /* num open types */ 1, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[672], + /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -8318,11 +8328,11 @@ constexpr OverloadInfo kOverloads[] = { /* [259] */ /* num parameters */ 1, /* num open types */ 0, - /* num open numbers */ 0, + /* num open numbers */ 2, /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[566], - /* return matcher indices */ &kMatcherIndices[89], + /* open numbers */ &kOpenNumbers[2], + /* parameters */ &kParameters[557], + /* return matcher indices */ &kMatcherIndices[9], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -8333,8 +8343,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[533], - /* return matcher indices */ &kMatcherIndices[89], + /* parameters */ &kParameters[554], + /* return matcher indices */ &kMatcherIndices[85], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -8345,8 +8355,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[565], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[553], + /* return matcher indices */ &kMatcherIndices[85], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -8357,92 +8367,92 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[564], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[552], + /* return matcher indices */ &kMatcherIndices[85], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [263] */ + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[551], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [264] */ + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[544], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [265] */ /* num parameters */ 0, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[672], + /* parameters */ &kParameters[674], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kCompute), /* is_deprecated */ false, }, { - /* [264] */ - /* num parameters */ 3, - /* num open types */ 1, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[1], - /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[351], - /* return matcher indices */ &kMatcherIndices[105], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), + /* [266] */ + /* num parameters */ 0, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[674], + /* return matcher indices */ nullptr, + /* supported_stages */ PipelineStageSet(PipelineStage::kCompute), /* is_deprecated */ false, }, { - /* [265] */ + /* [267] */ /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[557], + /* parameters */ &kParameters[595], /* return matcher indices */ &kMatcherIndices[43], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, - { - /* [266] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[435], - /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [267] */ - /* num parameters */ 2, - /* num open types */ 0, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[523], - /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, { /* [268] */ - /* num parameters */ 1, + /* num parameters */ 3, /* num open types */ 0, - /* num open numbers */ 0, + /* num open numbers */ 1, /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[555], - /* return matcher indices */ &kMatcherIndices[43], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[441], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [269] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num open types */ 0, - /* num open numbers */ 0, + /* num open numbers */ 1, /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[556], - /* return matcher indices */ &kMatcherIndices[43], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[531], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -8453,7 +8463,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[558], + /* parameters */ &kParameters[593], /* return matcher indices */ &kMatcherIndices[43], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8465,115 +8475,115 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[559], + /* parameters */ &kParameters[594], /* return matcher indices */ &kMatcherIndices[43], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [272] */ - /* num parameters */ 0, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[672], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kCompute), + /* parameters */ &kParameters[596], + /* return matcher indices */ &kMatcherIndices[43], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [273] */ - /* num parameters */ 3, + /* num parameters */ 1, /* num open types */ 0, - /* num open numbers */ 1, + /* num open numbers */ 0, /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[366], - /* return matcher indices */ &kMatcherIndices[21], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[597], + /* return matcher indices */ &kMatcherIndices[43], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [274] */ - /* num parameters */ 2, - /* num open types */ 1, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[0], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[493], - /* return matcher indices */ &kMatcherIndices[1], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [275] */ /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[634], - /* return matcher indices */ &kMatcherIndices[12], + /* parameters */ &kParameters[598], + /* return matcher indices */ &kMatcherIndices[21], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [275] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[396], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [276] */ /* num parameters */ 2, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[487], - /* return matcher indices */ &kMatcherIndices[91], + /* num open types */ 1, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[479], + /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [277] */ /* num parameters */ 1, - /* num open types */ 1, + /* num open types */ 0, /* num open numbers */ 1, - /* open types */ &kOpenTypes[2], - /* open numbers */ &kOpenNumbers[4], - /* parameters */ &kParameters[654], - /* return matcher indices */ &kMatcherIndices[43], + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[645], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [278] */ + /* num parameters */ 2, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[491], + /* return matcher indices */ &kMatcherIndices[89], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [279] */ + /* num parameters */ 1, + /* num open types */ 1, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[2], + /* open numbers */ &kOpenNumbers[4], + /* parameters */ &kParameters[664], + /* return matcher indices */ &kMatcherIndices[43], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [280] */ /* num parameters */ 1, /* num open types */ 1, /* num open numbers */ 1, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[663], - /* return matcher indices */ &kMatcherIndices[1], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [279] */ - /* num parameters */ 2, - /* num open types */ 1, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[1], - /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[473], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [280] */ - /* num parameters */ 2, - /* num open types */ 1, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[1], - /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[471], + /* parameters */ &kParameters[665], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8585,8 +8595,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[469], - /* return matcher indices */ &kMatcherIndices[1], + /* parameters */ &kParameters[499], + /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -8597,7 +8607,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[467], + /* parameters */ &kParameters[501], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8609,7 +8619,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[465], + /* parameters */ &kParameters[503], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8621,7 +8631,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[463], + /* parameters */ &kParameters[505], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8633,7 +8643,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[461], + /* parameters */ &kParameters[507], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8657,21 +8667,45 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[483], + /* parameters */ &kParameters[527], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [288] */ - /* num parameters */ 1, - /* num open types */ 0, - /* num open numbers */ 2, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[2], - /* parameters */ &kParameters[631], - /* return matcher indices */ &kMatcherIndices[9], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* num parameters */ 2, + /* num open types */ 1, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[1], + /* open numbers */ &kOpenNumbers[5], + /* parameters */ &kParameters[513], + /* return matcher indices */ &kMatcherIndices[1], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [289] */ + /* num parameters */ 2, + /* num open types */ 1, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[1], + /* open numbers */ &kOpenNumbers[5], + /* parameters */ &kParameters[487], + /* return matcher indices */ &kMatcherIndices[1], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [290] */ + /* num parameters */ 3, + /* num open types */ 1, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[1], + /* open numbers */ &kOpenNumbers[5], + /* parameters */ &kParameters[372], + /* return matcher indices */ &kMatcherIndices[103], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, }; @@ -8682,62 +8716,62 @@ constexpr BuiltinInfo kBuiltins[] = { /* fn abs(T) -> T */ /* fn abs(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[255], + /* overloads */ &kOverloads[257], }, { /* [1] */ /* fn acos(f32) -> f32 */ /* fn acos(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[241], + /* overloads */ &kOverloads[251], }, { /* [2] */ /* fn all(bool) -> bool */ /* fn all(vec) -> bool */ /* num overloads */ 2, - /* overloads */ &kOverloads[235], + /* overloads */ &kOverloads[245], }, { /* [3] */ /* fn any(bool) -> bool */ /* fn any(vec) -> bool */ /* num overloads */ 2, - /* overloads */ &kOverloads[229], + /* overloads */ &kOverloads[239], }, { /* [4] */ /* fn arrayLength(ptr, A>) -> u32 */ /* num overloads */ 1, - /* overloads */ &kOverloads[277], + /* overloads */ &kOverloads[279], }, { /* [5] */ /* fn asin(f32) -> f32 */ /* fn asin(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[227], + /* overloads */ &kOverloads[237], }, { /* [6] */ /* fn atan(f32) -> f32 */ /* fn atan(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[221], + /* overloads */ &kOverloads[231], }, { /* [7] */ /* fn atan2(f32, f32) -> f32 */ /* fn atan2(vec, vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[217], + /* overloads */ &kOverloads[229], }, { /* [8] */ /* fn ceil(f32) -> f32 */ /* fn ceil(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[145], + /* overloads */ &kOverloads[217], }, { /* [9] */ @@ -8758,244 +8792,251 @@ constexpr BuiltinInfo kBuiltins[] = { /* fn cosh(f32) -> f32 */ /* fn cosh(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[211], + /* overloads */ &kOverloads[209], }, { /* [12] */ /* fn countLeadingZeros(T) -> T */ /* fn countLeadingZeros(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[207], + /* overloads */ &kOverloads[171], }, { /* [13] */ /* fn countOneBits(T) -> T */ /* fn countOneBits(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[169], + /* overloads */ &kOverloads[153], }, { /* [14] */ - /* fn cross(vec3, vec3) -> vec3 */ - /* num overloads */ 1, - /* overloads */ &kOverloads[276], - }, - { - /* [15] */ - /* fn degrees(f32) -> f32 */ - /* fn degrees(vec) -> vec */ - /* num overloads */ 2, - /* overloads */ &kOverloads[151], - }, - { - /* [16] */ - /* fn determinant(mat) -> f32 */ - /* num overloads */ 1, - /* overloads */ &kOverloads[275], - }, - { - /* [17] */ - /* fn distance(f32, f32) -> f32 */ - /* fn distance(vec, vec) -> f32 */ + /* fn countTrailingZeros(T) -> T */ + /* fn countTrailingZeros(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[149], }, { - /* [18] */ - /* fn dot(vec, vec) -> T */ + /* [15] */ + /* fn cross(vec3, vec3) -> vec3 */ /* num overloads */ 1, - /* overloads */ &kOverloads[274], + /* overloads */ &kOverloads[278], + }, + { + /* [16] */ + /* fn degrees(f32) -> f32 */ + /* fn degrees(vec) -> vec */ + /* num overloads */ 2, + /* overloads */ &kOverloads[147], + }, + { + /* [17] */ + /* fn determinant(mat) -> f32 */ + /* num overloads */ 1, + /* overloads */ &kOverloads[277], + }, + { + /* [18] */ + /* fn distance(f32, f32) -> f32 */ + /* fn distance(vec, vec) -> f32 */ + /* num overloads */ 2, + /* overloads */ &kOverloads[151], }, { /* [19] */ - /* fn dpdx(f32) -> f32 */ - /* fn dpdx(vec) -> vec */ - /* num overloads */ 2, - /* overloads */ &kOverloads[153], + /* fn dot(vec, vec) -> T */ + /* num overloads */ 1, + /* overloads */ &kOverloads[276], }, { /* [20] */ - /* fn dpdxCoarse(f32) -> f32 */ - /* fn dpdxCoarse(vec) -> vec */ + /* fn dpdx(f32) -> f32 */ + /* fn dpdx(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[155], }, { /* [21] */ - /* fn dpdxFine(f32) -> f32 */ - /* fn dpdxFine(vec) -> vec */ + /* fn dpdxCoarse(f32) -> f32 */ + /* fn dpdxCoarse(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[157], }, { /* [22] */ - /* fn dpdy(f32) -> f32 */ - /* fn dpdy(vec) -> vec */ + /* fn dpdxFine(f32) -> f32 */ + /* fn dpdxFine(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[159], }, { /* [23] */ - /* fn dpdyCoarse(f32) -> f32 */ - /* fn dpdyCoarse(vec) -> vec */ + /* fn dpdy(f32) -> f32 */ + /* fn dpdy(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[161], }, { /* [24] */ - /* fn dpdyFine(f32) -> f32 */ - /* fn dpdyFine(vec) -> vec */ + /* fn dpdyCoarse(f32) -> f32 */ + /* fn dpdyCoarse(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[163], }, { /* [25] */ - /* fn exp(f32) -> f32 */ - /* fn exp(vec) -> vec */ + /* fn dpdyFine(f32) -> f32 */ + /* fn dpdyFine(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[165], }, { /* [26] */ - /* fn exp2(f32) -> f32 */ - /* fn exp2(vec) -> vec */ + /* fn exp(f32) -> f32 */ + /* fn exp(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[167], }, { /* [27] */ - /* fn faceForward(vec, vec, vec) -> vec */ - /* num overloads */ 1, - /* overloads */ &kOverloads[273], + /* fn exp2(f32) -> f32 */ + /* fn exp2(vec) -> vec */ + /* num overloads */ 2, + /* overloads */ &kOverloads[169], }, { /* [28] */ - /* fn floor(f32) -> f32 */ - /* fn floor(vec) -> vec */ - /* num overloads */ 2, - /* overloads */ &kOverloads[171], + /* fn faceForward(vec, vec, vec) -> vec */ + /* num overloads */ 1, + /* overloads */ &kOverloads[275], }, { /* [29] */ - /* fn fma(f32, f32, f32) -> f32 */ - /* fn fma(vec, vec, vec) -> vec */ + /* fn floor(f32) -> f32 */ + /* fn floor(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[173], }, { /* [30] */ - /* fn fract(f32) -> f32 */ - /* fn fract(vec) -> vec */ + /* fn fma(f32, f32, f32) -> f32 */ + /* fn fma(vec, vec, vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[175], }, { /* [31] */ - /* fn frexp(f32) -> __frexp_result */ - /* fn frexp(vec) -> __frexp_result_vec */ + /* fn fract(f32) -> f32 */ + /* fn fract(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[177], }, { /* [32] */ - /* fn fwidth(f32) -> f32 */ - /* fn fwidth(vec) -> vec */ + /* fn frexp(f32) -> __frexp_result */ + /* fn frexp(vec) -> __frexp_result_vec */ /* num overloads */ 2, /* overloads */ &kOverloads[179], }, { /* [33] */ - /* fn fwidthCoarse(f32) -> f32 */ - /* fn fwidthCoarse(vec) -> vec */ + /* fn fwidth(f32) -> f32 */ + /* fn fwidth(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[181], }, { /* [34] */ - /* fn fwidthFine(f32) -> f32 */ - /* fn fwidthFine(vec) -> vec */ + /* fn fwidthCoarse(f32) -> f32 */ + /* fn fwidthCoarse(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[183], }, { /* [35] */ - /* fn inverseSqrt(f32) -> f32 */ - /* fn inverseSqrt(vec) -> vec */ + /* fn fwidthFine(f32) -> f32 */ + /* fn fwidthFine(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[185], }, { /* [36] */ - /* fn isFinite(f32) -> bool */ - /* fn isFinite(vec) -> vec */ + /* fn inverseSqrt(f32) -> f32 */ + /* fn inverseSqrt(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[187], }, { /* [37] */ - /* fn isInf(f32) -> bool */ - /* fn isInf(vec) -> vec */ + /* fn isFinite(f32) -> bool */ + /* fn isFinite(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[189], }, { /* [38] */ - /* fn isNan(f32) -> bool */ - /* fn isNan(vec) -> vec */ + /* fn isInf(f32) -> bool */ + /* fn isInf(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[191], }, { /* [39] */ - /* fn isNormal(f32) -> bool */ - /* fn isNormal(vec) -> vec */ + /* fn isNan(f32) -> bool */ + /* fn isNan(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[193], }, { /* [40] */ - /* fn ldexp(f32, i32) -> f32 */ - /* fn ldexp(vec, vec) -> vec */ + /* fn isNormal(f32) -> bool */ + /* fn isNormal(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[195], }, { /* [41] */ - /* fn length(f32) -> f32 */ - /* fn length(vec) -> f32 */ + /* fn ldexp(f32, i32) -> f32 */ + /* fn ldexp(vec, vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[197], }, { /* [42] */ - /* fn log(f32) -> f32 */ - /* fn log(vec) -> vec */ + /* fn length(f32) -> f32 */ + /* fn length(vec) -> f32 */ /* num overloads */ 2, /* overloads */ &kOverloads[199], }, { /* [43] */ - /* fn log2(f32) -> f32 */ - /* fn log2(vec) -> vec */ + /* fn log(f32) -> f32 */ + /* fn log(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[201], }, { /* [44] */ - /* fn max(T, T) -> T */ - /* fn max(vec, vec) -> vec */ + /* fn log2(f32) -> f32 */ + /* fn log2(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[203], }, { /* [45] */ - /* fn min(T, T) -> T */ - /* fn min(vec, vec) -> vec */ + /* fn max(T, T) -> T */ + /* fn max(vec, vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[205], }, { /* [46] */ + /* fn min(T, T) -> T */ + /* fn min(vec, vec) -> vec */ + /* num overloads */ 2, + /* overloads */ &kOverloads[207], + }, + { + /* [47] */ /* fn mix(f32, f32, f32) -> f32 */ /* fn mix(vec, vec, vec) -> vec */ /* fn mix(vec, vec, f32) -> vec */ @@ -9003,90 +9044,90 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[142], }, { - /* [47] */ + /* [48] */ /* fn modf(f32) -> __modf_result */ /* fn modf(vec) -> __modf_result_vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[209], - }, - { - /* [48] */ - /* fn normalize(vec) -> vec */ - /* num overloads */ 1, - /* overloads */ &kOverloads[257], + /* overloads */ &kOverloads[211], }, { /* [49] */ + /* fn normalize(vec) -> vec */ + /* num overloads */ 1, + /* overloads */ &kOverloads[274], + }, + { + /* [50] */ /* fn pack2x16float(vec2) -> u32 */ /* num overloads */ 1, + /* overloads */ &kOverloads[273], + }, + { + /* [51] */ + /* fn pack2x16snorm(vec2) -> u32 */ + /* num overloads */ 1, + /* overloads */ &kOverloads[272], + }, + { + /* [52] */ + /* fn pack2x16unorm(vec2) -> u32 */ + /* num overloads */ 1, + /* overloads */ &kOverloads[267], + }, + { + /* [53] */ + /* fn pack4x8snorm(vec4) -> u32 */ + /* num overloads */ 1, /* overloads */ &kOverloads[271], }, { - /* [50] */ - /* fn pack2x16snorm(vec2) -> u32 */ + /* [54] */ + /* fn pack4x8unorm(vec4) -> u32 */ /* num overloads */ 1, /* overloads */ &kOverloads[270], }, { - /* [51] */ - /* fn pack2x16unorm(vec2) -> u32 */ - /* num overloads */ 1, - /* overloads */ &kOverloads[265], - }, - { - /* [52] */ - /* fn pack4x8snorm(vec4) -> u32 */ - /* num overloads */ 1, - /* overloads */ &kOverloads[269], - }, - { - /* [53] */ - /* fn pack4x8unorm(vec4) -> u32 */ - /* num overloads */ 1, - /* overloads */ &kOverloads[268], - }, - { - /* [54] */ + /* [55] */ /* fn pow(f32, f32) -> f32 */ /* fn pow(vec, vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[223], - }, - { - /* [55] */ - /* fn radians(f32) -> f32 */ - /* fn radians(vec) -> vec */ - /* num overloads */ 2, /* overloads */ &kOverloads[225], }, { /* [56] */ - /* fn reflect(vec, vec) -> vec */ - /* num overloads */ 1, - /* overloads */ &kOverloads[267], + /* fn radians(f32) -> f32 */ + /* fn radians(vec) -> vec */ + /* num overloads */ 2, + /* overloads */ &kOverloads[227], }, { /* [57] */ - /* fn refract(vec, vec, f32) -> vec */ + /* fn reflect(vec, vec) -> vec */ /* num overloads */ 1, - /* overloads */ &kOverloads[266], + /* overloads */ &kOverloads[269], }, { /* [58] */ - /* fn reverseBits(T) -> T */ - /* fn reverseBits(vec) -> vec */ - /* num overloads */ 2, - /* overloads */ &kOverloads[231], + /* fn refract(vec, vec, f32) -> vec */ + /* num overloads */ 1, + /* overloads */ &kOverloads[268], }, { /* [59] */ - /* fn round(f32) -> f32 */ - /* fn round(vec) -> vec */ + /* fn reverseBits(T) -> T */ + /* fn reverseBits(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[233], }, { /* [60] */ + /* fn round(f32) -> f32 */ + /* fn round(vec) -> vec */ + /* num overloads */ 2, + /* overloads */ &kOverloads[235], + }, + { + /* [61] */ /* fn select(T, T, bool) -> T */ /* fn select(vec, vec, bool) -> vec */ /* fn select(vec, vec, vec) -> vec */ @@ -9094,118 +9135,118 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[139], }, { - /* [61] */ + /* [62] */ /* fn sign(f32) -> f32 */ /* fn sign(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[237], - }, - { - /* [62] */ - /* fn sin(f32) -> f32 */ - /* fn sin(vec) -> vec */ - /* num overloads */ 2, - /* overloads */ &kOverloads[239], + /* overloads */ &kOverloads[255], }, { /* [63] */ - /* fn sinh(f32) -> f32 */ - /* fn sinh(vec) -> vec */ + /* fn sin(f32) -> f32 */ + /* fn sin(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[253], + /* overloads */ &kOverloads[241], }, { /* [64] */ - /* fn smoothStep(f32, f32, f32) -> f32 */ - /* fn smoothStep(vec, vec, vec) -> vec */ + /* fn sinh(f32) -> f32 */ + /* fn sinh(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[243], }, { /* [65] */ - /* fn sqrt(f32) -> f32 */ - /* fn sqrt(vec) -> vec */ + /* fn smoothStep(f32, f32, f32) -> f32 */ + /* fn smoothStep(vec, vec, vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[245], + /* overloads */ &kOverloads[219], }, { /* [66] */ - /* fn step(f32, f32) -> f32 */ - /* fn step(vec, vec) -> vec */ + /* fn sqrt(f32) -> f32 */ + /* fn sqrt(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[247], }, { /* [67] */ - /* fn storageBarrier() */ - /* num overloads */ 1, - /* overloads */ &kOverloads[272], - }, - { - /* [68] */ - /* fn tan(f32) -> f32 */ - /* fn tan(vec) -> vec */ - /* num overloads */ 2, - /* overloads */ &kOverloads[251], - }, - { - /* [69] */ - /* fn tanh(f32) -> f32 */ - /* fn tanh(vec) -> vec */ - /* num overloads */ 2, - /* overloads */ &kOverloads[147], - }, - { - /* [70] */ - /* fn transpose(mat) -> mat */ - /* num overloads */ 1, - /* overloads */ &kOverloads[288], - }, - { - /* [71] */ - /* fn trunc(f32) -> f32 */ - /* fn trunc(vec) -> vec */ + /* fn step(f32, f32) -> f32 */ + /* fn step(vec, vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[249], }, { - /* [72] */ - /* fn unpack2x16float(u32) -> vec2 */ + /* [68] */ + /* fn storageBarrier() */ /* num overloads */ 1, - /* overloads */ &kOverloads[258], + /* overloads */ &kOverloads[266], }, { - /* [73] */ - /* fn unpack2x16snorm(u32) -> vec2 */ + /* [69] */ + /* fn tan(f32) -> f32 */ + /* fn tan(vec) -> vec */ + /* num overloads */ 2, + /* overloads */ &kOverloads[253], + }, + { + /* [70] */ + /* fn tanh(f32) -> f32 */ + /* fn tanh(vec) -> vec */ + /* num overloads */ 2, + /* overloads */ &kOverloads[223], + }, + { + /* [71] */ + /* fn transpose(mat) -> mat */ /* num overloads */ 1, /* overloads */ &kOverloads[259], }, { - /* [74] */ - /* fn unpack2x16unorm(u32) -> vec2 */ + /* [72] */ + /* fn trunc(f32) -> f32 */ + /* fn trunc(vec) -> vec */ + /* num overloads */ 2, + /* overloads */ &kOverloads[145], + }, + { + /* [73] */ + /* fn unpack2x16float(u32) -> vec2 */ /* num overloads */ 1, /* overloads */ &kOverloads[260], }, { - /* [75] */ - /* fn unpack4x8snorm(u32) -> vec4 */ + /* [74] */ + /* fn unpack2x16snorm(u32) -> vec2 */ /* num overloads */ 1, /* overloads */ &kOverloads[261], }, { - /* [76] */ - /* fn unpack4x8unorm(u32) -> vec4 */ + /* [75] */ + /* fn unpack2x16unorm(u32) -> vec2 */ /* num overloads */ 1, /* overloads */ &kOverloads[262], }, { - /* [77] */ - /* fn workgroupBarrier() */ + /* [76] */ + /* fn unpack4x8snorm(u32) -> vec4 */ /* num overloads */ 1, /* overloads */ &kOverloads[263], }, + { + /* [77] */ + /* fn unpack4x8unorm(u32) -> vec4 */ + /* num overloads */ 1, + /* overloads */ &kOverloads[264], + }, { /* [78] */ + /* fn workgroupBarrier() */ + /* num overloads */ 1, + /* overloads */ &kOverloads[265], + }, + { + /* [79] */ /* fn textureDimensions(texture: texture_1d) -> i32 */ /* fn textureDimensions(texture: texture_1d, level: i32) -> i32 */ /* fn textureDimensions(texture: texture_2d) -> vec2 */ @@ -9237,7 +9278,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[0], }, { - /* [79] */ + /* [80] */ /* fn textureGather(component: i32, texture: texture_2d, sampler: sampler, coords: vec2) -> vec4 */ /* fn textureGather(component: i32, texture: texture_2d, sampler: sampler, coords: vec2, offset: vec2) -> vec4 */ /* fn textureGather(component: i32, texture: texture_2d_array, sampler: sampler, coords: vec2, array_index: i32) -> vec4 */ @@ -9254,7 +9295,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[57], }, { - /* [80] */ + /* [81] */ /* fn textureGatherCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2, depth_ref: f32) -> vec4 */ /* fn textureGatherCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2, depth_ref: f32, offset: vec2) -> vec4 */ /* fn textureGatherCompare(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2, array_index: i32, depth_ref: f32) -> vec4 */ @@ -9262,10 +9303,10 @@ constexpr BuiltinInfo kBuiltins[] = { /* fn textureGatherCompare(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3, depth_ref: f32) -> vec4 */ /* fn textureGatherCompare(texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec3, array_index: i32, depth_ref: f32) -> vec4 */ /* num overloads */ 6, - /* overloads */ &kOverloads[128], + /* overloads */ &kOverloads[116], }, { - /* [81] */ + /* [82] */ /* fn textureNumLayers(texture: texture_2d_array) -> i32 */ /* fn textureNumLayers(texture: texture_cube_array) -> i32 */ /* fn textureNumLayers(texture: texture_depth_2d_array) -> i32 */ @@ -9275,7 +9316,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[134], }, { - /* [82] */ + /* [83] */ /* fn textureNumLevels(texture: texture_1d) -> i32 */ /* fn textureNumLevels(texture: texture_2d) -> i32 */ /* fn textureNumLevels(texture: texture_2d_array) -> i32 */ @@ -9290,14 +9331,14 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[81], }, { - /* [83] */ + /* [84] */ /* fn textureNumSamples(texture: texture_multisampled_2d) -> i32 */ /* fn textureNumSamples(texture: texture_depth_multisampled_2d) -> i32 */ /* num overloads */ 2, - /* overloads */ &kOverloads[219], + /* overloads */ &kOverloads[221], }, { - /* [84] */ + /* [85] */ /* fn textureSample(texture: texture_1d, sampler: sampler, coords: f32) -> vec4 */ /* fn textureSample(texture: texture_2d, sampler: sampler, coords: vec2) -> vec4 */ /* fn textureSample(texture: texture_2d, sampler: sampler, coords: vec2, offset: vec2) -> vec4 */ @@ -9314,10 +9355,10 @@ constexpr BuiltinInfo kBuiltins[] = { /* fn textureSample(texture: texture_depth_cube, sampler: sampler, coords: vec3) -> f32 */ /* fn textureSample(texture: texture_depth_cube_array, sampler: sampler, coords: vec3, array_index: i32) -> f32 */ /* num overloads */ 15, - /* overloads */ &kOverloads[27], + /* overloads */ &kOverloads[42], }, { - /* [85] */ + /* [86] */ /* fn textureSampleBias(texture: texture_2d, sampler: sampler, coords: vec2, bias: f32) -> vec4 */ /* fn textureSampleBias(texture: texture_2d, sampler: sampler, coords: vec2, bias: f32, offset: vec2) -> vec4 */ /* fn textureSampleBias(texture: texture_2d_array, sampler: sampler, coords: vec2, array_index: i32, bias: f32) -> vec4 */ @@ -9327,10 +9368,10 @@ constexpr BuiltinInfo kBuiltins[] = { /* fn textureSampleBias(texture: texture_cube, sampler: sampler, coords: vec3, bias: f32) -> vec4 */ /* fn textureSampleBias(texture: texture_cube_array, sampler: sampler, coords: vec3, array_index: i32, bias: f32) -> vec4 */ /* num overloads */ 8, - /* overloads */ &kOverloads[108], + /* overloads */ &kOverloads[100], }, { - /* [86] */ + /* [87] */ /* fn textureSampleCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2, depth_ref: f32) -> f32 */ /* fn textureSampleCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2, depth_ref: f32, offset: vec2) -> f32 */ /* fn textureSampleCompare(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2, array_index: i32, depth_ref: f32) -> f32 */ @@ -9338,10 +9379,10 @@ constexpr BuiltinInfo kBuiltins[] = { /* fn textureSampleCompare(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3, depth_ref: f32) -> f32 */ /* fn textureSampleCompare(texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec3, array_index: i32, depth_ref: f32) -> f32 */ /* num overloads */ 6, - /* overloads */ &kOverloads[116], + /* overloads */ &kOverloads[122], }, { - /* [87] */ + /* [88] */ /* fn textureSampleCompareLevel(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2, depth_ref: f32) -> f32 */ /* fn textureSampleCompareLevel(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2, depth_ref: f32, offset: vec2) -> f32 */ /* fn textureSampleCompareLevel(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2, array_index: i32, depth_ref: f32) -> f32 */ @@ -9349,10 +9390,10 @@ constexpr BuiltinInfo kBuiltins[] = { /* fn textureSampleCompareLevel(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3, depth_ref: f32) -> f32 */ /* fn textureSampleCompareLevel(texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec3, array_index: i32, depth_ref: f32) -> f32 */ /* num overloads */ 6, - /* overloads */ &kOverloads[122], + /* overloads */ &kOverloads[128], }, { - /* [88] */ + /* [89] */ /* fn textureSampleGrad(texture: texture_2d, sampler: sampler, coords: vec2, ddx: vec2, ddy: vec2) -> vec4 */ /* fn textureSampleGrad(texture: texture_2d, sampler: sampler, coords: vec2, ddx: vec2, ddy: vec2, offset: vec2) -> vec4 */ /* fn textureSampleGrad(texture: texture_2d_array, sampler: sampler, coords: vec2, array_index: i32, ddx: vec2, ddy: vec2) -> vec4 */ @@ -9362,10 +9403,10 @@ constexpr BuiltinInfo kBuiltins[] = { /* fn textureSampleGrad(texture: texture_cube, sampler: sampler, coords: vec3, ddx: vec3, ddy: vec3) -> vec4 */ /* fn textureSampleGrad(texture: texture_cube_array, sampler: sampler, coords: vec3, array_index: i32, ddx: vec3, ddy: vec3) -> vec4 */ /* num overloads */ 8, - /* overloads */ &kOverloads[100], + /* overloads */ &kOverloads[108], }, { - /* [89] */ + /* [90] */ /* fn textureSampleLevel(texture: texture_2d, sampler: sampler, coords: vec2, level: f32) -> vec4 */ /* fn textureSampleLevel(texture: texture_2d, sampler: sampler, coords: vec2, level: f32, offset: vec2) -> vec4 */ /* fn textureSampleLevel(texture: texture_2d_array, sampler: sampler, coords: vec2, array_index: i32, level: f32) -> vec4 */ @@ -9382,10 +9423,10 @@ constexpr BuiltinInfo kBuiltins[] = { /* fn textureSampleLevel(texture: texture_depth_cube_array, sampler: sampler, coords: vec3, array_index: i32, level: i32) -> f32 */ /* fn textureSampleLevel(texture: texture_external, sampler: sampler, coords: vec2) -> vec4 */ /* num overloads */ 15, - /* overloads */ &kOverloads[42], + /* overloads */ &kOverloads[27], }, { - /* [90] */ + /* [91] */ /* fn textureStore(texture: texture_storage_1d, coords: i32, value: vec4) */ /* fn textureStore(texture: texture_storage_2d, coords: vec2, value: vec4) */ /* fn textureStore(texture: texture_storage_2d_array, coords: vec2, array_index: i32, value: vec4) */ @@ -9402,7 +9443,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[69], }, { - /* [91] */ + /* [92] */ /* fn textureLoad(texture: texture_1d, coords: i32, level: i32) -> vec4 */ /* fn textureLoad(texture: texture_2d, coords: vec2, level: i32) -> vec4 */ /* fn textureLoad(texture: texture_2d_array, coords: vec2, array_index: i32, level: i32) -> vec4 */ @@ -9415,71 +9456,71 @@ constexpr BuiltinInfo kBuiltins[] = { /* num overloads */ 9, /* overloads */ &kOverloads[91], }, - { - /* [92] */ - /* fn atomicLoad(ptr, read_write>) -> T */ - /* num overloads */ 1, - /* overloads */ &kOverloads[278], - }, { /* [93] */ - /* fn atomicStore(ptr, read_write>, T) */ - /* num overloads */ 1, - /* overloads */ &kOverloads[279], - }, - { - /* [94] */ - /* fn atomicAdd(ptr, read_write>, T) -> T */ + /* fn atomicLoad(ptr, read_write>) -> T */ /* num overloads */ 1, /* overloads */ &kOverloads[280], }, { - /* [95] */ - /* fn atomicSub(ptr, read_write>, T) -> T */ + /* [94] */ + /* fn atomicStore(ptr, read_write>, T) */ /* num overloads */ 1, /* overloads */ &kOverloads[281], }, { - /* [96] */ - /* fn atomicMax(ptr, read_write>, T) -> T */ + /* [95] */ + /* fn atomicAdd(ptr, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ &kOverloads[282], }, { - /* [97] */ - /* fn atomicMin(ptr, read_write>, T) -> T */ + /* [96] */ + /* fn atomicSub(ptr, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ &kOverloads[283], }, { - /* [98] */ - /* fn atomicAnd(ptr, read_write>, T) -> T */ + /* [97] */ + /* fn atomicMax(ptr, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ &kOverloads[284], }, { - /* [99] */ - /* fn atomicOr(ptr, read_write>, T) -> T */ + /* [98] */ + /* fn atomicMin(ptr, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ &kOverloads[285], }, { - /* [100] */ - /* fn atomicXor(ptr, read_write>, T) -> T */ + /* [99] */ + /* fn atomicAnd(ptr, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ &kOverloads[286], }, { - /* [101] */ - /* fn atomicExchange(ptr, read_write>, T) -> T */ + /* [100] */ + /* fn atomicOr(ptr, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ &kOverloads[287], }, + { + /* [101] */ + /* fn atomicXor(ptr, read_write>, T) -> T */ + /* num overloads */ 1, + /* overloads */ &kOverloads[288], + }, { /* [102] */ + /* fn atomicExchange(ptr, read_write>, T) -> T */ + /* num overloads */ 1, + /* overloads */ &kOverloads[289], + }, + { + /* [103] */ /* fn atomicCompareExchangeWeak(ptr, read_write>, T, T) -> vec2 */ /* num overloads */ 1, - /* overloads */ &kOverloads[264], + /* overloads */ &kOverloads[290], }, }; diff --git a/src/tint/builtins.def b/src/tint/builtins.def index 0d3b14025b..6ba6e64293 100644 --- a/src/tint/builtins.def +++ b/src/tint/builtins.def @@ -290,6 +290,8 @@ fn countLeadingZeros(T) -> T fn countLeadingZeros(vec) -> vec fn countOneBits(T) -> T fn countOneBits(vec) -> vec +fn countTrailingZeros(T) -> T +fn countTrailingZeros(vec) -> vec fn cross(vec3, vec3) -> vec3 fn degrees(f32) -> f32 fn degrees(vec) -> vec diff --git a/src/tint/sem/builtin_type.cc b/src/tint/sem/builtin_type.cc index b1bebc22c2..69c39aceb8 100644 --- a/src/tint/sem/builtin_type.cc +++ b/src/tint/sem/builtin_type.cc @@ -72,6 +72,9 @@ BuiltinType ParseBuiltinType(const std::string& name) { if (name == "countOneBits") { return BuiltinType::kCountOneBits; } + if (name == "countTrailingZeros") { + return BuiltinType::kCountTrailingZeros; + } if (name == "cross") { return BuiltinType::kCross; } @@ -374,6 +377,8 @@ const char* str(BuiltinType i) { return "countLeadingZeros"; case BuiltinType::kCountOneBits: return "countOneBits"; + case BuiltinType::kCountTrailingZeros: + return "countTrailingZeros"; case BuiltinType::kCross: return "cross"; case BuiltinType::kDegrees: diff --git a/src/tint/sem/builtin_type.h b/src/tint/sem/builtin_type.h index 82c9d0845a..22809bbc42 100644 --- a/src/tint/sem/builtin_type.h +++ b/src/tint/sem/builtin_type.h @@ -48,6 +48,7 @@ enum class BuiltinType { kCosh, kCountLeadingZeros, kCountOneBits, + kCountTrailingZeros, kCross, kDegrees, kDeterminant, diff --git a/src/tint/transform/builtin_polyfill.cc b/src/tint/transform/builtin_polyfill.cc index 56af582571..6a00e65c35 100644 --- a/src/tint/transform/builtin_polyfill.cc +++ b/src/tint/transform/builtin_polyfill.cc @@ -108,6 +108,80 @@ struct BuiltinPolyfill::State { return name; } + /// Builds the polyfill function for the `countTrailingZeros` builtin + /// @param ty the parameter and return type for the function + /// @return the polyfill function name + Symbol countTrailingZeros(const sem::Type* ty) { + auto name = b.Symbols().New("tint_count_trailing_zeros"); + uint32_t width = 1; + if (auto* v = ty->As()) { + width = v->Width(); + } + + // Returns either u32 or vecN + auto U = [&]() -> const ast::Type* { + if (width == 1) { + return b.ty.u32(); + } + return b.ty.vec(width); + }; + auto V = [&](uint32_t value) -> const ast::Expression* { + if (width == 1) { + return b.Expr(value); + } + return b.Construct(b.ty.vec(width), value); + }; + auto B = [&](const ast::Expression* value) -> const ast::Expression* { + if (width == 1) { + return b.Construct(value); + } + return b.Construct(b.ty.vec(width), value); + }; + b.Func( + name, {b.Param("v", T(ty))}, T(ty), + { + // var x = U(v); + b.Decl(b.Var("x", nullptr, b.Construct(U(), b.Expr("v")))), + // let b16 = select(16, 0, bool(x & 0x0000ffff)); + b.Decl(b.Const( + "b16", nullptr, + b.Call("select", V(16), V(0), B(b.And("x", V(0x0000ffff)))))), + // x = x >> b16; + b.Assign("x", b.Shr("x", "b16")), + // let b8 = select(8, 0, bool(x & 0x000000ff)); + b.Decl(b.Const( + "b8", nullptr, + b.Call("select", V(8), V(0), B(b.And("x", V(0x000000ff)))))), + // x = x >> b8; + b.Assign("x", b.Shr("x", "b8")), + // let b4 = select(4, 0, bool(x & 0x0000000f)); + b.Decl(b.Const( + "b4", nullptr, + b.Call("select", V(4), V(0), B(b.And("x", V(0x0000000f)))))), + // x = x >> b4; + b.Assign("x", b.Shr("x", "b4")), + // let b2 = select(2, 0, bool(x & 0x00000003)); + b.Decl(b.Const( + "b2", nullptr, + b.Call("select", V(2), V(0), B(b.And("x", V(0x00000003)))))), + // x = x >> b2; + b.Assign("x", b.Shr("x", "b2")), + // let b1 = select(1, 0, bool(x & 0x00000001)); + b.Decl(b.Const( + "b1", nullptr, + b.Call("select", V(1), V(0), B(b.And("x", V(0x00000001)))))), + // let is_zero = select(0, 1, x == 0); + b.Decl(b.Const("is_zero", nullptr, + b.Call("select", V(0), V(1), b.Equal("x", V(0))))), + // return R((b16 | b8 | b4 | b2 | b1) + zero); + b.Return(b.Construct( + T(ty), + b.Add(b.Or(b.Or(b.Or(b.Or("b16", "b8"), "b4"), "b2"), "b1"), + "is_zero"))), + }); + return name; + } + private: const ast::Type* T(const sem::Type* ty) { return CreateASTTypeFor(ctx, ty); } }; @@ -130,6 +204,11 @@ bool BuiltinPolyfill::ShouldRun(const Program* program, return true; } break; + case sem::BuiltinType::kCountTrailingZeros: + if (builtins.count_trailing_zeros) { + return true; + } + break; default: break; } @@ -166,6 +245,13 @@ void BuiltinPolyfill::Run(CloneContext& ctx, }); } break; + case sem::BuiltinType::kCountTrailingZeros: + if (builtins.count_trailing_zeros) { + polyfill = utils::GetOrCreate(polyfills, builtin, [&] { + return s.countTrailingZeros(builtin->ReturnType()); + }); + } + break; default: break; } diff --git a/src/tint/transform/builtin_polyfill.h b/src/tint/transform/builtin_polyfill.h index e7cdf80de7..9897a1d75d 100644 --- a/src/tint/transform/builtin_polyfill.h +++ b/src/tint/transform/builtin_polyfill.h @@ -32,6 +32,8 @@ class BuiltinPolyfill : public Castable { struct Builtins { /// Should `countLeadingZeros()` be polyfilled? bool count_leading_zeros = false; + /// Should `countTrailingZeros()` be polyfilled? + bool count_trailing_zeros = false; }; /// Config is consumed by the BuiltinPolyfill transform. diff --git a/src/tint/transform/builtin_polyfill_test.cc b/src/tint/transform/builtin_polyfill_test.cc index 9193130e44..ec66839e65 100644 --- a/src/tint/transform/builtin_polyfill_test.cc +++ b/src/tint/transform/builtin_polyfill_test.cc @@ -194,6 +194,160 @@ fn f() { EXPECT_EQ(expect, str(got)); } +//////////////////////////////////////////////////////////////////////////////// +// countTrailingZeros +//////////////////////////////////////////////////////////////////////////////// +DataMap polyfillCountTrailingZeros() { + BuiltinPolyfill::Builtins builtins; + builtins.count_trailing_zeros = true; + DataMap data; + data.Add(builtins); + return data; +} + +TEST_F(BuiltinPolyfillTest, ShouldRunCountTrailingZeros) { + auto* src = R"( +fn f() { + countTrailingZeros(0xf); +} +)"; + + EXPECT_FALSE(ShouldRun(src)); + EXPECT_TRUE(ShouldRun(src, polyfillCountTrailingZeros())); +} + +TEST_F(BuiltinPolyfillTest, CountTrailingZeros_i32) { + auto* src = R"( +fn f() { + let r : i32 = countTrailingZeros(15); +} +)"; + + auto* expect = R"( +fn tint_count_trailing_zeros(v : i32) -> i32 { + var x = u32(v); + let b16 = select(16u, 0u, bool((x & 65535u))); + x = (x >> b16); + let b8 = select(8u, 0u, bool((x & 255u))); + x = (x >> b8); + let b4 = select(4u, 0u, bool((x & 15u))); + x = (x >> b4); + let b2 = select(2u, 0u, bool((x & 3u))); + x = (x >> b2); + let b1 = select(1u, 0u, bool((x & 1u))); + let is_zero = select(0u, 1u, (x == 0u)); + return i32((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +fn f() { + let r : i32 = tint_count_trailing_zeros(15); +} +)"; + + auto got = Run(src, polyfillCountTrailingZeros()); + + EXPECT_EQ(expect, str(got)); +} + +TEST_F(BuiltinPolyfillTest, CountTrailingZeros_u32) { + auto* src = R"( +fn f() { + let r : u32 = countTrailingZeros(15u); +} +)"; + + auto* expect = R"( +fn tint_count_trailing_zeros(v : u32) -> u32 { + var x = u32(v); + let b16 = select(16u, 0u, bool((x & 65535u))); + x = (x >> b16); + let b8 = select(8u, 0u, bool((x & 255u))); + x = (x >> b8); + let b4 = select(4u, 0u, bool((x & 15u))); + x = (x >> b4); + let b2 = select(2u, 0u, bool((x & 3u))); + x = (x >> b2); + let b1 = select(1u, 0u, bool((x & 1u))); + let is_zero = select(0u, 1u, (x == 0u)); + return u32((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +fn f() { + let r : u32 = tint_count_trailing_zeros(15u); +} +)"; + + auto got = Run(src, polyfillCountTrailingZeros()); + + EXPECT_EQ(expect, str(got)); +} + +TEST_F(BuiltinPolyfillTest, CountTrailingZeros_vec3_i32) { + auto* src = R"( +fn f() { + let r : vec3 = countTrailingZeros(vec3(15)); +} +)"; + + auto* expect = R"( +fn tint_count_trailing_zeros(v : vec3) -> vec3 { + var x = vec3(v); + let b16 = select(vec3(16u), vec3(0u), vec3((x & vec3(65535u)))); + x = (x >> b16); + let b8 = select(vec3(8u), vec3(0u), vec3((x & vec3(255u)))); + x = (x >> b8); + let b4 = select(vec3(4u), vec3(0u), vec3((x & vec3(15u)))); + x = (x >> b4); + let b2 = select(vec3(2u), vec3(0u), vec3((x & vec3(3u)))); + x = (x >> b2); + let b1 = select(vec3(1u), vec3(0u), vec3((x & vec3(1u)))); + let is_zero = select(vec3(0u), vec3(1u), (x == vec3(0u))); + return vec3((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +fn f() { + let r : vec3 = tint_count_trailing_zeros(vec3(15)); +} +)"; + + auto got = Run(src, polyfillCountTrailingZeros()); + + EXPECT_EQ(expect, str(got)); +} + +TEST_F(BuiltinPolyfillTest, CountTrailingZeros_vec3_u32) { + auto* src = R"( +fn f() { + let r : vec3 = countTrailingZeros(vec3(15u)); +} +)"; + + auto* expect = R"( +fn tint_count_trailing_zeros(v : vec3) -> vec3 { + var x = vec3(v); + let b16 = select(vec3(16u), vec3(0u), vec3((x & vec3(65535u)))); + x = (x >> b16); + let b8 = select(vec3(8u), vec3(0u), vec3((x & vec3(255u)))); + x = (x >> b8); + let b4 = select(vec3(4u), vec3(0u), vec3((x & vec3(15u)))); + x = (x >> b4); + let b2 = select(vec3(2u), vec3(0u), vec3((x & vec3(3u)))); + x = (x >> b2); + let b1 = select(vec3(1u), vec3(0u), vec3((x & vec3(1u)))); + let is_zero = select(vec3(0u), vec3(1u), (x == vec3(0u))); + return vec3((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +fn f() { + let r : vec3 = tint_count_trailing_zeros(vec3(15u)); +} +)"; + + auto got = Run(src, polyfillCountTrailingZeros()); + + EXPECT_EQ(expect, str(got)); +} + } // namespace } // namespace transform } // namespace tint diff --git a/src/tint/transform/glsl.cc b/src/tint/transform/glsl.cc index 408af9def9..1970af20ca 100644 --- a/src/tint/transform/glsl.cc +++ b/src/tint/transform/glsl.cc @@ -55,6 +55,7 @@ Output Glsl::Run(const Program* in, const DataMap& inputs) const { { // Builtin polyfills BuiltinPolyfill::Builtins polyfills; polyfills.count_leading_zeros = true; + polyfills.count_trailing_zeros = true; data.Add(polyfills); manager.Add(); } diff --git a/src/tint/writer/hlsl/generator_impl.cc b/src/tint/writer/hlsl/generator_impl.cc index 718e93c404..5e6de6af69 100644 --- a/src/tint/writer/hlsl/generator_impl.cc +++ b/src/tint/writer/hlsl/generator_impl.cc @@ -144,6 +144,7 @@ SanitizedResult Sanitize( { // Builtin polyfills transform::BuiltinPolyfill::Builtins polyfills; polyfills.count_leading_zeros = true; + polyfills.count_trailing_zeros = true; data.Add(polyfills); manager.Add(); } diff --git a/src/tint/writer/msl/generator_impl.cc b/src/tint/writer/msl/generator_impl.cc index 0518677d12..ffe00f5405 100644 --- a/src/tint/writer/msl/generator_impl.cc +++ b/src/tint/writer/msl/generator_impl.cc @@ -1351,6 +1351,9 @@ std::string GeneratorImpl::generate_builtin_name(const sem::Builtin* builtin) { case sem::BuiltinType::kCountOneBits: out += "popcount"; break; + case sem::BuiltinType::kCountTrailingZeros: + out += "ctz"; + break; case sem::BuiltinType::kDpdx: case sem::BuiltinType::kDpdxCoarse: case sem::BuiltinType::kDpdxFine: diff --git a/src/tint/writer/msl/generator_impl_builtin_test.cc b/src/tint/writer/msl/generator_impl_builtin_test.cc index 83872d73f3..864c512f0c 100644 --- a/src/tint/writer/msl/generator_impl_builtin_test.cc +++ b/src/tint/writer/msl/generator_impl_builtin_test.cc @@ -126,6 +126,7 @@ const ast::CallExpression* GenerateCall(BuiltinType builtin, } case BuiltinType::kCountLeadingZeros: case BuiltinType::kCountOneBits: + case BuiltinType::kCountTrailingZeros: case BuiltinType::kReverseBits: return builder->Call(str.str(), "u2"); case BuiltinType::kMax: @@ -215,6 +216,7 @@ INSTANTIATE_TEST_SUITE_P( BuiltinData{BuiltinType::kCosh, ParamType::kF32, "cosh"}, BuiltinData{BuiltinType::kCountLeadingZeros, ParamType::kU32, "clz"}, BuiltinData{BuiltinType::kCountOneBits, ParamType::kU32, "popcount"}, + BuiltinData{BuiltinType::kCountTrailingZeros, ParamType::kU32, "ctz"}, BuiltinData{BuiltinType::kCross, ParamType::kF32, "cross"}, BuiltinData{BuiltinType::kDeterminant, ParamType::kF32, "determinant"}, BuiltinData{BuiltinType::kDistance, ParamType::kF32, "distance"}, diff --git a/src/tint/writer/spirv/builder.cc b/src/tint/writer/spirv/builder.cc index a8becaa026..7c69b1c19c 100644 --- a/src/tint/writer/spirv/builder.cc +++ b/src/tint/writer/spirv/builder.cc @@ -262,6 +262,7 @@ SanitizedResult Sanitize(const Program* in, { // Builtin polyfills transform::BuiltinPolyfill::Builtins polyfills; polyfills.count_leading_zeros = true; + polyfills.count_trailing_zeros = true; data.Add(polyfills); manager.Add(); } diff --git a/test/tint/builtins/gen/countTrailingZeros/1ad138.wgsl b/test/tint/builtins/gen/countTrailingZeros/1ad138.wgsl new file mode 100644 index 0000000000..2c4eba126e --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/1ad138.wgsl @@ -0,0 +1,45 @@ +// Copyright 2021 The Tint Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//////////////////////////////////////////////////////////////////////////////// +// File generated by tools/builtin-gen +// using the template: +// test/tint/builtins/builtins.wgsl.tmpl +// and the builtin defintion file: +// src/tint/builtins.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + + +// fn countTrailingZeros(vec<2, u32>) -> vec<2, u32> +fn countTrailingZeros_1ad138() { + var res: vec2 = countTrailingZeros(vec2()); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + countTrailingZeros_1ad138(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + countTrailingZeros_1ad138(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + countTrailingZeros_1ad138(); +} diff --git a/test/tint/builtins/gen/countTrailingZeros/1ad138.wgsl.expected.glsl b/test/tint/builtins/gen/countTrailingZeros/1ad138.wgsl.expected.glsl new file mode 100644 index 0000000000..e2527587e3 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/1ad138.wgsl.expected.glsl @@ -0,0 +1,93 @@ +#version 310 es + +uvec2 tint_count_trailing_zeros(uvec2 v) { + uvec2 x = uvec2(v); + uvec2 b16 = mix(uvec2(16u), uvec2(0u), bvec2((x & uvec2(65535u)))); + x = (x >> b16); + uvec2 b8 = mix(uvec2(8u), uvec2(0u), bvec2((x & uvec2(255u)))); + x = (x >> b8); + uvec2 b4 = mix(uvec2(4u), uvec2(0u), bvec2((x & uvec2(15u)))); + x = (x >> b4); + uvec2 b2 = mix(uvec2(2u), uvec2(0u), bvec2((x & uvec2(3u)))); + x = (x >> b2); + uvec2 b1 = mix(uvec2(1u), uvec2(0u), bvec2((x & uvec2(1u)))); + uvec2 is_zero = mix(uvec2(0u), uvec2(1u), equal(x, uvec2(0u))); + return uvec2((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_1ad138() { + uvec2 res = tint_count_trailing_zeros(uvec2(0u, 0u)); +} + +vec4 vertex_main() { + countTrailingZeros_1ad138(); + return vec4(0.0f, 0.0f, 0.0f, 0.0f); +} + +void main() { + 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 mediump float; + +uvec2 tint_count_trailing_zeros(uvec2 v) { + uvec2 x = uvec2(v); + uvec2 b16 = mix(uvec2(16u), uvec2(0u), bvec2((x & uvec2(65535u)))); + x = (x >> b16); + uvec2 b8 = mix(uvec2(8u), uvec2(0u), bvec2((x & uvec2(255u)))); + x = (x >> b8); + uvec2 b4 = mix(uvec2(4u), uvec2(0u), bvec2((x & uvec2(15u)))); + x = (x >> b4); + uvec2 b2 = mix(uvec2(2u), uvec2(0u), bvec2((x & uvec2(3u)))); + x = (x >> b2); + uvec2 b1 = mix(uvec2(1u), uvec2(0u), bvec2((x & uvec2(1u)))); + uvec2 is_zero = mix(uvec2(0u), uvec2(1u), equal(x, uvec2(0u))); + return uvec2((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_1ad138() { + uvec2 res = tint_count_trailing_zeros(uvec2(0u, 0u)); +} + +void fragment_main() { + countTrailingZeros_1ad138(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +uvec2 tint_count_trailing_zeros(uvec2 v) { + uvec2 x = uvec2(v); + uvec2 b16 = mix(uvec2(16u), uvec2(0u), bvec2((x & uvec2(65535u)))); + x = (x >> b16); + uvec2 b8 = mix(uvec2(8u), uvec2(0u), bvec2((x & uvec2(255u)))); + x = (x >> b8); + uvec2 b4 = mix(uvec2(4u), uvec2(0u), bvec2((x & uvec2(15u)))); + x = (x >> b4); + uvec2 b2 = mix(uvec2(2u), uvec2(0u), bvec2((x & uvec2(3u)))); + x = (x >> b2); + uvec2 b1 = mix(uvec2(1u), uvec2(0u), bvec2((x & uvec2(1u)))); + uvec2 is_zero = mix(uvec2(0u), uvec2(1u), equal(x, uvec2(0u))); + return uvec2((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_1ad138() { + uvec2 res = tint_count_trailing_zeros(uvec2(0u, 0u)); +} + +void compute_main() { + countTrailingZeros_1ad138(); +} + +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/countTrailingZeros/1ad138.wgsl.expected.hlsl b/test/tint/builtins/gen/countTrailingZeros/1ad138.wgsl.expected.hlsl new file mode 100644 index 0000000000..1363b0ca8b --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/1ad138.wgsl.expected.hlsl @@ -0,0 +1,45 @@ +uint2 tint_count_trailing_zeros(uint2 v) { + uint2 x = uint2(v); + const uint2 b16 = (bool2((x & uint2((65535u).xx))) ? uint2((0u).xx) : uint2((16u).xx)); + x = (x >> b16); + const uint2 b8 = (bool2((x & uint2((255u).xx))) ? uint2((0u).xx) : uint2((8u).xx)); + x = (x >> b8); + const uint2 b4 = (bool2((x & uint2((15u).xx))) ? uint2((0u).xx) : uint2((4u).xx)); + x = (x >> b4); + const uint2 b2 = (bool2((x & uint2((3u).xx))) ? uint2((0u).xx) : uint2((2u).xx)); + x = (x >> b2); + const uint2 b1 = (bool2((x & uint2((1u).xx))) ? uint2((0u).xx) : uint2((1u).xx)); + const uint2 is_zero = ((x == uint2((0u).xx)) ? uint2((1u).xx) : uint2((0u).xx)); + return uint2((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_1ad138() { + uint2 res = tint_count_trailing_zeros(uint2(0u, 0u)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + countTrailingZeros_1ad138(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + countTrailingZeros_1ad138(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + countTrailingZeros_1ad138(); + return; +} diff --git a/test/tint/builtins/gen/countTrailingZeros/1ad138.wgsl.expected.msl b/test/tint/builtins/gen/countTrailingZeros/1ad138.wgsl.expected.msl new file mode 100644 index 0000000000..1db16bf7eb --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/1ad138.wgsl.expected.msl @@ -0,0 +1,33 @@ +#include + +using namespace metal; +void countTrailingZeros_1ad138() { + uint2 res = ctz(uint2()); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + countTrailingZeros_1ad138(); + return float4(); +} + +vertex tint_symbol vertex_main() { + float4 const inner_result = vertex_main_inner(); + tint_symbol wrapper_result = {}; + wrapper_result.value = inner_result; + return wrapper_result; +} + +fragment void fragment_main() { + countTrailingZeros_1ad138(); + return; +} + +kernel void compute_main() { + countTrailingZeros_1ad138(); + return; +} + diff --git a/test/tint/builtins/gen/countTrailingZeros/1ad138.wgsl.expected.spvasm b/test/tint/builtins/gen/countTrailingZeros/1ad138.wgsl.expected.spvasm new file mode 100644 index 0000000000..96849eff1c --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/1ad138.wgsl.expected.spvasm @@ -0,0 +1,140 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 98 +; 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 %tint_count_trailing_zeros "tint_count_trailing_zeros" + OpName %v "v" + OpName %x "x" + OpName %countTrailingZeros_1ad138 "countTrailingZeros_1ad138" + 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 + %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 + %v2uint = OpTypeVector %uint 2 + %9 = OpTypeFunction %v2uint %v2uint +%_ptr_Function_v2uint = OpTypePointer Function %v2uint + %18 = OpConstantNull %v2uint + %bool = OpTypeBool + %v2bool = OpTypeVector %bool 2 + %uint_65535 = OpConstant %uint 65535 + %25 = OpConstantComposite %v2uint %uint_65535 %uint_65535 + %uint_0 = OpConstant %uint 0 + %28 = OpConstantComposite %v2uint %uint_0 %uint_0 + %uint_16 = OpConstant %uint 16 + %30 = OpConstantComposite %v2uint %uint_16 %uint_16 + %uint_255 = OpConstant %uint 255 + %37 = OpConstantComposite %v2uint %uint_255 %uint_255 + %uint_8 = OpConstant %uint 8 + %40 = OpConstantComposite %v2uint %uint_8 %uint_8 + %uint_15 = OpConstant %uint 15 + %47 = OpConstantComposite %v2uint %uint_15 %uint_15 + %uint_4 = OpConstant %uint 4 + %50 = OpConstantComposite %v2uint %uint_4 %uint_4 + %uint_3 = OpConstant %uint 3 + %57 = OpConstantComposite %v2uint %uint_3 %uint_3 + %uint_2 = OpConstant %uint 2 + %60 = OpConstantComposite %v2uint %uint_2 %uint_2 + %uint_1 = OpConstant %uint 1 + %67 = OpConstantComposite %v2uint %uint_1 %uint_1 + %void = OpTypeVoid + %78 = OpTypeFunction %void + %84 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%tint_count_trailing_zeros = OpFunction %v2uint None %9 + %v = OpFunctionParameter %v2uint + %14 = OpLabel + %x = OpVariable %_ptr_Function_v2uint Function %18 + OpStore %x %v + %23 = OpLoad %v2uint %x + %26 = OpBitwiseAnd %v2uint %23 %25 + %20 = OpINotEqual %v2bool %26 %18 + %19 = OpSelect %v2uint %20 %28 %30 + %31 = OpLoad %v2uint %x + %32 = OpShiftRightLogical %v2uint %31 %19 + OpStore %x %32 + %35 = OpLoad %v2uint %x + %38 = OpBitwiseAnd %v2uint %35 %37 + %34 = OpINotEqual %v2bool %38 %18 + %33 = OpSelect %v2uint %34 %28 %40 + %41 = OpLoad %v2uint %x + %42 = OpShiftRightLogical %v2uint %41 %33 + OpStore %x %42 + %45 = OpLoad %v2uint %x + %48 = OpBitwiseAnd %v2uint %45 %47 + %44 = OpINotEqual %v2bool %48 %18 + %43 = OpSelect %v2uint %44 %28 %50 + %51 = OpLoad %v2uint %x + %52 = OpShiftRightLogical %v2uint %51 %43 + OpStore %x %52 + %55 = OpLoad %v2uint %x + %58 = OpBitwiseAnd %v2uint %55 %57 + %54 = OpINotEqual %v2bool %58 %18 + %53 = OpSelect %v2uint %54 %28 %60 + %61 = OpLoad %v2uint %x + %62 = OpShiftRightLogical %v2uint %61 %53 + OpStore %x %62 + %65 = OpLoad %v2uint %x + %68 = OpBitwiseAnd %v2uint %65 %67 + %64 = OpINotEqual %v2bool %68 %18 + %63 = OpSelect %v2uint %64 %28 %67 + %70 = OpLoad %v2uint %x + %71 = OpIEqual %v2bool %70 %28 + %69 = OpSelect %v2uint %71 %67 %28 + %73 = OpBitwiseOr %v2uint %19 %33 + %74 = OpBitwiseOr %v2uint %73 %43 + %75 = OpBitwiseOr %v2uint %74 %53 + %76 = OpBitwiseOr %v2uint %75 %63 + %77 = OpIAdd %v2uint %76 %69 + OpReturnValue %77 + OpFunctionEnd +%countTrailingZeros_1ad138 = OpFunction %void None %78 + %81 = OpLabel + %res = OpVariable %_ptr_Function_v2uint Function %18 + %82 = OpFunctionCall %v2uint %tint_count_trailing_zeros %18 + OpStore %res %82 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %84 + %86 = OpLabel + %87 = OpFunctionCall %void %countTrailingZeros_1ad138 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %78 + %89 = OpLabel + %90 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %90 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %78 + %93 = OpLabel + %94 = OpFunctionCall %void %countTrailingZeros_1ad138 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %78 + %96 = OpLabel + %97 = OpFunctionCall %void %countTrailingZeros_1ad138 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/countTrailingZeros/1ad138.wgsl.expected.wgsl b/test/tint/builtins/gen/countTrailingZeros/1ad138.wgsl.expected.wgsl new file mode 100644 index 0000000000..049f99f72c --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/1ad138.wgsl.expected.wgsl @@ -0,0 +1,19 @@ +fn countTrailingZeros_1ad138() { + var res : vec2 = countTrailingZeros(vec2()); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + countTrailingZeros_1ad138(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + countTrailingZeros_1ad138(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + countTrailingZeros_1ad138(); +} diff --git a/test/tint/builtins/gen/countTrailingZeros/1dc84a.wgsl b/test/tint/builtins/gen/countTrailingZeros/1dc84a.wgsl new file mode 100644 index 0000000000..a2a9bb8eae --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/1dc84a.wgsl @@ -0,0 +1,45 @@ +// Copyright 2021 The Tint Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//////////////////////////////////////////////////////////////////////////////// +// File generated by tools/builtin-gen +// using the template: +// test/tint/builtins/builtins.wgsl.tmpl +// and the builtin defintion file: +// src/tint/builtins.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + + +// fn countTrailingZeros(vec<4, i32>) -> vec<4, i32> +fn countTrailingZeros_1dc84a() { + var res: vec4 = countTrailingZeros(vec4()); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + countTrailingZeros_1dc84a(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + countTrailingZeros_1dc84a(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + countTrailingZeros_1dc84a(); +} diff --git a/test/tint/builtins/gen/countTrailingZeros/1dc84a.wgsl.expected.glsl b/test/tint/builtins/gen/countTrailingZeros/1dc84a.wgsl.expected.glsl new file mode 100644 index 0000000000..ec748ac557 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/1dc84a.wgsl.expected.glsl @@ -0,0 +1,93 @@ +#version 310 es + +ivec4 tint_count_trailing_zeros(ivec4 v) { + uvec4 x = uvec4(v); + uvec4 b16 = mix(uvec4(16u), uvec4(0u), bvec4((x & uvec4(65535u)))); + x = (x >> b16); + uvec4 b8 = mix(uvec4(8u), uvec4(0u), bvec4((x & uvec4(255u)))); + x = (x >> b8); + uvec4 b4 = mix(uvec4(4u), uvec4(0u), bvec4((x & uvec4(15u)))); + x = (x >> b4); + uvec4 b2 = mix(uvec4(2u), uvec4(0u), bvec4((x & uvec4(3u)))); + x = (x >> b2); + uvec4 b1 = mix(uvec4(1u), uvec4(0u), bvec4((x & uvec4(1u)))); + uvec4 is_zero = mix(uvec4(0u), uvec4(1u), equal(x, uvec4(0u))); + return ivec4((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_1dc84a() { + ivec4 res = tint_count_trailing_zeros(ivec4(0, 0, 0, 0)); +} + +vec4 vertex_main() { + countTrailingZeros_1dc84a(); + return vec4(0.0f, 0.0f, 0.0f, 0.0f); +} + +void main() { + 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 mediump float; + +ivec4 tint_count_trailing_zeros(ivec4 v) { + uvec4 x = uvec4(v); + uvec4 b16 = mix(uvec4(16u), uvec4(0u), bvec4((x & uvec4(65535u)))); + x = (x >> b16); + uvec4 b8 = mix(uvec4(8u), uvec4(0u), bvec4((x & uvec4(255u)))); + x = (x >> b8); + uvec4 b4 = mix(uvec4(4u), uvec4(0u), bvec4((x & uvec4(15u)))); + x = (x >> b4); + uvec4 b2 = mix(uvec4(2u), uvec4(0u), bvec4((x & uvec4(3u)))); + x = (x >> b2); + uvec4 b1 = mix(uvec4(1u), uvec4(0u), bvec4((x & uvec4(1u)))); + uvec4 is_zero = mix(uvec4(0u), uvec4(1u), equal(x, uvec4(0u))); + return ivec4((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_1dc84a() { + ivec4 res = tint_count_trailing_zeros(ivec4(0, 0, 0, 0)); +} + +void fragment_main() { + countTrailingZeros_1dc84a(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +ivec4 tint_count_trailing_zeros(ivec4 v) { + uvec4 x = uvec4(v); + uvec4 b16 = mix(uvec4(16u), uvec4(0u), bvec4((x & uvec4(65535u)))); + x = (x >> b16); + uvec4 b8 = mix(uvec4(8u), uvec4(0u), bvec4((x & uvec4(255u)))); + x = (x >> b8); + uvec4 b4 = mix(uvec4(4u), uvec4(0u), bvec4((x & uvec4(15u)))); + x = (x >> b4); + uvec4 b2 = mix(uvec4(2u), uvec4(0u), bvec4((x & uvec4(3u)))); + x = (x >> b2); + uvec4 b1 = mix(uvec4(1u), uvec4(0u), bvec4((x & uvec4(1u)))); + uvec4 is_zero = mix(uvec4(0u), uvec4(1u), equal(x, uvec4(0u))); + return ivec4((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_1dc84a() { + ivec4 res = tint_count_trailing_zeros(ivec4(0, 0, 0, 0)); +} + +void compute_main() { + countTrailingZeros_1dc84a(); +} + +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/countTrailingZeros/1dc84a.wgsl.expected.hlsl b/test/tint/builtins/gen/countTrailingZeros/1dc84a.wgsl.expected.hlsl new file mode 100644 index 0000000000..6808031f08 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/1dc84a.wgsl.expected.hlsl @@ -0,0 +1,45 @@ +int4 tint_count_trailing_zeros(int4 v) { + uint4 x = uint4(v); + const uint4 b16 = (bool4((x & uint4((65535u).xxxx))) ? uint4((0u).xxxx) : uint4((16u).xxxx)); + x = (x >> b16); + const uint4 b8 = (bool4((x & uint4((255u).xxxx))) ? uint4((0u).xxxx) : uint4((8u).xxxx)); + x = (x >> b8); + const uint4 b4 = (bool4((x & uint4((15u).xxxx))) ? uint4((0u).xxxx) : uint4((4u).xxxx)); + x = (x >> b4); + const uint4 b2 = (bool4((x & uint4((3u).xxxx))) ? uint4((0u).xxxx) : uint4((2u).xxxx)); + x = (x >> b2); + const uint4 b1 = (bool4((x & uint4((1u).xxxx))) ? uint4((0u).xxxx) : uint4((1u).xxxx)); + const uint4 is_zero = ((x == uint4((0u).xxxx)) ? uint4((1u).xxxx) : uint4((0u).xxxx)); + return int4((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_1dc84a() { + int4 res = tint_count_trailing_zeros(int4(0, 0, 0, 0)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + countTrailingZeros_1dc84a(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + countTrailingZeros_1dc84a(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + countTrailingZeros_1dc84a(); + return; +} diff --git a/test/tint/builtins/gen/countTrailingZeros/1dc84a.wgsl.expected.msl b/test/tint/builtins/gen/countTrailingZeros/1dc84a.wgsl.expected.msl new file mode 100644 index 0000000000..33863bf6f7 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/1dc84a.wgsl.expected.msl @@ -0,0 +1,33 @@ +#include + +using namespace metal; +void countTrailingZeros_1dc84a() { + int4 res = ctz(int4()); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + countTrailingZeros_1dc84a(); + return float4(); +} + +vertex tint_symbol vertex_main() { + float4 const inner_result = vertex_main_inner(); + tint_symbol wrapper_result = {}; + wrapper_result.value = inner_result; + return wrapper_result; +} + +fragment void fragment_main() { + countTrailingZeros_1dc84a(); + return; +} + +kernel void compute_main() { + countTrailingZeros_1dc84a(); + return; +} + diff --git a/test/tint/builtins/gen/countTrailingZeros/1dc84a.wgsl.expected.spvasm b/test/tint/builtins/gen/countTrailingZeros/1dc84a.wgsl.expected.spvasm new file mode 100644 index 0000000000..dfc1ee712f --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/1dc84a.wgsl.expected.spvasm @@ -0,0 +1,146 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 102 +; 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 %tint_count_trailing_zeros "tint_count_trailing_zeros" + OpName %v "v" + OpName %x "x" + OpName %countTrailingZeros_1dc84a "countTrailingZeros_1dc84a" + 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 + %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 + %9 = OpTypeFunction %v4int %v4int + %uint = OpTypeInt 32 0 + %v4uint = OpTypeVector %uint 4 +%_ptr_Function_v4uint = OpTypePointer Function %v4uint + %20 = OpConstantNull %v4uint + %bool = OpTypeBool + %v4bool = OpTypeVector %bool 4 + %uint_65535 = OpConstant %uint 65535 + %27 = OpConstantComposite %v4uint %uint_65535 %uint_65535 %uint_65535 %uint_65535 + %uint_0 = OpConstant %uint 0 + %30 = OpConstantComposite %v4uint %uint_0 %uint_0 %uint_0 %uint_0 + %uint_16 = OpConstant %uint 16 + %32 = OpConstantComposite %v4uint %uint_16 %uint_16 %uint_16 %uint_16 + %uint_255 = OpConstant %uint 255 + %39 = OpConstantComposite %v4uint %uint_255 %uint_255 %uint_255 %uint_255 + %uint_8 = OpConstant %uint 8 + %42 = OpConstantComposite %v4uint %uint_8 %uint_8 %uint_8 %uint_8 + %uint_15 = OpConstant %uint 15 + %49 = OpConstantComposite %v4uint %uint_15 %uint_15 %uint_15 %uint_15 + %uint_4 = OpConstant %uint 4 + %52 = OpConstantComposite %v4uint %uint_4 %uint_4 %uint_4 %uint_4 + %uint_3 = OpConstant %uint 3 + %59 = OpConstantComposite %v4uint %uint_3 %uint_3 %uint_3 %uint_3 + %uint_2 = OpConstant %uint 2 + %62 = OpConstantComposite %v4uint %uint_2 %uint_2 %uint_2 %uint_2 + %uint_1 = OpConstant %uint 1 + %69 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1 + %void = OpTypeVoid + %80 = OpTypeFunction %void + %85 = OpConstantNull %v4int +%_ptr_Function_v4int = OpTypePointer Function %v4int + %88 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%tint_count_trailing_zeros = OpFunction %v4int None %9 + %v = OpFunctionParameter %v4int + %14 = OpLabel + %x = OpVariable %_ptr_Function_v4uint Function %20 + %15 = OpBitcast %v4uint %v + OpStore %x %15 + %25 = OpLoad %v4uint %x + %28 = OpBitwiseAnd %v4uint %25 %27 + %22 = OpINotEqual %v4bool %28 %20 + %21 = OpSelect %v4uint %22 %30 %32 + %33 = OpLoad %v4uint %x + %34 = OpShiftRightLogical %v4uint %33 %21 + OpStore %x %34 + %37 = OpLoad %v4uint %x + %40 = OpBitwiseAnd %v4uint %37 %39 + %36 = OpINotEqual %v4bool %40 %20 + %35 = OpSelect %v4uint %36 %30 %42 + %43 = OpLoad %v4uint %x + %44 = OpShiftRightLogical %v4uint %43 %35 + OpStore %x %44 + %47 = OpLoad %v4uint %x + %50 = OpBitwiseAnd %v4uint %47 %49 + %46 = OpINotEqual %v4bool %50 %20 + %45 = OpSelect %v4uint %46 %30 %52 + %53 = OpLoad %v4uint %x + %54 = OpShiftRightLogical %v4uint %53 %45 + OpStore %x %54 + %57 = OpLoad %v4uint %x + %60 = OpBitwiseAnd %v4uint %57 %59 + %56 = OpINotEqual %v4bool %60 %20 + %55 = OpSelect %v4uint %56 %30 %62 + %63 = OpLoad %v4uint %x + %64 = OpShiftRightLogical %v4uint %63 %55 + OpStore %x %64 + %67 = OpLoad %v4uint %x + %70 = OpBitwiseAnd %v4uint %67 %69 + %66 = OpINotEqual %v4bool %70 %20 + %65 = OpSelect %v4uint %66 %30 %69 + %72 = OpLoad %v4uint %x + %73 = OpIEqual %v4bool %72 %30 + %71 = OpSelect %v4uint %73 %69 %30 + %75 = OpBitwiseOr %v4uint %21 %35 + %76 = OpBitwiseOr %v4uint %75 %45 + %77 = OpBitwiseOr %v4uint %76 %55 + %78 = OpBitwiseOr %v4uint %77 %65 + %79 = OpIAdd %v4uint %78 %71 + %74 = OpBitcast %v4int %79 + OpReturnValue %74 + OpFunctionEnd +%countTrailingZeros_1dc84a = OpFunction %void None %80 + %83 = OpLabel + %res = OpVariable %_ptr_Function_v4int Function %85 + %84 = OpFunctionCall %v4int %tint_count_trailing_zeros %85 + OpStore %res %84 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %88 + %90 = OpLabel + %91 = OpFunctionCall %void %countTrailingZeros_1dc84a + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %80 + %93 = OpLabel + %94 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %94 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %80 + %97 = OpLabel + %98 = OpFunctionCall %void %countTrailingZeros_1dc84a + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %80 + %100 = OpLabel + %101 = OpFunctionCall %void %countTrailingZeros_1dc84a + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/countTrailingZeros/1dc84a.wgsl.expected.wgsl b/test/tint/builtins/gen/countTrailingZeros/1dc84a.wgsl.expected.wgsl new file mode 100644 index 0000000000..de89ed5a51 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/1dc84a.wgsl.expected.wgsl @@ -0,0 +1,19 @@ +fn countTrailingZeros_1dc84a() { + var res : vec4 = countTrailingZeros(vec4()); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + countTrailingZeros_1dc84a(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + countTrailingZeros_1dc84a(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + countTrailingZeros_1dc84a(); +} diff --git a/test/tint/builtins/gen/countTrailingZeros/21e394.wgsl b/test/tint/builtins/gen/countTrailingZeros/21e394.wgsl new file mode 100644 index 0000000000..16b9a453d2 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/21e394.wgsl @@ -0,0 +1,45 @@ +// Copyright 2021 The Tint Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//////////////////////////////////////////////////////////////////////////////// +// File generated by tools/builtin-gen +// using the template: +// test/tint/builtins/builtins.wgsl.tmpl +// and the builtin defintion file: +// src/tint/builtins.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + + +// fn countTrailingZeros(u32) -> u32 +fn countTrailingZeros_21e394() { + var res: u32 = countTrailingZeros(1u); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + countTrailingZeros_21e394(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + countTrailingZeros_21e394(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + countTrailingZeros_21e394(); +} diff --git a/test/tint/builtins/gen/countTrailingZeros/21e394.wgsl.expected.glsl b/test/tint/builtins/gen/countTrailingZeros/21e394.wgsl.expected.glsl new file mode 100644 index 0000000000..8506e9674b --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/21e394.wgsl.expected.glsl @@ -0,0 +1,93 @@ +#version 310 es + +uint tint_count_trailing_zeros(uint v) { + uint x = uint(v); + uint b16 = (bool((x & 65535u)) ? 0u : 16u); + x = (x >> b16); + uint b8 = (bool((x & 255u)) ? 0u : 8u); + x = (x >> b8); + uint b4 = (bool((x & 15u)) ? 0u : 4u); + x = (x >> b4); + uint b2 = (bool((x & 3u)) ? 0u : 2u); + x = (x >> b2); + uint b1 = (bool((x & 1u)) ? 0u : 1u); + uint is_zero = ((x == 0u) ? 1u : 0u); + return uint((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_21e394() { + uint res = tint_count_trailing_zeros(1u); +} + +vec4 vertex_main() { + countTrailingZeros_21e394(); + return vec4(0.0f, 0.0f, 0.0f, 0.0f); +} + +void main() { + 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 mediump float; + +uint tint_count_trailing_zeros(uint v) { + uint x = uint(v); + uint b16 = (bool((x & 65535u)) ? 0u : 16u); + x = (x >> b16); + uint b8 = (bool((x & 255u)) ? 0u : 8u); + x = (x >> b8); + uint b4 = (bool((x & 15u)) ? 0u : 4u); + x = (x >> b4); + uint b2 = (bool((x & 3u)) ? 0u : 2u); + x = (x >> b2); + uint b1 = (bool((x & 1u)) ? 0u : 1u); + uint is_zero = ((x == 0u) ? 1u : 0u); + return uint((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_21e394() { + uint res = tint_count_trailing_zeros(1u); +} + +void fragment_main() { + countTrailingZeros_21e394(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +uint tint_count_trailing_zeros(uint v) { + uint x = uint(v); + uint b16 = (bool((x & 65535u)) ? 0u : 16u); + x = (x >> b16); + uint b8 = (bool((x & 255u)) ? 0u : 8u); + x = (x >> b8); + uint b4 = (bool((x & 15u)) ? 0u : 4u); + x = (x >> b4); + uint b2 = (bool((x & 3u)) ? 0u : 2u); + x = (x >> b2); + uint b1 = (bool((x & 1u)) ? 0u : 1u); + uint is_zero = ((x == 0u) ? 1u : 0u); + return uint((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_21e394() { + uint res = tint_count_trailing_zeros(1u); +} + +void compute_main() { + countTrailingZeros_21e394(); +} + +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/countTrailingZeros/21e394.wgsl.expected.hlsl b/test/tint/builtins/gen/countTrailingZeros/21e394.wgsl.expected.hlsl new file mode 100644 index 0000000000..ab5a62f133 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/21e394.wgsl.expected.hlsl @@ -0,0 +1,45 @@ +uint tint_count_trailing_zeros(uint v) { + uint x = uint(v); + const uint b16 = (bool((x & 65535u)) ? 0u : 16u); + x = (x >> b16); + const uint b8 = (bool((x & 255u)) ? 0u : 8u); + x = (x >> b8); + const uint b4 = (bool((x & 15u)) ? 0u : 4u); + x = (x >> b4); + const uint b2 = (bool((x & 3u)) ? 0u : 2u); + x = (x >> b2); + const uint b1 = (bool((x & 1u)) ? 0u : 1u); + const uint is_zero = ((x == 0u) ? 1u : 0u); + return uint((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_21e394() { + uint res = tint_count_trailing_zeros(1u); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + countTrailingZeros_21e394(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + countTrailingZeros_21e394(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + countTrailingZeros_21e394(); + return; +} diff --git a/test/tint/builtins/gen/countTrailingZeros/21e394.wgsl.expected.msl b/test/tint/builtins/gen/countTrailingZeros/21e394.wgsl.expected.msl new file mode 100644 index 0000000000..224d4ce684 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/21e394.wgsl.expected.msl @@ -0,0 +1,33 @@ +#include + +using namespace metal; +void countTrailingZeros_21e394() { + uint res = ctz(1u); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + countTrailingZeros_21e394(); + return float4(); +} + +vertex tint_symbol vertex_main() { + float4 const inner_result = vertex_main_inner(); + tint_symbol wrapper_result = {}; + wrapper_result.value = inner_result; + return wrapper_result; +} + +fragment void fragment_main() { + countTrailingZeros_21e394(); + return; +} + +kernel void compute_main() { + countTrailingZeros_21e394(); + return; +} + diff --git a/test/tint/builtins/gen/countTrailingZeros/21e394.wgsl.expected.spvasm b/test/tint/builtins/gen/countTrailingZeros/21e394.wgsl.expected.spvasm new file mode 100644 index 0000000000..3d313b6858 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/21e394.wgsl.expected.spvasm @@ -0,0 +1,128 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 86 +; 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 %tint_count_trailing_zeros "tint_count_trailing_zeros" + OpName %v "v" + OpName %x "x" + OpName %countTrailingZeros_21e394 "countTrailingZeros_21e394" + 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 + %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 + %9 = OpTypeFunction %uint %uint +%_ptr_Function_uint = OpTypePointer Function %uint + %17 = OpConstantNull %uint + %bool = OpTypeBool + %uint_65535 = OpConstant %uint 65535 + %uint_0 = OpConstant %uint 0 + %uint_16 = OpConstant %uint 16 + %uint_255 = OpConstant %uint 255 + %uint_8 = OpConstant %uint 8 + %uint_15 = OpConstant %uint 15 + %uint_4 = OpConstant %uint 4 + %uint_3 = OpConstant %uint 3 + %uint_2 = OpConstant %uint 2 + %uint_1 = OpConstant %uint 1 + %void = OpTypeVoid + %66 = OpTypeFunction %void + %72 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%tint_count_trailing_zeros = OpFunction %uint None %9 + %v = OpFunctionParameter %uint + %13 = OpLabel + %x = OpVariable %_ptr_Function_uint Function %17 + OpStore %x %v + %21 = OpLoad %uint %x + %23 = OpBitwiseAnd %uint %21 %uint_65535 + %19 = OpINotEqual %bool %23 %17 + %18 = OpSelect %uint %19 %uint_0 %uint_16 + %26 = OpLoad %uint %x + %27 = OpShiftRightLogical %uint %26 %18 + OpStore %x %27 + %30 = OpLoad %uint %x + %32 = OpBitwiseAnd %uint %30 %uint_255 + %29 = OpINotEqual %bool %32 %17 + %28 = OpSelect %uint %29 %uint_0 %uint_8 + %34 = OpLoad %uint %x + %35 = OpShiftRightLogical %uint %34 %28 + OpStore %x %35 + %38 = OpLoad %uint %x + %40 = OpBitwiseAnd %uint %38 %uint_15 + %37 = OpINotEqual %bool %40 %17 + %36 = OpSelect %uint %37 %uint_0 %uint_4 + %42 = OpLoad %uint %x + %43 = OpShiftRightLogical %uint %42 %36 + OpStore %x %43 + %46 = OpLoad %uint %x + %48 = OpBitwiseAnd %uint %46 %uint_3 + %45 = OpINotEqual %bool %48 %17 + %44 = OpSelect %uint %45 %uint_0 %uint_2 + %50 = OpLoad %uint %x + %51 = OpShiftRightLogical %uint %50 %44 + OpStore %x %51 + %54 = OpLoad %uint %x + %56 = OpBitwiseAnd %uint %54 %uint_1 + %53 = OpINotEqual %bool %56 %17 + %52 = OpSelect %uint %53 %uint_0 %uint_1 + %58 = OpLoad %uint %x + %59 = OpIEqual %bool %58 %uint_0 + %57 = OpSelect %uint %59 %uint_1 %uint_0 + %61 = OpBitwiseOr %uint %18 %28 + %62 = OpBitwiseOr %uint %61 %36 + %63 = OpBitwiseOr %uint %62 %44 + %64 = OpBitwiseOr %uint %63 %52 + %65 = OpIAdd %uint %64 %57 + OpReturnValue %65 + OpFunctionEnd +%countTrailingZeros_21e394 = OpFunction %void None %66 + %69 = OpLabel + %res = OpVariable %_ptr_Function_uint Function %17 + %70 = OpFunctionCall %uint %tint_count_trailing_zeros %uint_1 + OpStore %res %70 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %72 + %74 = OpLabel + %75 = OpFunctionCall %void %countTrailingZeros_21e394 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %66 + %77 = OpLabel + %78 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %78 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %66 + %81 = OpLabel + %82 = OpFunctionCall %void %countTrailingZeros_21e394 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %66 + %84 = OpLabel + %85 = OpFunctionCall %void %countTrailingZeros_21e394 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/countTrailingZeros/21e394.wgsl.expected.wgsl b/test/tint/builtins/gen/countTrailingZeros/21e394.wgsl.expected.wgsl new file mode 100644 index 0000000000..a11d84963b --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/21e394.wgsl.expected.wgsl @@ -0,0 +1,19 @@ +fn countTrailingZeros_21e394() { + var res : u32 = countTrailingZeros(1u); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + countTrailingZeros_21e394(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + countTrailingZeros_21e394(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + countTrailingZeros_21e394(); +} diff --git a/test/tint/builtins/gen/countTrailingZeros/327c37.wgsl b/test/tint/builtins/gen/countTrailingZeros/327c37.wgsl new file mode 100644 index 0000000000..6483038d84 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/327c37.wgsl @@ -0,0 +1,45 @@ +// Copyright 2021 The Tint Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//////////////////////////////////////////////////////////////////////////////// +// File generated by tools/builtin-gen +// using the template: +// test/tint/builtins/builtins.wgsl.tmpl +// and the builtin defintion file: +// src/tint/builtins.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + + +// fn countTrailingZeros(vec<2, i32>) -> vec<2, i32> +fn countTrailingZeros_327c37() { + var res: vec2 = countTrailingZeros(vec2()); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + countTrailingZeros_327c37(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + countTrailingZeros_327c37(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + countTrailingZeros_327c37(); +} diff --git a/test/tint/builtins/gen/countTrailingZeros/327c37.wgsl.expected.glsl b/test/tint/builtins/gen/countTrailingZeros/327c37.wgsl.expected.glsl new file mode 100644 index 0000000000..30177ab9a1 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/327c37.wgsl.expected.glsl @@ -0,0 +1,93 @@ +#version 310 es + +ivec2 tint_count_trailing_zeros(ivec2 v) { + uvec2 x = uvec2(v); + uvec2 b16 = mix(uvec2(16u), uvec2(0u), bvec2((x & uvec2(65535u)))); + x = (x >> b16); + uvec2 b8 = mix(uvec2(8u), uvec2(0u), bvec2((x & uvec2(255u)))); + x = (x >> b8); + uvec2 b4 = mix(uvec2(4u), uvec2(0u), bvec2((x & uvec2(15u)))); + x = (x >> b4); + uvec2 b2 = mix(uvec2(2u), uvec2(0u), bvec2((x & uvec2(3u)))); + x = (x >> b2); + uvec2 b1 = mix(uvec2(1u), uvec2(0u), bvec2((x & uvec2(1u)))); + uvec2 is_zero = mix(uvec2(0u), uvec2(1u), equal(x, uvec2(0u))); + return ivec2((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_327c37() { + ivec2 res = tint_count_trailing_zeros(ivec2(0, 0)); +} + +vec4 vertex_main() { + countTrailingZeros_327c37(); + return vec4(0.0f, 0.0f, 0.0f, 0.0f); +} + +void main() { + 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 mediump float; + +ivec2 tint_count_trailing_zeros(ivec2 v) { + uvec2 x = uvec2(v); + uvec2 b16 = mix(uvec2(16u), uvec2(0u), bvec2((x & uvec2(65535u)))); + x = (x >> b16); + uvec2 b8 = mix(uvec2(8u), uvec2(0u), bvec2((x & uvec2(255u)))); + x = (x >> b8); + uvec2 b4 = mix(uvec2(4u), uvec2(0u), bvec2((x & uvec2(15u)))); + x = (x >> b4); + uvec2 b2 = mix(uvec2(2u), uvec2(0u), bvec2((x & uvec2(3u)))); + x = (x >> b2); + uvec2 b1 = mix(uvec2(1u), uvec2(0u), bvec2((x & uvec2(1u)))); + uvec2 is_zero = mix(uvec2(0u), uvec2(1u), equal(x, uvec2(0u))); + return ivec2((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_327c37() { + ivec2 res = tint_count_trailing_zeros(ivec2(0, 0)); +} + +void fragment_main() { + countTrailingZeros_327c37(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +ivec2 tint_count_trailing_zeros(ivec2 v) { + uvec2 x = uvec2(v); + uvec2 b16 = mix(uvec2(16u), uvec2(0u), bvec2((x & uvec2(65535u)))); + x = (x >> b16); + uvec2 b8 = mix(uvec2(8u), uvec2(0u), bvec2((x & uvec2(255u)))); + x = (x >> b8); + uvec2 b4 = mix(uvec2(4u), uvec2(0u), bvec2((x & uvec2(15u)))); + x = (x >> b4); + uvec2 b2 = mix(uvec2(2u), uvec2(0u), bvec2((x & uvec2(3u)))); + x = (x >> b2); + uvec2 b1 = mix(uvec2(1u), uvec2(0u), bvec2((x & uvec2(1u)))); + uvec2 is_zero = mix(uvec2(0u), uvec2(1u), equal(x, uvec2(0u))); + return ivec2((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_327c37() { + ivec2 res = tint_count_trailing_zeros(ivec2(0, 0)); +} + +void compute_main() { + countTrailingZeros_327c37(); +} + +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/countTrailingZeros/327c37.wgsl.expected.hlsl b/test/tint/builtins/gen/countTrailingZeros/327c37.wgsl.expected.hlsl new file mode 100644 index 0000000000..c448cca713 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/327c37.wgsl.expected.hlsl @@ -0,0 +1,45 @@ +int2 tint_count_trailing_zeros(int2 v) { + uint2 x = uint2(v); + const uint2 b16 = (bool2((x & uint2((65535u).xx))) ? uint2((0u).xx) : uint2((16u).xx)); + x = (x >> b16); + const uint2 b8 = (bool2((x & uint2((255u).xx))) ? uint2((0u).xx) : uint2((8u).xx)); + x = (x >> b8); + const uint2 b4 = (bool2((x & uint2((15u).xx))) ? uint2((0u).xx) : uint2((4u).xx)); + x = (x >> b4); + const uint2 b2 = (bool2((x & uint2((3u).xx))) ? uint2((0u).xx) : uint2((2u).xx)); + x = (x >> b2); + const uint2 b1 = (bool2((x & uint2((1u).xx))) ? uint2((0u).xx) : uint2((1u).xx)); + const uint2 is_zero = ((x == uint2((0u).xx)) ? uint2((1u).xx) : uint2((0u).xx)); + return int2((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_327c37() { + int2 res = tint_count_trailing_zeros(int2(0, 0)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + countTrailingZeros_327c37(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + countTrailingZeros_327c37(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + countTrailingZeros_327c37(); + return; +} diff --git a/test/tint/builtins/gen/countTrailingZeros/327c37.wgsl.expected.msl b/test/tint/builtins/gen/countTrailingZeros/327c37.wgsl.expected.msl new file mode 100644 index 0000000000..3017464b97 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/327c37.wgsl.expected.msl @@ -0,0 +1,33 @@ +#include + +using namespace metal; +void countTrailingZeros_327c37() { + int2 res = ctz(int2()); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + countTrailingZeros_327c37(); + return float4(); +} + +vertex tint_symbol vertex_main() { + float4 const inner_result = vertex_main_inner(); + tint_symbol wrapper_result = {}; + wrapper_result.value = inner_result; + return wrapper_result; +} + +fragment void fragment_main() { + countTrailingZeros_327c37(); + return; +} + +kernel void compute_main() { + countTrailingZeros_327c37(); + return; +} + diff --git a/test/tint/builtins/gen/countTrailingZeros/327c37.wgsl.expected.spvasm b/test/tint/builtins/gen/countTrailingZeros/327c37.wgsl.expected.spvasm new file mode 100644 index 0000000000..ddd198690a --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/327c37.wgsl.expected.spvasm @@ -0,0 +1,146 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 102 +; 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 %tint_count_trailing_zeros "tint_count_trailing_zeros" + OpName %v "v" + OpName %x "x" + OpName %countTrailingZeros_327c37 "countTrailingZeros_327c37" + 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 + %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 + %v2int = OpTypeVector %int 2 + %9 = OpTypeFunction %v2int %v2int + %uint = OpTypeInt 32 0 + %v2uint = OpTypeVector %uint 2 +%_ptr_Function_v2uint = OpTypePointer Function %v2uint + %20 = OpConstantNull %v2uint + %bool = OpTypeBool + %v2bool = OpTypeVector %bool 2 + %uint_65535 = OpConstant %uint 65535 + %27 = OpConstantComposite %v2uint %uint_65535 %uint_65535 + %uint_0 = OpConstant %uint 0 + %30 = OpConstantComposite %v2uint %uint_0 %uint_0 + %uint_16 = OpConstant %uint 16 + %32 = OpConstantComposite %v2uint %uint_16 %uint_16 + %uint_255 = OpConstant %uint 255 + %39 = OpConstantComposite %v2uint %uint_255 %uint_255 + %uint_8 = OpConstant %uint 8 + %42 = OpConstantComposite %v2uint %uint_8 %uint_8 + %uint_15 = OpConstant %uint 15 + %49 = OpConstantComposite %v2uint %uint_15 %uint_15 + %uint_4 = OpConstant %uint 4 + %52 = OpConstantComposite %v2uint %uint_4 %uint_4 + %uint_3 = OpConstant %uint 3 + %59 = OpConstantComposite %v2uint %uint_3 %uint_3 + %uint_2 = OpConstant %uint 2 + %62 = OpConstantComposite %v2uint %uint_2 %uint_2 + %uint_1 = OpConstant %uint 1 + %69 = OpConstantComposite %v2uint %uint_1 %uint_1 + %void = OpTypeVoid + %80 = OpTypeFunction %void + %85 = OpConstantNull %v2int +%_ptr_Function_v2int = OpTypePointer Function %v2int + %88 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%tint_count_trailing_zeros = OpFunction %v2int None %9 + %v = OpFunctionParameter %v2int + %14 = OpLabel + %x = OpVariable %_ptr_Function_v2uint Function %20 + %15 = OpBitcast %v2uint %v + OpStore %x %15 + %25 = OpLoad %v2uint %x + %28 = OpBitwiseAnd %v2uint %25 %27 + %22 = OpINotEqual %v2bool %28 %20 + %21 = OpSelect %v2uint %22 %30 %32 + %33 = OpLoad %v2uint %x + %34 = OpShiftRightLogical %v2uint %33 %21 + OpStore %x %34 + %37 = OpLoad %v2uint %x + %40 = OpBitwiseAnd %v2uint %37 %39 + %36 = OpINotEqual %v2bool %40 %20 + %35 = OpSelect %v2uint %36 %30 %42 + %43 = OpLoad %v2uint %x + %44 = OpShiftRightLogical %v2uint %43 %35 + OpStore %x %44 + %47 = OpLoad %v2uint %x + %50 = OpBitwiseAnd %v2uint %47 %49 + %46 = OpINotEqual %v2bool %50 %20 + %45 = OpSelect %v2uint %46 %30 %52 + %53 = OpLoad %v2uint %x + %54 = OpShiftRightLogical %v2uint %53 %45 + OpStore %x %54 + %57 = OpLoad %v2uint %x + %60 = OpBitwiseAnd %v2uint %57 %59 + %56 = OpINotEqual %v2bool %60 %20 + %55 = OpSelect %v2uint %56 %30 %62 + %63 = OpLoad %v2uint %x + %64 = OpShiftRightLogical %v2uint %63 %55 + OpStore %x %64 + %67 = OpLoad %v2uint %x + %70 = OpBitwiseAnd %v2uint %67 %69 + %66 = OpINotEqual %v2bool %70 %20 + %65 = OpSelect %v2uint %66 %30 %69 + %72 = OpLoad %v2uint %x + %73 = OpIEqual %v2bool %72 %30 + %71 = OpSelect %v2uint %73 %69 %30 + %75 = OpBitwiseOr %v2uint %21 %35 + %76 = OpBitwiseOr %v2uint %75 %45 + %77 = OpBitwiseOr %v2uint %76 %55 + %78 = OpBitwiseOr %v2uint %77 %65 + %79 = OpIAdd %v2uint %78 %71 + %74 = OpBitcast %v2int %79 + OpReturnValue %74 + OpFunctionEnd +%countTrailingZeros_327c37 = OpFunction %void None %80 + %83 = OpLabel + %res = OpVariable %_ptr_Function_v2int Function %85 + %84 = OpFunctionCall %v2int %tint_count_trailing_zeros %85 + OpStore %res %84 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %88 + %90 = OpLabel + %91 = OpFunctionCall %void %countTrailingZeros_327c37 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %80 + %93 = OpLabel + %94 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %94 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %80 + %97 = OpLabel + %98 = OpFunctionCall %void %countTrailingZeros_327c37 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %80 + %100 = OpLabel + %101 = OpFunctionCall %void %countTrailingZeros_327c37 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/countTrailingZeros/327c37.wgsl.expected.wgsl b/test/tint/builtins/gen/countTrailingZeros/327c37.wgsl.expected.wgsl new file mode 100644 index 0000000000..b48dedfff8 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/327c37.wgsl.expected.wgsl @@ -0,0 +1,19 @@ +fn countTrailingZeros_327c37() { + var res : vec2 = countTrailingZeros(vec2()); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + countTrailingZeros_327c37(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + countTrailingZeros_327c37(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + countTrailingZeros_327c37(); +} diff --git a/test/tint/builtins/gen/countTrailingZeros/42fed6.wgsl b/test/tint/builtins/gen/countTrailingZeros/42fed6.wgsl new file mode 100644 index 0000000000..4eb07d08de --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/42fed6.wgsl @@ -0,0 +1,45 @@ +// Copyright 2021 The Tint Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//////////////////////////////////////////////////////////////////////////////// +// File generated by tools/builtin-gen +// using the template: +// test/tint/builtins/builtins.wgsl.tmpl +// and the builtin defintion file: +// src/tint/builtins.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + + +// fn countTrailingZeros(i32) -> i32 +fn countTrailingZeros_42fed6() { + var res: i32 = countTrailingZeros(1); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + countTrailingZeros_42fed6(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + countTrailingZeros_42fed6(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + countTrailingZeros_42fed6(); +} diff --git a/test/tint/builtins/gen/countTrailingZeros/42fed6.wgsl.expected.glsl b/test/tint/builtins/gen/countTrailingZeros/42fed6.wgsl.expected.glsl new file mode 100644 index 0000000000..e415bcc791 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/42fed6.wgsl.expected.glsl @@ -0,0 +1,93 @@ +#version 310 es + +int tint_count_trailing_zeros(int v) { + uint x = uint(v); + uint b16 = (bool((x & 65535u)) ? 0u : 16u); + x = (x >> b16); + uint b8 = (bool((x & 255u)) ? 0u : 8u); + x = (x >> b8); + uint b4 = (bool((x & 15u)) ? 0u : 4u); + x = (x >> b4); + uint b2 = (bool((x & 3u)) ? 0u : 2u); + x = (x >> b2); + uint b1 = (bool((x & 1u)) ? 0u : 1u); + uint is_zero = ((x == 0u) ? 1u : 0u); + return int((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_42fed6() { + int res = tint_count_trailing_zeros(1); +} + +vec4 vertex_main() { + countTrailingZeros_42fed6(); + return vec4(0.0f, 0.0f, 0.0f, 0.0f); +} + +void main() { + 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 mediump float; + +int tint_count_trailing_zeros(int v) { + uint x = uint(v); + uint b16 = (bool((x & 65535u)) ? 0u : 16u); + x = (x >> b16); + uint b8 = (bool((x & 255u)) ? 0u : 8u); + x = (x >> b8); + uint b4 = (bool((x & 15u)) ? 0u : 4u); + x = (x >> b4); + uint b2 = (bool((x & 3u)) ? 0u : 2u); + x = (x >> b2); + uint b1 = (bool((x & 1u)) ? 0u : 1u); + uint is_zero = ((x == 0u) ? 1u : 0u); + return int((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_42fed6() { + int res = tint_count_trailing_zeros(1); +} + +void fragment_main() { + countTrailingZeros_42fed6(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +int tint_count_trailing_zeros(int v) { + uint x = uint(v); + uint b16 = (bool((x & 65535u)) ? 0u : 16u); + x = (x >> b16); + uint b8 = (bool((x & 255u)) ? 0u : 8u); + x = (x >> b8); + uint b4 = (bool((x & 15u)) ? 0u : 4u); + x = (x >> b4); + uint b2 = (bool((x & 3u)) ? 0u : 2u); + x = (x >> b2); + uint b1 = (bool((x & 1u)) ? 0u : 1u); + uint is_zero = ((x == 0u) ? 1u : 0u); + return int((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_42fed6() { + int res = tint_count_trailing_zeros(1); +} + +void compute_main() { + countTrailingZeros_42fed6(); +} + +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/countTrailingZeros/42fed6.wgsl.expected.hlsl b/test/tint/builtins/gen/countTrailingZeros/42fed6.wgsl.expected.hlsl new file mode 100644 index 0000000000..b885337265 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/42fed6.wgsl.expected.hlsl @@ -0,0 +1,45 @@ +int tint_count_trailing_zeros(int v) { + uint x = uint(v); + const uint b16 = (bool((x & 65535u)) ? 0u : 16u); + x = (x >> b16); + const uint b8 = (bool((x & 255u)) ? 0u : 8u); + x = (x >> b8); + const uint b4 = (bool((x & 15u)) ? 0u : 4u); + x = (x >> b4); + const uint b2 = (bool((x & 3u)) ? 0u : 2u); + x = (x >> b2); + const uint b1 = (bool((x & 1u)) ? 0u : 1u); + const uint is_zero = ((x == 0u) ? 1u : 0u); + return int((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_42fed6() { + int res = tint_count_trailing_zeros(1); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + countTrailingZeros_42fed6(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + countTrailingZeros_42fed6(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + countTrailingZeros_42fed6(); + return; +} diff --git a/test/tint/builtins/gen/countTrailingZeros/42fed6.wgsl.expected.msl b/test/tint/builtins/gen/countTrailingZeros/42fed6.wgsl.expected.msl new file mode 100644 index 0000000000..2d69179817 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/42fed6.wgsl.expected.msl @@ -0,0 +1,33 @@ +#include + +using namespace metal; +void countTrailingZeros_42fed6() { + int res = ctz(1); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + countTrailingZeros_42fed6(); + return float4(); +} + +vertex tint_symbol vertex_main() { + float4 const inner_result = vertex_main_inner(); + tint_symbol wrapper_result = {}; + wrapper_result.value = inner_result; + return wrapper_result; +} + +fragment void fragment_main() { + countTrailingZeros_42fed6(); + return; +} + +kernel void compute_main() { + countTrailingZeros_42fed6(); + return; +} + diff --git a/test/tint/builtins/gen/countTrailingZeros/42fed6.wgsl.expected.spvasm b/test/tint/builtins/gen/countTrailingZeros/42fed6.wgsl.expected.spvasm new file mode 100644 index 0000000000..f5adcab446 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/42fed6.wgsl.expected.spvasm @@ -0,0 +1,134 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 90 +; 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 %tint_count_trailing_zeros "tint_count_trailing_zeros" + OpName %v "v" + OpName %x "x" + OpName %countTrailingZeros_42fed6 "countTrailingZeros_42fed6" + 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 + %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 + %9 = OpTypeFunction %int %int + %uint = OpTypeInt 32 0 +%_ptr_Function_uint = OpTypePointer Function %uint + %18 = OpConstantNull %uint + %bool = OpTypeBool + %uint_65535 = OpConstant %uint 65535 + %uint_0 = OpConstant %uint 0 + %uint_16 = OpConstant %uint 16 + %uint_255 = OpConstant %uint 255 + %uint_8 = OpConstant %uint 8 + %uint_15 = OpConstant %uint 15 + %uint_4 = OpConstant %uint 4 + %uint_3 = OpConstant %uint 3 + %uint_2 = OpConstant %uint 2 + %uint_1 = OpConstant %uint 1 + %void = OpTypeVoid + %67 = OpTypeFunction %void + %int_1 = OpConstant %int 1 +%_ptr_Function_int = OpTypePointer Function %int + %75 = OpConstantNull %int + %76 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%tint_count_trailing_zeros = OpFunction %int None %9 + %v = OpFunctionParameter %int + %13 = OpLabel + %x = OpVariable %_ptr_Function_uint Function %18 + %14 = OpBitcast %uint %v + OpStore %x %14 + %22 = OpLoad %uint %x + %24 = OpBitwiseAnd %uint %22 %uint_65535 + %20 = OpINotEqual %bool %24 %18 + %19 = OpSelect %uint %20 %uint_0 %uint_16 + %27 = OpLoad %uint %x + %28 = OpShiftRightLogical %uint %27 %19 + OpStore %x %28 + %31 = OpLoad %uint %x + %33 = OpBitwiseAnd %uint %31 %uint_255 + %30 = OpINotEqual %bool %33 %18 + %29 = OpSelect %uint %30 %uint_0 %uint_8 + %35 = OpLoad %uint %x + %36 = OpShiftRightLogical %uint %35 %29 + OpStore %x %36 + %39 = OpLoad %uint %x + %41 = OpBitwiseAnd %uint %39 %uint_15 + %38 = OpINotEqual %bool %41 %18 + %37 = OpSelect %uint %38 %uint_0 %uint_4 + %43 = OpLoad %uint %x + %44 = OpShiftRightLogical %uint %43 %37 + OpStore %x %44 + %47 = OpLoad %uint %x + %49 = OpBitwiseAnd %uint %47 %uint_3 + %46 = OpINotEqual %bool %49 %18 + %45 = OpSelect %uint %46 %uint_0 %uint_2 + %51 = OpLoad %uint %x + %52 = OpShiftRightLogical %uint %51 %45 + OpStore %x %52 + %55 = OpLoad %uint %x + %57 = OpBitwiseAnd %uint %55 %uint_1 + %54 = OpINotEqual %bool %57 %18 + %53 = OpSelect %uint %54 %uint_0 %uint_1 + %59 = OpLoad %uint %x + %60 = OpIEqual %bool %59 %uint_0 + %58 = OpSelect %uint %60 %uint_1 %uint_0 + %62 = OpBitwiseOr %uint %19 %29 + %63 = OpBitwiseOr %uint %62 %37 + %64 = OpBitwiseOr %uint %63 %45 + %65 = OpBitwiseOr %uint %64 %53 + %66 = OpIAdd %uint %65 %58 + %61 = OpBitcast %int %66 + OpReturnValue %61 + OpFunctionEnd +%countTrailingZeros_42fed6 = OpFunction %void None %67 + %70 = OpLabel + %res = OpVariable %_ptr_Function_int Function %75 + %71 = OpFunctionCall %int %tint_count_trailing_zeros %int_1 + OpStore %res %71 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %76 + %78 = OpLabel + %79 = OpFunctionCall %void %countTrailingZeros_42fed6 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %67 + %81 = OpLabel + %82 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %82 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %67 + %85 = OpLabel + %86 = OpFunctionCall %void %countTrailingZeros_42fed6 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %67 + %88 = OpLabel + %89 = OpFunctionCall %void %countTrailingZeros_42fed6 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/countTrailingZeros/42fed6.wgsl.expected.wgsl b/test/tint/builtins/gen/countTrailingZeros/42fed6.wgsl.expected.wgsl new file mode 100644 index 0000000000..6a560f3823 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/42fed6.wgsl.expected.wgsl @@ -0,0 +1,19 @@ +fn countTrailingZeros_42fed6() { + var res : i32 = countTrailingZeros(1); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + countTrailingZeros_42fed6(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + countTrailingZeros_42fed6(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + countTrailingZeros_42fed6(); +} diff --git a/test/tint/builtins/gen/countTrailingZeros/8ed26f.wgsl b/test/tint/builtins/gen/countTrailingZeros/8ed26f.wgsl new file mode 100644 index 0000000000..1ca199dd4f --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/8ed26f.wgsl @@ -0,0 +1,45 @@ +// Copyright 2021 The Tint Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//////////////////////////////////////////////////////////////////////////////// +// File generated by tools/builtin-gen +// using the template: +// test/tint/builtins/builtins.wgsl.tmpl +// and the builtin defintion file: +// src/tint/builtins.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + + +// fn countTrailingZeros(vec<3, u32>) -> vec<3, u32> +fn countTrailingZeros_8ed26f() { + var res: vec3 = countTrailingZeros(vec3()); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + countTrailingZeros_8ed26f(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + countTrailingZeros_8ed26f(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + countTrailingZeros_8ed26f(); +} diff --git a/test/tint/builtins/gen/countTrailingZeros/8ed26f.wgsl.expected.glsl b/test/tint/builtins/gen/countTrailingZeros/8ed26f.wgsl.expected.glsl new file mode 100644 index 0000000000..edf777610a --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/8ed26f.wgsl.expected.glsl @@ -0,0 +1,93 @@ +#version 310 es + +uvec3 tint_count_trailing_zeros(uvec3 v) { + uvec3 x = uvec3(v); + uvec3 b16 = mix(uvec3(16u), uvec3(0u), bvec3((x & uvec3(65535u)))); + x = (x >> b16); + uvec3 b8 = mix(uvec3(8u), uvec3(0u), bvec3((x & uvec3(255u)))); + x = (x >> b8); + uvec3 b4 = mix(uvec3(4u), uvec3(0u), bvec3((x & uvec3(15u)))); + x = (x >> b4); + uvec3 b2 = mix(uvec3(2u), uvec3(0u), bvec3((x & uvec3(3u)))); + x = (x >> b2); + uvec3 b1 = mix(uvec3(1u), uvec3(0u), bvec3((x & uvec3(1u)))); + uvec3 is_zero = mix(uvec3(0u), uvec3(1u), equal(x, uvec3(0u))); + return uvec3((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_8ed26f() { + uvec3 res = tint_count_trailing_zeros(uvec3(0u, 0u, 0u)); +} + +vec4 vertex_main() { + countTrailingZeros_8ed26f(); + return vec4(0.0f, 0.0f, 0.0f, 0.0f); +} + +void main() { + 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 mediump float; + +uvec3 tint_count_trailing_zeros(uvec3 v) { + uvec3 x = uvec3(v); + uvec3 b16 = mix(uvec3(16u), uvec3(0u), bvec3((x & uvec3(65535u)))); + x = (x >> b16); + uvec3 b8 = mix(uvec3(8u), uvec3(0u), bvec3((x & uvec3(255u)))); + x = (x >> b8); + uvec3 b4 = mix(uvec3(4u), uvec3(0u), bvec3((x & uvec3(15u)))); + x = (x >> b4); + uvec3 b2 = mix(uvec3(2u), uvec3(0u), bvec3((x & uvec3(3u)))); + x = (x >> b2); + uvec3 b1 = mix(uvec3(1u), uvec3(0u), bvec3((x & uvec3(1u)))); + uvec3 is_zero = mix(uvec3(0u), uvec3(1u), equal(x, uvec3(0u))); + return uvec3((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_8ed26f() { + uvec3 res = tint_count_trailing_zeros(uvec3(0u, 0u, 0u)); +} + +void fragment_main() { + countTrailingZeros_8ed26f(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +uvec3 tint_count_trailing_zeros(uvec3 v) { + uvec3 x = uvec3(v); + uvec3 b16 = mix(uvec3(16u), uvec3(0u), bvec3((x & uvec3(65535u)))); + x = (x >> b16); + uvec3 b8 = mix(uvec3(8u), uvec3(0u), bvec3((x & uvec3(255u)))); + x = (x >> b8); + uvec3 b4 = mix(uvec3(4u), uvec3(0u), bvec3((x & uvec3(15u)))); + x = (x >> b4); + uvec3 b2 = mix(uvec3(2u), uvec3(0u), bvec3((x & uvec3(3u)))); + x = (x >> b2); + uvec3 b1 = mix(uvec3(1u), uvec3(0u), bvec3((x & uvec3(1u)))); + uvec3 is_zero = mix(uvec3(0u), uvec3(1u), equal(x, uvec3(0u))); + return uvec3((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_8ed26f() { + uvec3 res = tint_count_trailing_zeros(uvec3(0u, 0u, 0u)); +} + +void compute_main() { + countTrailingZeros_8ed26f(); +} + +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/countTrailingZeros/8ed26f.wgsl.expected.hlsl b/test/tint/builtins/gen/countTrailingZeros/8ed26f.wgsl.expected.hlsl new file mode 100644 index 0000000000..5226a394c2 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/8ed26f.wgsl.expected.hlsl @@ -0,0 +1,45 @@ +uint3 tint_count_trailing_zeros(uint3 v) { + uint3 x = uint3(v); + const uint3 b16 = (bool3((x & uint3((65535u).xxx))) ? uint3((0u).xxx) : uint3((16u).xxx)); + x = (x >> b16); + const uint3 b8 = (bool3((x & uint3((255u).xxx))) ? uint3((0u).xxx) : uint3((8u).xxx)); + x = (x >> b8); + const uint3 b4 = (bool3((x & uint3((15u).xxx))) ? uint3((0u).xxx) : uint3((4u).xxx)); + x = (x >> b4); + const uint3 b2 = (bool3((x & uint3((3u).xxx))) ? uint3((0u).xxx) : uint3((2u).xxx)); + x = (x >> b2); + const uint3 b1 = (bool3((x & uint3((1u).xxx))) ? uint3((0u).xxx) : uint3((1u).xxx)); + const uint3 is_zero = ((x == uint3((0u).xxx)) ? uint3((1u).xxx) : uint3((0u).xxx)); + return uint3((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_8ed26f() { + uint3 res = tint_count_trailing_zeros(uint3(0u, 0u, 0u)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + countTrailingZeros_8ed26f(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + countTrailingZeros_8ed26f(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + countTrailingZeros_8ed26f(); + return; +} diff --git a/test/tint/builtins/gen/countTrailingZeros/8ed26f.wgsl.expected.msl b/test/tint/builtins/gen/countTrailingZeros/8ed26f.wgsl.expected.msl new file mode 100644 index 0000000000..076a02d580 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/8ed26f.wgsl.expected.msl @@ -0,0 +1,33 @@ +#include + +using namespace metal; +void countTrailingZeros_8ed26f() { + uint3 res = ctz(uint3()); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + countTrailingZeros_8ed26f(); + return float4(); +} + +vertex tint_symbol vertex_main() { + float4 const inner_result = vertex_main_inner(); + tint_symbol wrapper_result = {}; + wrapper_result.value = inner_result; + return wrapper_result; +} + +fragment void fragment_main() { + countTrailingZeros_8ed26f(); + return; +} + +kernel void compute_main() { + countTrailingZeros_8ed26f(); + return; +} + diff --git a/test/tint/builtins/gen/countTrailingZeros/8ed26f.wgsl.expected.spvasm b/test/tint/builtins/gen/countTrailingZeros/8ed26f.wgsl.expected.spvasm new file mode 100644 index 0000000000..00db3764f5 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/8ed26f.wgsl.expected.spvasm @@ -0,0 +1,140 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 98 +; 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 %tint_count_trailing_zeros "tint_count_trailing_zeros" + OpName %v "v" + OpName %x "x" + OpName %countTrailingZeros_8ed26f "countTrailingZeros_8ed26f" + 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 + %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 + %v3uint = OpTypeVector %uint 3 + %9 = OpTypeFunction %v3uint %v3uint +%_ptr_Function_v3uint = OpTypePointer Function %v3uint + %18 = OpConstantNull %v3uint + %bool = OpTypeBool + %v3bool = OpTypeVector %bool 3 + %uint_65535 = OpConstant %uint 65535 + %25 = OpConstantComposite %v3uint %uint_65535 %uint_65535 %uint_65535 + %uint_0 = OpConstant %uint 0 + %28 = OpConstantComposite %v3uint %uint_0 %uint_0 %uint_0 + %uint_16 = OpConstant %uint 16 + %30 = OpConstantComposite %v3uint %uint_16 %uint_16 %uint_16 + %uint_255 = OpConstant %uint 255 + %37 = OpConstantComposite %v3uint %uint_255 %uint_255 %uint_255 + %uint_8 = OpConstant %uint 8 + %40 = OpConstantComposite %v3uint %uint_8 %uint_8 %uint_8 + %uint_15 = OpConstant %uint 15 + %47 = OpConstantComposite %v3uint %uint_15 %uint_15 %uint_15 + %uint_4 = OpConstant %uint 4 + %50 = OpConstantComposite %v3uint %uint_4 %uint_4 %uint_4 + %uint_3 = OpConstant %uint 3 + %57 = OpConstantComposite %v3uint %uint_3 %uint_3 %uint_3 + %uint_2 = OpConstant %uint 2 + %60 = OpConstantComposite %v3uint %uint_2 %uint_2 %uint_2 + %uint_1 = OpConstant %uint 1 + %67 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1 + %void = OpTypeVoid + %78 = OpTypeFunction %void + %84 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%tint_count_trailing_zeros = OpFunction %v3uint None %9 + %v = OpFunctionParameter %v3uint + %14 = OpLabel + %x = OpVariable %_ptr_Function_v3uint Function %18 + OpStore %x %v + %23 = OpLoad %v3uint %x + %26 = OpBitwiseAnd %v3uint %23 %25 + %20 = OpINotEqual %v3bool %26 %18 + %19 = OpSelect %v3uint %20 %28 %30 + %31 = OpLoad %v3uint %x + %32 = OpShiftRightLogical %v3uint %31 %19 + OpStore %x %32 + %35 = OpLoad %v3uint %x + %38 = OpBitwiseAnd %v3uint %35 %37 + %34 = OpINotEqual %v3bool %38 %18 + %33 = OpSelect %v3uint %34 %28 %40 + %41 = OpLoad %v3uint %x + %42 = OpShiftRightLogical %v3uint %41 %33 + OpStore %x %42 + %45 = OpLoad %v3uint %x + %48 = OpBitwiseAnd %v3uint %45 %47 + %44 = OpINotEqual %v3bool %48 %18 + %43 = OpSelect %v3uint %44 %28 %50 + %51 = OpLoad %v3uint %x + %52 = OpShiftRightLogical %v3uint %51 %43 + OpStore %x %52 + %55 = OpLoad %v3uint %x + %58 = OpBitwiseAnd %v3uint %55 %57 + %54 = OpINotEqual %v3bool %58 %18 + %53 = OpSelect %v3uint %54 %28 %60 + %61 = OpLoad %v3uint %x + %62 = OpShiftRightLogical %v3uint %61 %53 + OpStore %x %62 + %65 = OpLoad %v3uint %x + %68 = OpBitwiseAnd %v3uint %65 %67 + %64 = OpINotEqual %v3bool %68 %18 + %63 = OpSelect %v3uint %64 %28 %67 + %70 = OpLoad %v3uint %x + %71 = OpIEqual %v3bool %70 %28 + %69 = OpSelect %v3uint %71 %67 %28 + %73 = OpBitwiseOr %v3uint %19 %33 + %74 = OpBitwiseOr %v3uint %73 %43 + %75 = OpBitwiseOr %v3uint %74 %53 + %76 = OpBitwiseOr %v3uint %75 %63 + %77 = OpIAdd %v3uint %76 %69 + OpReturnValue %77 + OpFunctionEnd +%countTrailingZeros_8ed26f = OpFunction %void None %78 + %81 = OpLabel + %res = OpVariable %_ptr_Function_v3uint Function %18 + %82 = OpFunctionCall %v3uint %tint_count_trailing_zeros %18 + OpStore %res %82 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %84 + %86 = OpLabel + %87 = OpFunctionCall %void %countTrailingZeros_8ed26f + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %78 + %89 = OpLabel + %90 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %90 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %78 + %93 = OpLabel + %94 = OpFunctionCall %void %countTrailingZeros_8ed26f + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %78 + %96 = OpLabel + %97 = OpFunctionCall %void %countTrailingZeros_8ed26f + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/countTrailingZeros/8ed26f.wgsl.expected.wgsl b/test/tint/builtins/gen/countTrailingZeros/8ed26f.wgsl.expected.wgsl new file mode 100644 index 0000000000..655674537c --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/8ed26f.wgsl.expected.wgsl @@ -0,0 +1,19 @@ +fn countTrailingZeros_8ed26f() { + var res : vec3 = countTrailingZeros(vec3()); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + countTrailingZeros_8ed26f(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + countTrailingZeros_8ed26f(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + countTrailingZeros_8ed26f(); +} diff --git a/test/tint/builtins/gen/countTrailingZeros/acfacb.wgsl b/test/tint/builtins/gen/countTrailingZeros/acfacb.wgsl new file mode 100644 index 0000000000..6325e9dd12 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/acfacb.wgsl @@ -0,0 +1,45 @@ +// Copyright 2021 The Tint Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//////////////////////////////////////////////////////////////////////////////// +// File generated by tools/builtin-gen +// using the template: +// test/tint/builtins/builtins.wgsl.tmpl +// and the builtin defintion file: +// src/tint/builtins.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + + +// fn countTrailingZeros(vec<3, i32>) -> vec<3, i32> +fn countTrailingZeros_acfacb() { + var res: vec3 = countTrailingZeros(vec3()); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + countTrailingZeros_acfacb(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + countTrailingZeros_acfacb(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + countTrailingZeros_acfacb(); +} diff --git a/test/tint/builtins/gen/countTrailingZeros/acfacb.wgsl.expected.glsl b/test/tint/builtins/gen/countTrailingZeros/acfacb.wgsl.expected.glsl new file mode 100644 index 0000000000..328076f134 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/acfacb.wgsl.expected.glsl @@ -0,0 +1,93 @@ +#version 310 es + +ivec3 tint_count_trailing_zeros(ivec3 v) { + uvec3 x = uvec3(v); + uvec3 b16 = mix(uvec3(16u), uvec3(0u), bvec3((x & uvec3(65535u)))); + x = (x >> b16); + uvec3 b8 = mix(uvec3(8u), uvec3(0u), bvec3((x & uvec3(255u)))); + x = (x >> b8); + uvec3 b4 = mix(uvec3(4u), uvec3(0u), bvec3((x & uvec3(15u)))); + x = (x >> b4); + uvec3 b2 = mix(uvec3(2u), uvec3(0u), bvec3((x & uvec3(3u)))); + x = (x >> b2); + uvec3 b1 = mix(uvec3(1u), uvec3(0u), bvec3((x & uvec3(1u)))); + uvec3 is_zero = mix(uvec3(0u), uvec3(1u), equal(x, uvec3(0u))); + return ivec3((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_acfacb() { + ivec3 res = tint_count_trailing_zeros(ivec3(0, 0, 0)); +} + +vec4 vertex_main() { + countTrailingZeros_acfacb(); + return vec4(0.0f, 0.0f, 0.0f, 0.0f); +} + +void main() { + 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 mediump float; + +ivec3 tint_count_trailing_zeros(ivec3 v) { + uvec3 x = uvec3(v); + uvec3 b16 = mix(uvec3(16u), uvec3(0u), bvec3((x & uvec3(65535u)))); + x = (x >> b16); + uvec3 b8 = mix(uvec3(8u), uvec3(0u), bvec3((x & uvec3(255u)))); + x = (x >> b8); + uvec3 b4 = mix(uvec3(4u), uvec3(0u), bvec3((x & uvec3(15u)))); + x = (x >> b4); + uvec3 b2 = mix(uvec3(2u), uvec3(0u), bvec3((x & uvec3(3u)))); + x = (x >> b2); + uvec3 b1 = mix(uvec3(1u), uvec3(0u), bvec3((x & uvec3(1u)))); + uvec3 is_zero = mix(uvec3(0u), uvec3(1u), equal(x, uvec3(0u))); + return ivec3((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_acfacb() { + ivec3 res = tint_count_trailing_zeros(ivec3(0, 0, 0)); +} + +void fragment_main() { + countTrailingZeros_acfacb(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +ivec3 tint_count_trailing_zeros(ivec3 v) { + uvec3 x = uvec3(v); + uvec3 b16 = mix(uvec3(16u), uvec3(0u), bvec3((x & uvec3(65535u)))); + x = (x >> b16); + uvec3 b8 = mix(uvec3(8u), uvec3(0u), bvec3((x & uvec3(255u)))); + x = (x >> b8); + uvec3 b4 = mix(uvec3(4u), uvec3(0u), bvec3((x & uvec3(15u)))); + x = (x >> b4); + uvec3 b2 = mix(uvec3(2u), uvec3(0u), bvec3((x & uvec3(3u)))); + x = (x >> b2); + uvec3 b1 = mix(uvec3(1u), uvec3(0u), bvec3((x & uvec3(1u)))); + uvec3 is_zero = mix(uvec3(0u), uvec3(1u), equal(x, uvec3(0u))); + return ivec3((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_acfacb() { + ivec3 res = tint_count_trailing_zeros(ivec3(0, 0, 0)); +} + +void compute_main() { + countTrailingZeros_acfacb(); +} + +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/countTrailingZeros/acfacb.wgsl.expected.hlsl b/test/tint/builtins/gen/countTrailingZeros/acfacb.wgsl.expected.hlsl new file mode 100644 index 0000000000..857896763b --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/acfacb.wgsl.expected.hlsl @@ -0,0 +1,45 @@ +int3 tint_count_trailing_zeros(int3 v) { + uint3 x = uint3(v); + const uint3 b16 = (bool3((x & uint3((65535u).xxx))) ? uint3((0u).xxx) : uint3((16u).xxx)); + x = (x >> b16); + const uint3 b8 = (bool3((x & uint3((255u).xxx))) ? uint3((0u).xxx) : uint3((8u).xxx)); + x = (x >> b8); + const uint3 b4 = (bool3((x & uint3((15u).xxx))) ? uint3((0u).xxx) : uint3((4u).xxx)); + x = (x >> b4); + const uint3 b2 = (bool3((x & uint3((3u).xxx))) ? uint3((0u).xxx) : uint3((2u).xxx)); + x = (x >> b2); + const uint3 b1 = (bool3((x & uint3((1u).xxx))) ? uint3((0u).xxx) : uint3((1u).xxx)); + const uint3 is_zero = ((x == uint3((0u).xxx)) ? uint3((1u).xxx) : uint3((0u).xxx)); + return int3((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_acfacb() { + int3 res = tint_count_trailing_zeros(int3(0, 0, 0)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + countTrailingZeros_acfacb(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + countTrailingZeros_acfacb(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + countTrailingZeros_acfacb(); + return; +} diff --git a/test/tint/builtins/gen/countTrailingZeros/acfacb.wgsl.expected.msl b/test/tint/builtins/gen/countTrailingZeros/acfacb.wgsl.expected.msl new file mode 100644 index 0000000000..8fa6a02821 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/acfacb.wgsl.expected.msl @@ -0,0 +1,33 @@ +#include + +using namespace metal; +void countTrailingZeros_acfacb() { + int3 res = ctz(int3()); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + countTrailingZeros_acfacb(); + return float4(); +} + +vertex tint_symbol vertex_main() { + float4 const inner_result = vertex_main_inner(); + tint_symbol wrapper_result = {}; + wrapper_result.value = inner_result; + return wrapper_result; +} + +fragment void fragment_main() { + countTrailingZeros_acfacb(); + return; +} + +kernel void compute_main() { + countTrailingZeros_acfacb(); + return; +} + diff --git a/test/tint/builtins/gen/countTrailingZeros/acfacb.wgsl.expected.spvasm b/test/tint/builtins/gen/countTrailingZeros/acfacb.wgsl.expected.spvasm new file mode 100644 index 0000000000..777e2ede10 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/acfacb.wgsl.expected.spvasm @@ -0,0 +1,146 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 102 +; 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 %tint_count_trailing_zeros "tint_count_trailing_zeros" + OpName %v "v" + OpName %x "x" + OpName %countTrailingZeros_acfacb "countTrailingZeros_acfacb" + 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 + %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 + %v3int = OpTypeVector %int 3 + %9 = OpTypeFunction %v3int %v3int + %uint = OpTypeInt 32 0 + %v3uint = OpTypeVector %uint 3 +%_ptr_Function_v3uint = OpTypePointer Function %v3uint + %20 = OpConstantNull %v3uint + %bool = OpTypeBool + %v3bool = OpTypeVector %bool 3 + %uint_65535 = OpConstant %uint 65535 + %27 = OpConstantComposite %v3uint %uint_65535 %uint_65535 %uint_65535 + %uint_0 = OpConstant %uint 0 + %30 = OpConstantComposite %v3uint %uint_0 %uint_0 %uint_0 + %uint_16 = OpConstant %uint 16 + %32 = OpConstantComposite %v3uint %uint_16 %uint_16 %uint_16 + %uint_255 = OpConstant %uint 255 + %39 = OpConstantComposite %v3uint %uint_255 %uint_255 %uint_255 + %uint_8 = OpConstant %uint 8 + %42 = OpConstantComposite %v3uint %uint_8 %uint_8 %uint_8 + %uint_15 = OpConstant %uint 15 + %49 = OpConstantComposite %v3uint %uint_15 %uint_15 %uint_15 + %uint_4 = OpConstant %uint 4 + %52 = OpConstantComposite %v3uint %uint_4 %uint_4 %uint_4 + %uint_3 = OpConstant %uint 3 + %59 = OpConstantComposite %v3uint %uint_3 %uint_3 %uint_3 + %uint_2 = OpConstant %uint 2 + %62 = OpConstantComposite %v3uint %uint_2 %uint_2 %uint_2 + %uint_1 = OpConstant %uint 1 + %69 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1 + %void = OpTypeVoid + %80 = OpTypeFunction %void + %85 = OpConstantNull %v3int +%_ptr_Function_v3int = OpTypePointer Function %v3int + %88 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%tint_count_trailing_zeros = OpFunction %v3int None %9 + %v = OpFunctionParameter %v3int + %14 = OpLabel + %x = OpVariable %_ptr_Function_v3uint Function %20 + %15 = OpBitcast %v3uint %v + OpStore %x %15 + %25 = OpLoad %v3uint %x + %28 = OpBitwiseAnd %v3uint %25 %27 + %22 = OpINotEqual %v3bool %28 %20 + %21 = OpSelect %v3uint %22 %30 %32 + %33 = OpLoad %v3uint %x + %34 = OpShiftRightLogical %v3uint %33 %21 + OpStore %x %34 + %37 = OpLoad %v3uint %x + %40 = OpBitwiseAnd %v3uint %37 %39 + %36 = OpINotEqual %v3bool %40 %20 + %35 = OpSelect %v3uint %36 %30 %42 + %43 = OpLoad %v3uint %x + %44 = OpShiftRightLogical %v3uint %43 %35 + OpStore %x %44 + %47 = OpLoad %v3uint %x + %50 = OpBitwiseAnd %v3uint %47 %49 + %46 = OpINotEqual %v3bool %50 %20 + %45 = OpSelect %v3uint %46 %30 %52 + %53 = OpLoad %v3uint %x + %54 = OpShiftRightLogical %v3uint %53 %45 + OpStore %x %54 + %57 = OpLoad %v3uint %x + %60 = OpBitwiseAnd %v3uint %57 %59 + %56 = OpINotEqual %v3bool %60 %20 + %55 = OpSelect %v3uint %56 %30 %62 + %63 = OpLoad %v3uint %x + %64 = OpShiftRightLogical %v3uint %63 %55 + OpStore %x %64 + %67 = OpLoad %v3uint %x + %70 = OpBitwiseAnd %v3uint %67 %69 + %66 = OpINotEqual %v3bool %70 %20 + %65 = OpSelect %v3uint %66 %30 %69 + %72 = OpLoad %v3uint %x + %73 = OpIEqual %v3bool %72 %30 + %71 = OpSelect %v3uint %73 %69 %30 + %75 = OpBitwiseOr %v3uint %21 %35 + %76 = OpBitwiseOr %v3uint %75 %45 + %77 = OpBitwiseOr %v3uint %76 %55 + %78 = OpBitwiseOr %v3uint %77 %65 + %79 = OpIAdd %v3uint %78 %71 + %74 = OpBitcast %v3int %79 + OpReturnValue %74 + OpFunctionEnd +%countTrailingZeros_acfacb = OpFunction %void None %80 + %83 = OpLabel + %res = OpVariable %_ptr_Function_v3int Function %85 + %84 = OpFunctionCall %v3int %tint_count_trailing_zeros %85 + OpStore %res %84 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %88 + %90 = OpLabel + %91 = OpFunctionCall %void %countTrailingZeros_acfacb + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %80 + %93 = OpLabel + %94 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %94 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %80 + %97 = OpLabel + %98 = OpFunctionCall %void %countTrailingZeros_acfacb + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %80 + %100 = OpLabel + %101 = OpFunctionCall %void %countTrailingZeros_acfacb + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/countTrailingZeros/acfacb.wgsl.expected.wgsl b/test/tint/builtins/gen/countTrailingZeros/acfacb.wgsl.expected.wgsl new file mode 100644 index 0000000000..e375186519 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/acfacb.wgsl.expected.wgsl @@ -0,0 +1,19 @@ +fn countTrailingZeros_acfacb() { + var res : vec3 = countTrailingZeros(vec3()); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + countTrailingZeros_acfacb(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + countTrailingZeros_acfacb(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + countTrailingZeros_acfacb(); +} diff --git a/test/tint/builtins/gen/countTrailingZeros/d2b4a0.wgsl b/test/tint/builtins/gen/countTrailingZeros/d2b4a0.wgsl new file mode 100644 index 0000000000..7d35d261c8 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/d2b4a0.wgsl @@ -0,0 +1,45 @@ +// Copyright 2021 The Tint Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//////////////////////////////////////////////////////////////////////////////// +// File generated by tools/builtin-gen +// using the template: +// test/tint/builtins/builtins.wgsl.tmpl +// and the builtin defintion file: +// src/tint/builtins.def +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + + +// fn countTrailingZeros(vec<4, u32>) -> vec<4, u32> +fn countTrailingZeros_d2b4a0() { + var res: vec4 = countTrailingZeros(vec4()); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + countTrailingZeros_d2b4a0(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + countTrailingZeros_d2b4a0(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + countTrailingZeros_d2b4a0(); +} diff --git a/test/tint/builtins/gen/countTrailingZeros/d2b4a0.wgsl.expected.glsl b/test/tint/builtins/gen/countTrailingZeros/d2b4a0.wgsl.expected.glsl new file mode 100644 index 0000000000..b7a6cc7a79 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/d2b4a0.wgsl.expected.glsl @@ -0,0 +1,93 @@ +#version 310 es + +uvec4 tint_count_trailing_zeros(uvec4 v) { + uvec4 x = uvec4(v); + uvec4 b16 = mix(uvec4(16u), uvec4(0u), bvec4((x & uvec4(65535u)))); + x = (x >> b16); + uvec4 b8 = mix(uvec4(8u), uvec4(0u), bvec4((x & uvec4(255u)))); + x = (x >> b8); + uvec4 b4 = mix(uvec4(4u), uvec4(0u), bvec4((x & uvec4(15u)))); + x = (x >> b4); + uvec4 b2 = mix(uvec4(2u), uvec4(0u), bvec4((x & uvec4(3u)))); + x = (x >> b2); + uvec4 b1 = mix(uvec4(1u), uvec4(0u), bvec4((x & uvec4(1u)))); + uvec4 is_zero = mix(uvec4(0u), uvec4(1u), equal(x, uvec4(0u))); + return uvec4((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_d2b4a0() { + uvec4 res = tint_count_trailing_zeros(uvec4(0u, 0u, 0u, 0u)); +} + +vec4 vertex_main() { + countTrailingZeros_d2b4a0(); + return vec4(0.0f, 0.0f, 0.0f, 0.0f); +} + +void main() { + 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 mediump float; + +uvec4 tint_count_trailing_zeros(uvec4 v) { + uvec4 x = uvec4(v); + uvec4 b16 = mix(uvec4(16u), uvec4(0u), bvec4((x & uvec4(65535u)))); + x = (x >> b16); + uvec4 b8 = mix(uvec4(8u), uvec4(0u), bvec4((x & uvec4(255u)))); + x = (x >> b8); + uvec4 b4 = mix(uvec4(4u), uvec4(0u), bvec4((x & uvec4(15u)))); + x = (x >> b4); + uvec4 b2 = mix(uvec4(2u), uvec4(0u), bvec4((x & uvec4(3u)))); + x = (x >> b2); + uvec4 b1 = mix(uvec4(1u), uvec4(0u), bvec4((x & uvec4(1u)))); + uvec4 is_zero = mix(uvec4(0u), uvec4(1u), equal(x, uvec4(0u))); + return uvec4((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_d2b4a0() { + uvec4 res = tint_count_trailing_zeros(uvec4(0u, 0u, 0u, 0u)); +} + +void fragment_main() { + countTrailingZeros_d2b4a0(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +uvec4 tint_count_trailing_zeros(uvec4 v) { + uvec4 x = uvec4(v); + uvec4 b16 = mix(uvec4(16u), uvec4(0u), bvec4((x & uvec4(65535u)))); + x = (x >> b16); + uvec4 b8 = mix(uvec4(8u), uvec4(0u), bvec4((x & uvec4(255u)))); + x = (x >> b8); + uvec4 b4 = mix(uvec4(4u), uvec4(0u), bvec4((x & uvec4(15u)))); + x = (x >> b4); + uvec4 b2 = mix(uvec4(2u), uvec4(0u), bvec4((x & uvec4(3u)))); + x = (x >> b2); + uvec4 b1 = mix(uvec4(1u), uvec4(0u), bvec4((x & uvec4(1u)))); + uvec4 is_zero = mix(uvec4(0u), uvec4(1u), equal(x, uvec4(0u))); + return uvec4((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_d2b4a0() { + uvec4 res = tint_count_trailing_zeros(uvec4(0u, 0u, 0u, 0u)); +} + +void compute_main() { + countTrailingZeros_d2b4a0(); +} + +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/countTrailingZeros/d2b4a0.wgsl.expected.hlsl b/test/tint/builtins/gen/countTrailingZeros/d2b4a0.wgsl.expected.hlsl new file mode 100644 index 0000000000..5a2d9a965e --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/d2b4a0.wgsl.expected.hlsl @@ -0,0 +1,45 @@ +uint4 tint_count_trailing_zeros(uint4 v) { + uint4 x = uint4(v); + const uint4 b16 = (bool4((x & uint4((65535u).xxxx))) ? uint4((0u).xxxx) : uint4((16u).xxxx)); + x = (x >> b16); + const uint4 b8 = (bool4((x & uint4((255u).xxxx))) ? uint4((0u).xxxx) : uint4((8u).xxxx)); + x = (x >> b8); + const uint4 b4 = (bool4((x & uint4((15u).xxxx))) ? uint4((0u).xxxx) : uint4((4u).xxxx)); + x = (x >> b4); + const uint4 b2 = (bool4((x & uint4((3u).xxxx))) ? uint4((0u).xxxx) : uint4((2u).xxxx)); + x = (x >> b2); + const uint4 b1 = (bool4((x & uint4((1u).xxxx))) ? uint4((0u).xxxx) : uint4((1u).xxxx)); + const uint4 is_zero = ((x == uint4((0u).xxxx)) ? uint4((1u).xxxx) : uint4((0u).xxxx)); + return uint4((((((b16 | b8) | b4) | b2) | b1) + is_zero)); +} + +void countTrailingZeros_d2b4a0() { + uint4 res = tint_count_trailing_zeros(uint4(0u, 0u, 0u, 0u)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + countTrailingZeros_d2b4a0(); + return float4(0.0f, 0.0f, 0.0f, 0.0f); +} + +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() { + countTrailingZeros_d2b4a0(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + countTrailingZeros_d2b4a0(); + return; +} diff --git a/test/tint/builtins/gen/countTrailingZeros/d2b4a0.wgsl.expected.msl b/test/tint/builtins/gen/countTrailingZeros/d2b4a0.wgsl.expected.msl new file mode 100644 index 0000000000..7954b94fa6 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/d2b4a0.wgsl.expected.msl @@ -0,0 +1,33 @@ +#include + +using namespace metal; +void countTrailingZeros_d2b4a0() { + uint4 res = ctz(uint4()); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + countTrailingZeros_d2b4a0(); + return float4(); +} + +vertex tint_symbol vertex_main() { + float4 const inner_result = vertex_main_inner(); + tint_symbol wrapper_result = {}; + wrapper_result.value = inner_result; + return wrapper_result; +} + +fragment void fragment_main() { + countTrailingZeros_d2b4a0(); + return; +} + +kernel void compute_main() { + countTrailingZeros_d2b4a0(); + return; +} + diff --git a/test/tint/builtins/gen/countTrailingZeros/d2b4a0.wgsl.expected.spvasm b/test/tint/builtins/gen/countTrailingZeros/d2b4a0.wgsl.expected.spvasm new file mode 100644 index 0000000000..356c4169eb --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/d2b4a0.wgsl.expected.spvasm @@ -0,0 +1,140 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 98 +; 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 %tint_count_trailing_zeros "tint_count_trailing_zeros" + OpName %v "v" + OpName %x "x" + OpName %countTrailingZeros_d2b4a0 "countTrailingZeros_d2b4a0" + 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 + %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 + %9 = OpTypeFunction %v4uint %v4uint +%_ptr_Function_v4uint = OpTypePointer Function %v4uint + %18 = OpConstantNull %v4uint + %bool = OpTypeBool + %v4bool = OpTypeVector %bool 4 + %uint_65535 = OpConstant %uint 65535 + %25 = OpConstantComposite %v4uint %uint_65535 %uint_65535 %uint_65535 %uint_65535 + %uint_0 = OpConstant %uint 0 + %28 = OpConstantComposite %v4uint %uint_0 %uint_0 %uint_0 %uint_0 + %uint_16 = OpConstant %uint 16 + %30 = OpConstantComposite %v4uint %uint_16 %uint_16 %uint_16 %uint_16 + %uint_255 = OpConstant %uint 255 + %37 = OpConstantComposite %v4uint %uint_255 %uint_255 %uint_255 %uint_255 + %uint_8 = OpConstant %uint 8 + %40 = OpConstantComposite %v4uint %uint_8 %uint_8 %uint_8 %uint_8 + %uint_15 = OpConstant %uint 15 + %47 = OpConstantComposite %v4uint %uint_15 %uint_15 %uint_15 %uint_15 + %uint_4 = OpConstant %uint 4 + %50 = OpConstantComposite %v4uint %uint_4 %uint_4 %uint_4 %uint_4 + %uint_3 = OpConstant %uint 3 + %57 = OpConstantComposite %v4uint %uint_3 %uint_3 %uint_3 %uint_3 + %uint_2 = OpConstant %uint 2 + %60 = OpConstantComposite %v4uint %uint_2 %uint_2 %uint_2 %uint_2 + %uint_1 = OpConstant %uint 1 + %67 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1 + %void = OpTypeVoid + %78 = OpTypeFunction %void + %84 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%tint_count_trailing_zeros = OpFunction %v4uint None %9 + %v = OpFunctionParameter %v4uint + %14 = OpLabel + %x = OpVariable %_ptr_Function_v4uint Function %18 + OpStore %x %v + %23 = OpLoad %v4uint %x + %26 = OpBitwiseAnd %v4uint %23 %25 + %20 = OpINotEqual %v4bool %26 %18 + %19 = OpSelect %v4uint %20 %28 %30 + %31 = OpLoad %v4uint %x + %32 = OpShiftRightLogical %v4uint %31 %19 + OpStore %x %32 + %35 = OpLoad %v4uint %x + %38 = OpBitwiseAnd %v4uint %35 %37 + %34 = OpINotEqual %v4bool %38 %18 + %33 = OpSelect %v4uint %34 %28 %40 + %41 = OpLoad %v4uint %x + %42 = OpShiftRightLogical %v4uint %41 %33 + OpStore %x %42 + %45 = OpLoad %v4uint %x + %48 = OpBitwiseAnd %v4uint %45 %47 + %44 = OpINotEqual %v4bool %48 %18 + %43 = OpSelect %v4uint %44 %28 %50 + %51 = OpLoad %v4uint %x + %52 = OpShiftRightLogical %v4uint %51 %43 + OpStore %x %52 + %55 = OpLoad %v4uint %x + %58 = OpBitwiseAnd %v4uint %55 %57 + %54 = OpINotEqual %v4bool %58 %18 + %53 = OpSelect %v4uint %54 %28 %60 + %61 = OpLoad %v4uint %x + %62 = OpShiftRightLogical %v4uint %61 %53 + OpStore %x %62 + %65 = OpLoad %v4uint %x + %68 = OpBitwiseAnd %v4uint %65 %67 + %64 = OpINotEqual %v4bool %68 %18 + %63 = OpSelect %v4uint %64 %28 %67 + %70 = OpLoad %v4uint %x + %71 = OpIEqual %v4bool %70 %28 + %69 = OpSelect %v4uint %71 %67 %28 + %73 = OpBitwiseOr %v4uint %19 %33 + %74 = OpBitwiseOr %v4uint %73 %43 + %75 = OpBitwiseOr %v4uint %74 %53 + %76 = OpBitwiseOr %v4uint %75 %63 + %77 = OpIAdd %v4uint %76 %69 + OpReturnValue %77 + OpFunctionEnd +%countTrailingZeros_d2b4a0 = OpFunction %void None %78 + %81 = OpLabel + %res = OpVariable %_ptr_Function_v4uint Function %18 + %82 = OpFunctionCall %v4uint %tint_count_trailing_zeros %18 + OpStore %res %82 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %84 + %86 = OpLabel + %87 = OpFunctionCall %void %countTrailingZeros_d2b4a0 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %78 + %89 = OpLabel + %90 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %90 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %78 + %93 = OpLabel + %94 = OpFunctionCall %void %countTrailingZeros_d2b4a0 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %78 + %96 = OpLabel + %97 = OpFunctionCall %void %countTrailingZeros_d2b4a0 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/countTrailingZeros/d2b4a0.wgsl.expected.wgsl b/test/tint/builtins/gen/countTrailingZeros/d2b4a0.wgsl.expected.wgsl new file mode 100644 index 0000000000..d37e2a16c5 --- /dev/null +++ b/test/tint/builtins/gen/countTrailingZeros/d2b4a0.wgsl.expected.wgsl @@ -0,0 +1,19 @@ +fn countTrailingZeros_d2b4a0() { + var res : vec4 = countTrailingZeros(vec4()); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + countTrailingZeros_d2b4a0(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + countTrailingZeros_d2b4a0(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + countTrailingZeros_d2b4a0(); +}