From d868e860e0203c2633aa540d65623c910739bbb2 Mon Sep 17 00:00:00 2001 From: Ben Clayton Date: Wed, 23 Feb 2022 21:18:09 +0000 Subject: [PATCH] builtins: Add extractBits CTS tests: https://github.com/gpuweb/cts/pull/1005 Bug: tint:1371 Change-Id: I228c7b2a27c6fbac0653c416fac603a6fb4bff85 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/81640 Reviewed-by: David Neto Kokoro: Kokoro --- src/tint/builtin_table.inl | 3919 +++++++++-------- src/tint/builtins.def | 2 + src/tint/reader/spirv/function.cc | 3 + src/tint/reader/spirv/function_bit_test.cc | 74 +- src/tint/sem/builtin_type.cc | 5 + src/tint/sem/builtin_type.h | 1 + src/tint/transform/builtin_polyfill.cc | 70 +- src/tint/transform/builtin_polyfill.h | 12 + src/tint/transform/builtin_polyfill_test.cc | 233 + src/tint/transform/glsl.cc | 1 + src/tint/writer/glsl/generator_impl.cc | 21 + src/tint/writer/glsl/generator_impl.h | 5 + .../glsl/generator_impl_builtin_test.cc | 32 + src/tint/writer/hlsl/generator_impl.cc | 1 + src/tint/writer/msl/generator_impl.cc | 5 + .../writer/msl/generator_impl_builtin_test.cc | 3 + src/tint/writer/spirv/builder.cc | 7 + src/tint/writer/spirv/builder_builtin_test.cc | 154 + .../builtins/extractBits/scalar/i32.spvasm | 30 + .../scalar/i32.spvasm.expected.glsl | 25 + .../scalar/i32.spvasm.expected.hlsl | 21 + .../scalar/i32.spvasm.expected.msl | 25 + .../scalar/i32.spvasm.expected.spvasm | 62 + .../scalar/i32.spvasm.expected.wgsl | 15 + .../builtins/extractBits/scalar/u32.spvasm | 27 + .../scalar/u32.spvasm.expected.glsl | 25 + .../scalar/u32.spvasm.expected.hlsl | 21 + .../scalar/u32.spvasm.expected.msl | 25 + .../scalar/u32.spvasm.expected.spvasm | 58 + .../scalar/u32.spvasm.expected.wgsl | 15 + .../tint/builtins/extractBits/vec3/i32.spvasm | 31 + .../extractBits/vec3/i32.spvasm.expected.glsl | 25 + .../extractBits/vec3/i32.spvasm.expected.hlsl | 21 + .../extractBits/vec3/i32.spvasm.expected.msl | 25 + .../vec3/i32.spvasm.expected.spvasm | 62 + .../extractBits/vec3/i32.spvasm.expected.wgsl | 15 + .../tint/builtins/extractBits/vec3/u32.spvasm | 28 + .../extractBits/vec3/u32.spvasm.expected.glsl | 25 + .../extractBits/vec3/u32.spvasm.expected.hlsl | 21 + .../extractBits/vec3/u32.spvasm.expected.msl | 25 + .../vec3/u32.spvasm.expected.spvasm | 61 + .../extractBits/vec3/u32.spvasm.expected.wgsl | 15 + .../tint/builtins/gen/extractBits/12b197.wgsl | 45 + .../gen/extractBits/12b197.wgsl.expected.glsl | 66 + .../gen/extractBits/12b197.wgsl.expected.hlsl | 38 + .../gen/extractBits/12b197.wgsl.expected.msl | 39 + .../extractBits/12b197.wgsl.expected.spvasm | 87 + .../gen/extractBits/12b197.wgsl.expected.wgsl | 19 + .../tint/builtins/gen/extractBits/249874.wgsl | 45 + .../gen/extractBits/249874.wgsl.expected.glsl | 66 + .../gen/extractBits/249874.wgsl.expected.hlsl | 38 + .../gen/extractBits/249874.wgsl.expected.msl | 39 + .../extractBits/249874.wgsl.expected.spvasm | 88 + .../gen/extractBits/249874.wgsl.expected.wgsl | 19 + .../tint/builtins/gen/extractBits/631377.wgsl | 45 + .../gen/extractBits/631377.wgsl.expected.glsl | 66 + .../gen/extractBits/631377.wgsl.expected.hlsl | 38 + .../gen/extractBits/631377.wgsl.expected.msl | 39 + .../extractBits/631377.wgsl.expected.spvasm | 87 + .../gen/extractBits/631377.wgsl.expected.wgsl | 19 + .../tint/builtins/gen/extractBits/a99a8d.wgsl | 45 + .../gen/extractBits/a99a8d.wgsl.expected.glsl | 66 + .../gen/extractBits/a99a8d.wgsl.expected.hlsl | 38 + .../gen/extractBits/a99a8d.wgsl.expected.msl | 39 + .../extractBits/a99a8d.wgsl.expected.spvasm | 88 + .../gen/extractBits/a99a8d.wgsl.expected.wgsl | 19 + .../tint/builtins/gen/extractBits/ce81f8.wgsl | 45 + .../gen/extractBits/ce81f8.wgsl.expected.glsl | 66 + .../gen/extractBits/ce81f8.wgsl.expected.hlsl | 38 + .../gen/extractBits/ce81f8.wgsl.expected.msl | 39 + .../extractBits/ce81f8.wgsl.expected.spvasm | 86 + .../gen/extractBits/ce81f8.wgsl.expected.wgsl | 19 + .../tint/builtins/gen/extractBits/e04f5d.wgsl | 45 + .../gen/extractBits/e04f5d.wgsl.expected.glsl | 66 + .../gen/extractBits/e04f5d.wgsl.expected.hlsl | 38 + .../gen/extractBits/e04f5d.wgsl.expected.msl | 39 + .../extractBits/e04f5d.wgsl.expected.spvasm | 88 + .../gen/extractBits/e04f5d.wgsl.expected.wgsl | 19 + .../tint/builtins/gen/extractBits/f28f69.wgsl | 45 + .../gen/extractBits/f28f69.wgsl.expected.glsl | 66 + .../gen/extractBits/f28f69.wgsl.expected.hlsl | 38 + .../gen/extractBits/f28f69.wgsl.expected.msl | 39 + .../extractBits/f28f69.wgsl.expected.spvasm | 87 + .../gen/extractBits/f28f69.wgsl.expected.wgsl | 19 + .../tint/builtins/gen/extractBits/fb850f.wgsl | 45 + .../gen/extractBits/fb850f.wgsl.expected.glsl | 66 + .../gen/extractBits/fb850f.wgsl.expected.hlsl | 38 + .../gen/extractBits/fb850f.wgsl.expected.msl | 39 + .../extractBits/fb850f.wgsl.expected.spvasm | 88 + .../gen/extractBits/fb850f.wgsl.expected.wgsl | 19 + 90 files changed, 5673 insertions(+), 1933 deletions(-) create mode 100644 test/tint/builtins/extractBits/scalar/i32.spvasm create mode 100644 test/tint/builtins/extractBits/scalar/i32.spvasm.expected.glsl create mode 100644 test/tint/builtins/extractBits/scalar/i32.spvasm.expected.hlsl create mode 100644 test/tint/builtins/extractBits/scalar/i32.spvasm.expected.msl create mode 100644 test/tint/builtins/extractBits/scalar/i32.spvasm.expected.spvasm create mode 100644 test/tint/builtins/extractBits/scalar/i32.spvasm.expected.wgsl create mode 100644 test/tint/builtins/extractBits/scalar/u32.spvasm create mode 100644 test/tint/builtins/extractBits/scalar/u32.spvasm.expected.glsl create mode 100644 test/tint/builtins/extractBits/scalar/u32.spvasm.expected.hlsl create mode 100644 test/tint/builtins/extractBits/scalar/u32.spvasm.expected.msl create mode 100644 test/tint/builtins/extractBits/scalar/u32.spvasm.expected.spvasm create mode 100644 test/tint/builtins/extractBits/scalar/u32.spvasm.expected.wgsl create mode 100644 test/tint/builtins/extractBits/vec3/i32.spvasm create mode 100644 test/tint/builtins/extractBits/vec3/i32.spvasm.expected.glsl create mode 100644 test/tint/builtins/extractBits/vec3/i32.spvasm.expected.hlsl create mode 100644 test/tint/builtins/extractBits/vec3/i32.spvasm.expected.msl create mode 100644 test/tint/builtins/extractBits/vec3/i32.spvasm.expected.spvasm create mode 100644 test/tint/builtins/extractBits/vec3/i32.spvasm.expected.wgsl create mode 100644 test/tint/builtins/extractBits/vec3/u32.spvasm create mode 100644 test/tint/builtins/extractBits/vec3/u32.spvasm.expected.glsl create mode 100644 test/tint/builtins/extractBits/vec3/u32.spvasm.expected.hlsl create mode 100644 test/tint/builtins/extractBits/vec3/u32.spvasm.expected.msl create mode 100644 test/tint/builtins/extractBits/vec3/u32.spvasm.expected.spvasm create mode 100644 test/tint/builtins/extractBits/vec3/u32.spvasm.expected.wgsl create mode 100644 test/tint/builtins/gen/extractBits/12b197.wgsl create mode 100644 test/tint/builtins/gen/extractBits/12b197.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/extractBits/12b197.wgsl.expected.hlsl create mode 100644 test/tint/builtins/gen/extractBits/12b197.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/extractBits/12b197.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/extractBits/12b197.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/extractBits/249874.wgsl create mode 100644 test/tint/builtins/gen/extractBits/249874.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/extractBits/249874.wgsl.expected.hlsl create mode 100644 test/tint/builtins/gen/extractBits/249874.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/extractBits/249874.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/extractBits/249874.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/extractBits/631377.wgsl create mode 100644 test/tint/builtins/gen/extractBits/631377.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/extractBits/631377.wgsl.expected.hlsl create mode 100644 test/tint/builtins/gen/extractBits/631377.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/extractBits/631377.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/extractBits/631377.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/extractBits/a99a8d.wgsl create mode 100644 test/tint/builtins/gen/extractBits/a99a8d.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/extractBits/a99a8d.wgsl.expected.hlsl create mode 100644 test/tint/builtins/gen/extractBits/a99a8d.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/extractBits/a99a8d.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/extractBits/a99a8d.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/extractBits/ce81f8.wgsl create mode 100644 test/tint/builtins/gen/extractBits/ce81f8.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/extractBits/ce81f8.wgsl.expected.hlsl create mode 100644 test/tint/builtins/gen/extractBits/ce81f8.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/extractBits/ce81f8.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/extractBits/ce81f8.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/extractBits/e04f5d.wgsl create mode 100644 test/tint/builtins/gen/extractBits/e04f5d.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/extractBits/e04f5d.wgsl.expected.hlsl create mode 100644 test/tint/builtins/gen/extractBits/e04f5d.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/extractBits/e04f5d.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/extractBits/e04f5d.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/extractBits/f28f69.wgsl create mode 100644 test/tint/builtins/gen/extractBits/f28f69.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/extractBits/f28f69.wgsl.expected.hlsl create mode 100644 test/tint/builtins/gen/extractBits/f28f69.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/extractBits/f28f69.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/extractBits/f28f69.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/extractBits/fb850f.wgsl create mode 100644 test/tint/builtins/gen/extractBits/fb850f.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/extractBits/fb850f.wgsl.expected.hlsl create mode 100644 test/tint/builtins/gen/extractBits/fb850f.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/extractBits/fb850f.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/extractBits/fb850f.wgsl.expected.wgsl diff --git a/src/tint/builtin_table.inl b/src/tint/builtin_table.inl index 9c2f22aa79..e4756c1bb7 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] */ 30, + /* [27] */ 29, /* [28] */ 0, /* [29] */ 1, - /* [30] */ 29, + /* [30] */ 30, /* [31] */ 0, /* [32] */ 1, /* [33] */ 28, @@ -1720,58 +1720,58 @@ constexpr MatcherIndex kMatcherIndices[] = { /* [78] */ 8, /* [79] */ 0, /* [80] */ 3, - /* [81] */ 7, + /* [81] */ 5, /* [82] */ 2, - /* [83] */ 17, + /* [83] */ 7, /* [84] */ 2, /* [85] */ 5, - /* [86] */ 2, - /* [87] */ 5, - /* [88] */ 3, - /* [89] */ 18, + /* [86] */ 3, + /* [87] */ 17, + /* [88] */ 2, + /* [89] */ 16, /* [90] */ 2, - /* [91] */ 6, + /* [91] */ 18, /* [92] */ 2, - /* [93] */ 16, + /* [93] */ 6, /* [94] */ 2, - /* [95] */ 6, - /* [96] */ 3, - /* [97] */ 19, - /* [98] */ 2, - /* [99] */ 20, + /* [95] */ 20, + /* [96] */ 2, + /* [97] */ 6, + /* [98] */ 3, + /* [99] */ 19, /* [100] */ 2, /* [101] */ 35, /* [102] */ 0, /* [103] */ 33, /* [104] */ 0, - /* [105] */ 5, - /* [106] */ 0, + /* [105] */ 7, + /* [106] */ 3, /* [107] */ 7, - /* [108] */ 3, - /* [109] */ 7, - /* [110] */ 4, - /* [111] */ 15, + /* [108] */ 4, + /* [109] */ 15, + /* [110] */ 0, + /* [111] */ 7, /* [112] */ 0, - /* [113] */ 7, + /* [113] */ 16, /* [114] */ 0, - /* [115] */ 16, + /* [115] */ 17, /* [116] */ 0, - /* [117] */ 17, + /* [117] */ 18, /* [118] */ 0, - /* [119] */ 18, + /* [119] */ 21, /* [120] */ 0, - /* [121] */ 21, + /* [121] */ 19, /* [122] */ 0, - /* [123] */ 19, + /* [123] */ 20, /* [124] */ 0, - /* [125] */ 20, - /* [126] */ 0, - /* [127] */ 15, - /* [128] */ 2, - /* [129] */ 24, - /* [130] */ 23, - /* [131] */ 25, - /* [132] */ 14, + /* [125] */ 15, + /* [126] */ 2, + /* [127] */ 5, + /* [128] */ 0, + /* [129] */ 14, + /* [130] */ 25, + /* [131] */ 23, + /* [132] */ 24, /* [133] */ 22, /* [134] */ 26, /* [135] */ 13, @@ -1790,7 +1790,7 @@ constexpr ParameterInfo kParameters[] = { { /* [0] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[83], + /* matcher indices */ &kMatcherIndices[87], }, { /* [1] */ @@ -1800,7 +1800,7 @@ constexpr ParameterInfo kParameters[] = { { /* [2] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[81], }, { /* [3] */ @@ -1810,32 +1810,32 @@ constexpr ParameterInfo kParameters[] = { { /* [4] */ /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[81], }, { /* [5] */ /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[81], }, { /* [6] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[85], }, { /* [7] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[131], }, { /* [8] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[129], }, { /* [9] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[81], }, { /* [10] */ @@ -1850,12 +1850,12 @@ constexpr ParameterInfo kParameters[] = { { /* [12] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[85], }, { /* [13] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[95], }, { /* [14] */ @@ -1865,7 +1865,7 @@ constexpr ParameterInfo kParameters[] = { { /* [15] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[93], }, { /* [16] */ @@ -1874,18 +1874,18 @@ constexpr ParameterInfo kParameters[] = { }, { /* [17] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[93], }, { /* [18] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[93], }, { /* [19] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[83], + /* matcher indices */ &kMatcherIndices[87], }, { /* [20] */ @@ -1895,7 +1895,7 @@ constexpr ParameterInfo kParameters[] = { { /* [21] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[81], }, { /* [22] */ @@ -1910,52 +1910,52 @@ constexpr ParameterInfo kParameters[] = { { /* [24] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[85], }, { /* [25] */ - /* usage */ ParameterUsage::kComponent, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[91], }, { /* [26] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[117], - }, - { - /* [27] */ /* usage */ ParameterUsage::kSampler, /* matcher indices */ &kMatcherIndices[135], }, { - /* [28] */ + /* [27] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[93], + }, + { + /* [28] */ + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[93], }, { /* [29] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[93], }, { /* [30] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[97], }, { /* [31] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[87], }, { /* [32] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[135], }, { /* [33] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[81], }, { /* [34] */ @@ -1964,18 +1964,18 @@ constexpr ParameterInfo kParameters[] = { }, { /* [35] */ - /* usage */ ParameterUsage::kDepthRef, + /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[12], }, { /* [36] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[85], }, { /* [37] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[99], + /* matcher indices */ &kMatcherIndices[89], }, { /* [38] */ @@ -1985,67 +1985,67 @@ constexpr ParameterInfo kParameters[] = { { /* [39] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[81], }, { /* [40] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[81], }, { /* [41] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[81], }, { /* [42] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[85], }, { /* [43] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[89], + /* usage */ ParameterUsage::kComponent, + /* matcher indices */ &kMatcherIndices[55], }, { /* [44] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[115], + }, + { + /* [45] */ /* usage */ ParameterUsage::kSampler, /* matcher indices */ &kMatcherIndices[135], }, - { - /* [45] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], - }, { /* [46] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[81], }, { /* [47] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [48] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[95], + /* matcher indices */ &kMatcherIndices[85], }, { /* [49] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[87], }, { /* [50] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[135], }, { /* [51] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[81], }, { /* [52] */ @@ -2054,18 +2054,18 @@ constexpr ParameterInfo kParameters[] = { }, { /* [53] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[81], }, { /* [54] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[81], }, { /* [55] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[83], + /* matcher indices */ &kMatcherIndices[131], }, { /* [56] */ @@ -2075,7 +2075,7 @@ constexpr ParameterInfo kParameters[] = { { /* [57] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[81], }, { /* [58] */ @@ -2085,27 +2085,27 @@ constexpr ParameterInfo kParameters[] = { { /* [59] */ /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[55], }, { /* [60] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[85], }, { /* [61] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[83], + /* matcher indices */ &kMatcherIndices[131], }, { /* [62] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* matcher indices */ &kMatcherIndices[129], }, { /* [63] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[81], }, { /* [64] */ @@ -2114,119 +2114,119 @@ constexpr ParameterInfo kParameters[] = { }, { /* [65] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[85], + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], }, { /* [66] */ - /* usage */ ParameterUsage::kDdy, + /* usage */ ParameterUsage::kOffset, /* matcher indices */ &kMatcherIndices[85], }, { /* [67] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[93], + /* matcher indices */ &kMatcherIndices[131], }, { /* [68] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* matcher indices */ &kMatcherIndices[129], }, { /* [69] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[81], }, { /* [70] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[85], - }, - { - /* [71] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[85], - }, - { - /* [72] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], - }, - { - /* [73] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], - }, - { - /* [74] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[132], - }, - { - /* [75] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], - }, - { - /* [76] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [77] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], - }, - { - /* [78] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[93], - }, - { - /* [79] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], - }, - { - /* [80] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], - }, - { - /* [81] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[85], - }, - { - /* [82] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[85], - }, - { - /* [83] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], - }, - { - /* [84] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[132], - }, - { - /* [85] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], - }, - { - /* [86] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[55], }, { - /* [87] */ + /* [71] */ /* usage */ ParameterUsage::kDepthRef, /* matcher indices */ &kMatcherIndices[12], }, + { + /* [72] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[85], + }, + { + /* [73] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [74] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], + }, + { + /* [75] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[93], + }, + { + /* [76] */ + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[93], + }, + { + /* [77] */ + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[93], + }, + { + /* [78] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[131], + }, + { + /* [79] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[129], + }, + { + /* [80] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[81], + }, + { + /* [81] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [82] */ + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [83] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[133], + }, + { + /* [84] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], + }, + { + /* [85] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[81], + }, + { + /* [86] */ + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [87] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[85], + }, { /* [88] */ /* usage */ ParameterUsage::kTexture, @@ -2235,12 +2235,12 @@ constexpr ParameterInfo kParameters[] = { { /* [89] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[135], }, { /* [90] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[81], }, { /* [91] */ @@ -2249,33 +2249,33 @@ constexpr ParameterInfo kParameters[] = { }, { /* [92] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[85], }, { /* [93] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[133], }, { /* [94] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* matcher indices */ &kMatcherIndices[129], }, { /* [95] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[81], }, { /* [96] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], }, { /* [97] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[85], }, { /* [98] */ @@ -2285,12 +2285,12 @@ constexpr ParameterInfo kParameters[] = { { /* [99] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[129], }, { /* [100] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[93], }, { /* [101] */ @@ -2310,12 +2310,12 @@ constexpr ParameterInfo kParameters[] = { { /* [104] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[129], }, { /* [105] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[81], }, { /* [106] */ @@ -2335,12 +2335,12 @@ constexpr ParameterInfo kParameters[] = { { /* [109] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[129], }, { /* [110] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[81], }, { /* [111] */ @@ -2350,47 +2350,47 @@ constexpr ParameterInfo kParameters[] = { { /* [112] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[85], }, { /* [113] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[133], }, { /* [114] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* matcher indices */ &kMatcherIndices[129], }, { /* [115] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[81], }, { /* [116] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], }, { /* [117] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[85], }, { /* [118] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[83], + /* matcher indices */ &kMatcherIndices[131], }, { /* [119] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* matcher indices */ &kMatcherIndices[129], }, { /* [120] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[81], }, { /* [121] */ @@ -2399,8 +2399,8 @@ constexpr ParameterInfo kParameters[] = { }, { /* [122] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], }, { /* [123] */ @@ -2410,12 +2410,12 @@ constexpr ParameterInfo kParameters[] = { { /* [124] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[129], }, { /* [125] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[93], }, { /* [126] */ @@ -2440,22 +2440,22 @@ constexpr ParameterInfo kParameters[] = { { /* [130] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[81], }, { /* [131] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kBias, + /* matcher indices */ &kMatcherIndices[12], }, { /* [132] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[85], }, { /* [133] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[83], + /* matcher indices */ &kMatcherIndices[130], }, { /* [134] */ @@ -2465,7 +2465,7 @@ constexpr ParameterInfo kParameters[] = { { /* [135] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[93], }, { /* [136] */ @@ -2474,63 +2474,63 @@ constexpr ParameterInfo kParameters[] = { }, { /* [137] */ - /* usage */ ParameterUsage::kBias, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [138] */ - /* usage */ ParameterUsage::kComponent, + /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[55], }, { - /* [139] */ + /* [138] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[125], + /* matcher indices */ &kMatcherIndices[130], + }, + { + /* [139] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[129], }, { /* [140] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[93], }, { /* [141] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], - }, - { - /* [142] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[55], }, { - /* [143] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], - }, - { - /* [144] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[132], - }, - { - /* [145] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], - }, - { - /* [146] */ + /* [142] */ /* usage */ ParameterUsage::kDepthRef, /* matcher indices */ &kMatcherIndices[12], }, + { + /* [143] */ + /* usage */ ParameterUsage::kComponent, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [144] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[123], + }, + { + /* [145] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], + }, + { + /* [146] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[93], + }, { /* [147] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [148] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[131], }, { /* [149] */ @@ -2540,22 +2540,22 @@ constexpr ParameterInfo kParameters[] = { { /* [150] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[81], }, { /* [151] */ - /* usage */ ParameterUsage::kBias, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [152] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[95], + /* matcher indices */ &kMatcherIndices[85], }, { /* [153] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[87], }, { /* [154] */ @@ -2565,7 +2565,7 @@ constexpr ParameterInfo kParameters[] = { { /* [155] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[81], }, { /* [156] */ @@ -2575,12 +2575,12 @@ constexpr ParameterInfo kParameters[] = { { /* [157] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[85], }, { /* [158] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[93], + /* matcher indices */ &kMatcherIndices[89], }, { /* [159] */ @@ -2590,22 +2590,22 @@ constexpr ParameterInfo kParameters[] = { { /* [160] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[81], }, { /* [161] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[81], }, { /* [162] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[81], }, { /* [163] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[83], + /* matcher indices */ &kMatcherIndices[95], }, { /* [164] */ @@ -2615,7 +2615,7 @@ constexpr ParameterInfo kParameters[] = { { /* [165] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[93], }, { /* [166] */ @@ -2629,33 +2629,33 @@ constexpr ParameterInfo kParameters[] = { }, { /* [168] */ - /* usage */ ParameterUsage::kComponent, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[95], }, { /* [169] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[117], - }, - { - /* [170] */ /* usage */ ParameterUsage::kSampler, /* matcher indices */ &kMatcherIndices[135], }, { - /* [171] */ + /* [170] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[93], }, { - /* [172] */ + /* [171] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[55], }, + { + /* [172] */ + /* usage */ ParameterUsage::kBias, + /* matcher indices */ &kMatcherIndices[12], + }, { /* [173] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[93], + /* matcher indices */ &kMatcherIndices[91], }, { /* [174] */ @@ -2665,97 +2665,97 @@ constexpr ParameterInfo kParameters[] = { { /* [175] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[93], }, { /* [176] */ - /* usage */ ParameterUsage::kBias, + /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[12], }, { /* [177] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[97], }, { /* [178] */ - /* usage */ ParameterUsage::kComponent, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [179] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[115], - }, - { - /* [180] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], - }, - { - /* [181] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], - }, - { - /* [182] */ - /* usage */ ParameterUsage::kOffset, /* matcher indices */ &kMatcherIndices[87], }, { - /* [183] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[89], - }, - { - /* [184] */ + /* [179] */ /* usage */ ParameterUsage::kSampler, /* matcher indices */ &kMatcherIndices[135], }, { - /* [185] */ + /* [180] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[81], }, { - /* [186] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [187] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[95], - }, - { - /* [188] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], - }, - { - /* [189] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[132], - }, - { - /* [190] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], - }, - { - /* [191] */ + /* [181] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[55], }, { - /* [192] */ - /* usage */ ParameterUsage::kDepthRef, + /* [182] */ + /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[12], }, + { + /* [183] */ + /* usage */ ParameterUsage::kComponent, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [184] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[115], + }, + { + /* [185] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], + }, + { + /* [186] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[81], + }, + { + /* [187] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [188] */ + /* usage */ ParameterUsage::kComponent, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [189] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[113], + }, + { + /* [190] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], + }, + { + /* [191] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[81], + }, + { + /* [192] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[85], + }, { /* [193] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[99], + /* matcher indices */ &kMatcherIndices[89], }, { /* [194] */ @@ -2765,22 +2765,22 @@ constexpr ParameterInfo kParameters[] = { { /* [195] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[81], }, { /* [196] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [197] */ /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[12], }, + { + /* [197] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[85], + }, { /* [198] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[99], + /* matcher indices */ &kMatcherIndices[91], }, { /* [199] */ @@ -2790,22 +2790,22 @@ constexpr ParameterInfo kParameters[] = { { /* [200] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[93], }, { /* [201] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [202] */ /* usage */ ParameterUsage::kBias, /* matcher indices */ &kMatcherIndices[12], }, + { + /* [202] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[97], + }, { /* [203] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[87], }, { /* [204] */ @@ -2815,7 +2815,7 @@ constexpr ParameterInfo kParameters[] = { { /* [205] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[81], }, { /* [206] */ @@ -2824,13 +2824,13 @@ constexpr ParameterInfo kParameters[] = { }, { /* [207] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kBias, + /* matcher indices */ &kMatcherIndices[12], }, { /* [208] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* matcher indices */ &kMatcherIndices[99], }, { /* [209] */ @@ -2840,22 +2840,22 @@ constexpr ParameterInfo kParameters[] = { { /* [210] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[93], }, { /* [211] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[93], }, { /* [212] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[93], }, { /* [213] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[97], + /* matcher indices */ &kMatcherIndices[131], }, { /* [214] */ @@ -2865,17 +2865,17 @@ constexpr ParameterInfo kParameters[] = { { /* [215] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[81], }, { /* [216] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [217] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [218] */ @@ -2890,7 +2890,7 @@ constexpr ParameterInfo kParameters[] = { { /* [220] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[93], }, { /* [221] */ @@ -2900,7 +2900,7 @@ constexpr ParameterInfo kParameters[] = { { /* [222] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[89], }, { /* [223] */ @@ -2910,17 +2910,17 @@ constexpr ParameterInfo kParameters[] = { { /* [224] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[81], }, { /* [225] */ /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* matcher indices */ &kMatcherIndices[12], }, { /* [226] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* matcher indices */ &kMatcherIndices[91], }, { /* [227] */ @@ -2930,17 +2930,17 @@ constexpr ParameterInfo kParameters[] = { { /* [228] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[93], }, { /* [229] */ /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* matcher indices */ &kMatcherIndices[12], }, { /* [230] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[97], + /* matcher indices */ &kMatcherIndices[99], }, { /* [231] */ @@ -2950,17 +2950,17 @@ constexpr ParameterInfo kParameters[] = { { /* [232] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[93], }, { /* [233] */ - /* usage */ ParameterUsage::kBias, + /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[12], }, { /* [234] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[97], + /* matcher indices */ &kMatcherIndices[133], }, { /* [235] */ @@ -2970,17 +2970,17 @@ constexpr ParameterInfo kParameters[] = { { /* [236] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[81], }, { /* [237] */ /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[55], }, { /* [238] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[132], }, { /* [239] */ @@ -2990,137 +2990,137 @@ constexpr ParameterInfo kParameters[] = { { /* [240] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[93], }, { /* [241] */ - /* usage */ ParameterUsage::kBias, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [242] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[132], }, { /* [243] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* matcher indices */ &kMatcherIndices[129], }, { /* [244] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[93], }, { /* [245] */ - /* usage */ ParameterUsage::kLevel, + /* usage */ ParameterUsage::kDepthRef, /* matcher indices */ &kMatcherIndices[12], }, { /* [246] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[69], - }, - { - /* [247] */ - /* usage */ ParameterUsage::kCoords, /* matcher indices */ &kMatcherIndices[87], }, { - /* [248] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [249] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[81], - }, - { - /* [250] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[93], - }, - { - /* [251] */ + /* [247] */ /* usage */ ParameterUsage::kSampler, /* matcher indices */ &kMatcherIndices[135], }, + { + /* [248] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[81], + }, + { + /* [249] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [250] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[132], + }, + { + /* [251] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[129], + }, { /* [252] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[93], }, { /* [253] */ - /* usage */ ParameterUsage::kBias, + /* usage */ ParameterUsage::kDepthRef, /* matcher indices */ &kMatcherIndices[12], }, { /* [254] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[69], }, { /* [255] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], - }, - { - /* [256] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], - }, - { - /* [257] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [258] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[93], - }, - { - /* [259] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], - }, - { - /* [260] */ /* usage */ ParameterUsage::kCoords, /* matcher indices */ &kMatcherIndices[85], }, + { + /* [256] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [257] */ + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[83], + }, + { + /* [258] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[133], + }, + { + /* [259] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[129], + }, + { + /* [260] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[81], + }, { /* [261] */ - /* usage */ ParameterUsage::kLevel, + /* usage */ ParameterUsage::kDepthRef, /* matcher indices */ &kMatcherIndices[12], }, { /* [262] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[57], + /* matcher indices */ &kMatcherIndices[91], }, { /* [263] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], }, { /* [264] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[93], }, { /* [265] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[107], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[97], }, { /* [266] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* matcher indices */ &kMatcherIndices[95], }, { /* [267] */ @@ -3130,97 +3130,97 @@ constexpr ParameterInfo kParameters[] = { { /* [268] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[93], }, { /* [269] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [270] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[133], }, { /* [271] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[135], }, { /* [272] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[81], }, { /* [273] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[85], }, { /* [274] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[99], + /* matcher indices */ &kMatcherIndices[133], }, { /* [275] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* matcher indices */ &kMatcherIndices[129], }, { /* [276] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[81], }, { /* [277] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], }, { /* [278] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[132], }, { /* [279] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* matcher indices */ &kMatcherIndices[129], }, { /* [280] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[93], }, { /* [281] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[95], + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], }, { /* [282] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[45], + /* matcher indices */ &kMatcherIndices[130], }, { /* [283] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], }, { /* [284] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[93], + }, + { + /* [285] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[55], }, - { - /* [285] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[109], - }, { /* [286] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[83], + /* matcher indices */ &kMatcherIndices[131], }, { /* [287] */ @@ -3230,7 +3230,7 @@ constexpr ParameterInfo kParameters[] = { { /* [288] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[81], }, { /* [289] */ @@ -3240,7 +3240,7 @@ constexpr ParameterInfo kParameters[] = { { /* [290] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[93], + /* matcher indices */ &kMatcherIndices[133], }, { /* [291] */ @@ -3250,27 +3250,27 @@ constexpr ParameterInfo kParameters[] = { { /* [292] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[81], }, { /* [293] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[85], }, { /* [294] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[133], }, { /* [295] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[129], }, { /* [296] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[81], }, { /* [297] */ @@ -3280,12 +3280,12 @@ constexpr ParameterInfo kParameters[] = { { /* [298] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[117], + /* matcher indices */ &kMatcherIndices[45], }, { /* [299] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[85], }, { /* [300] */ @@ -3294,93 +3294,93 @@ constexpr ParameterInfo kParameters[] = { }, { /* [301] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[107], }, { /* [302] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* usage */ ParameterUsage::kComponent, + /* matcher indices */ &kMatcherIndices[55], }, { /* [303] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[132], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[121], }, { /* [304] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], - }, - { - /* [305] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [306] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], - }, - { - /* [307] */ /* usage */ ParameterUsage::kSampler, /* matcher indices */ &kMatcherIndices[135], }, { - /* [308] */ + /* [305] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[93], + }, + { + /* [306] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[115], + }, + { + /* [307] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[85], + }, + { + /* [308] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [309] */ - /* usage */ ParameterUsage::kArrayIndex, + /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[55], }, { /* [310] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[99], }, { /* [311] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[135], }, { /* [312] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[93], }, { /* [313] */ - /* usage */ ParameterUsage::kDepthRef, + /* usage */ ParameterUsage::kBias, /* matcher indices */ &kMatcherIndices[12], }, { /* [314] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* usage */ ParameterUsage::kComponent, + /* matcher indices */ &kMatcherIndices[55], }, { /* [315] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[113], }, { /* [316] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], }, { /* [317] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[81], }, { /* [318] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[91], }, { /* [319] */ @@ -3390,467 +3390,467 @@ constexpr ParameterInfo kParameters[] = { { /* [320] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[93], }, { /* [321] */ + /* usage */ ParameterUsage::kBias, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [322] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[131], + }, + { + /* [323] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[85], + }, + { + /* [324] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[55], }, - { - /* [322] */ - /* usage */ ParameterUsage::kComponent, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [323] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[123], - }, - { - /* [324] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], - }, { /* [325] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [326] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* matcher indices */ &kMatcherIndices[89], }, { /* [327] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[135], }, { /* [328] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[81], }, { /* [329] */ - /* usage */ ParameterUsage::kDepthRef, + /* usage */ ParameterUsage::kBias, /* matcher indices */ &kMatcherIndices[12], }, { /* [330] */ - /* usage */ ParameterUsage::kComponent, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[131], }, { /* [331] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[115], - }, - { - /* [332] */ /* usage */ ParameterUsage::kSampler, /* matcher indices */ &kMatcherIndices[135], }, { - /* [333] */ + /* [332] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[81], + }, + { + /* [333] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [334] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* matcher indices */ &kMatcherIndices[57], }, { /* [335] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], - }, - { - /* [336] */ /* usage */ ParameterUsage::kCoords, /* matcher indices */ &kMatcherIndices[85], }, + { + /* [336] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], + }, { /* [337] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[105], }, { /* [338] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* matcher indices */ &kMatcherIndices[89], }, { /* [339] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[135], }, { /* [340] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[81], }, { /* [341] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[85], }, { /* [342] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[0], }, { /* [343] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[1], }, { /* [344] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[1], }, { /* [345] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[21], }, { /* [346] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[21], }, { /* [347] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[21], }, { /* [348] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [349] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [350] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [351] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[136], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [352] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [353] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [354] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[75], - }, - { - /* [355] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [356] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[81], - }, - { - /* [357] */ - /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[133], }, { - /* [358] */ + /* [355] */ /* usage */ ParameterUsage::kSampler, /* matcher indices */ &kMatcherIndices[135], }, { - /* [359] */ + /* [356] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[81], + }, + { + /* [357] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[39], + }, + { + /* [358] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[43], + }, + { + /* [359] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[43], }, { /* [360] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[99], }, { /* [361] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], }, { /* [362] */ - /* usage */ ParameterUsage::kSampleIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[93], }, { /* [363] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[1], }, { /* [364] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[43], }, { /* [365] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[43], }, { /* [366] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[91], }, { /* [367] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], }, { /* [368] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[93], }, { /* [369] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[1], }, { /* [370] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[1], }, { /* [371] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[10], }, { /* [372] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[136], }, { /* [373] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], }, { /* [374] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[81], }, { /* [375] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[72], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [376] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [377] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[81], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], }, { /* [378] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[66], + /* matcher indices */ &kMatcherIndices[89], }, { /* [379] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[95], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], }, { /* [380] */ - /* usage */ ParameterUsage::kValue, + /* usage */ ParameterUsage::kCoords, /* matcher indices */ &kMatcherIndices[81], }, { /* [381] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* matcher indices */ &kMatcherIndices[125], }, { /* [382] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], }, { /* [383] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[12], }, { /* [384] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[75], }, { /* [385] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[55], }, { /* [386] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[83], }, { /* [387] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[63], + /* matcher indices */ &kMatcherIndices[72], }, { /* [388] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[55], + /* matcher indices */ &kMatcherIndices[85], }, { /* [389] */ /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[107], + /* matcher indices */ &kMatcherIndices[83], }, { /* [390] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[60], + /* matcher indices */ &kMatcherIndices[66], }, { /* [391] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[97], }, { /* [392] */ /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[107], + /* matcher indices */ &kMatcherIndices[83], }, { /* [393] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[129], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[39], }, { /* [394] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[39], }, { /* [395] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[39], }, { /* [396] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[121], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [397] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [398] */ - /* usage */ ParameterUsage::kSampleIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [399] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[119], + /* matcher indices */ &kMatcherIndices[63], }, { /* [400] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[95], - }, - { - /* [401] */ - /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[55], }, + { + /* [401] */ + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[105], + }, { /* [402] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[132], }, { /* [403] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], }, { /* [404] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[24], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[93], }, { /* [405] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[60], }, { /* [406] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[85], }, { /* [407] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[105], }, { /* [408] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[54], }, { /* [409] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[97], }, { /* [410] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[105], }, { /* [411] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [412] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [413] */ @@ -3859,53 +3859,53 @@ constexpr ParameterInfo kParameters[] = { }, { /* [414] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[54], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [415] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[95], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [416] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[107], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [417] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], - }, - { - /* [418] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], - }, - { - /* [419] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[85], - }, - { - /* [420] */ - /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[51], }, { - /* [421] */ + /* [418] */ /* usage */ ParameterUsage::kCoords, /* matcher indices */ &kMatcherIndices[55], }, + { + /* [419] */ + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[107], + }, + { + /* [420] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[48], + }, + { + /* [421] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[85], + }, { /* [422] */ /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[109], + /* matcher indices */ &kMatcherIndices[107], }, { /* [423] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[97], + /* matcher indices */ &kMatcherIndices[133], }, { /* [424] */ @@ -3915,62 +3915,62 @@ constexpr ParameterInfo kParameters[] = { { /* [425] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[81], }, { /* [426] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[48], + /* matcher indices */ &kMatcherIndices[42], }, { /* [427] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[97], }, { /* [428] */ /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[109], + /* matcher indices */ &kMatcherIndices[107], }, { /* [429] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[109], }, { /* [430] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[55], }, { /* [431] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [432] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[42], + /* matcher indices */ &kMatcherIndices[113], }, { /* [433] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[95], + /* matcher indices */ &kMatcherIndices[85], }, { /* [434] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[109], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [435] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[111], + /* matcher indices */ &kMatcherIndices[117], }, { /* [436] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[55], + /* matcher indices */ &kMatcherIndices[97], }, { /* [437] */ @@ -3979,128 +3979,128 @@ constexpr ParameterInfo kParameters[] = { }, { /* [438] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[119], }, { /* [439] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], - }, - { - /* [440] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[10], - }, - { - /* [441] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [442] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [443] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[10], - }, - { - /* [444] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[115], - }, - { - /* [445] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], - }, - { - /* [446] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [447] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[93], - }, - { - /* [448] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], - }, - { - /* [449] */ /* usage */ ParameterUsage::kCoords, /* matcher indices */ &kMatcherIndices[85], }, { - /* [450] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* [440] */ + /* usage */ ParameterUsage::kSampleIndex, + /* matcher indices */ &kMatcherIndices[55], }, { - /* [451] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [452] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [453] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], - }, - { - /* [454] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], - }, - { - /* [455] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [456] */ + /* [441] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[127], + /* matcher indices */ &kMatcherIndices[133], }, { - /* [457] */ + /* [442] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[85], + }, + { + /* [443] */ + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [444] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[132], + }, + { + /* [445] */ /* usage */ ParameterUsage::kSampler, /* matcher indices */ &kMatcherIndices[135], }, { - /* [458] */ + /* [446] */ /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[93], + }, + { + /* [447] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [448] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [449] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [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::kNone, + /* matcher indices */ &kMatcherIndices[39], + }, + { + /* [454] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[39], + }, + { + /* [455] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[24], + }, + { + /* [456] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[39], + }, + { + /* [457] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[39], + }, + { + /* [458] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[10], + }, { /* [459] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[134], }, { /* [460] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[85], }, { /* [461] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* usage */ ParameterUsage::kSampleIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [462] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[21], }, { /* [463] */ @@ -4110,42 +4110,42 @@ constexpr ParameterInfo kParameters[] = { { /* [464] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [465] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[115], }, { /* [466] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [467] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[0], }, { /* [468] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[1], }, { /* [469] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[0], }, { /* [470] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[1], }, { /* [471] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[0], }, { /* [472] */ @@ -4165,27 +4165,27 @@ constexpr ParameterInfo kParameters[] = { { /* [475] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[0], }, { /* [476] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[1], }, { /* [477] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[0], }, { /* [478] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[1], }, { /* [479] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[0], }, { /* [480] */ @@ -4195,22 +4195,22 @@ constexpr ParameterInfo kParameters[] = { { /* [481] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[0], }, { /* [482] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[1], }, { /* [483] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[136], }, { /* [484] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[78], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[85], }, { /* [485] */ @@ -4234,63 +4234,63 @@ constexpr ParameterInfo kParameters[] = { }, { /* [489] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[136], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[93], }, { /* [490] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[87], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[93], }, { /* [491] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[21], }, { /* [492] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[21], }, { /* [493] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [494] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [495] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[21], }, { /* [496] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[21], }, { /* [497] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[12], }, { /* [498] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[12], }, { /* [499] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[21], }, { /* [500] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[21], }, { /* [501] */ @@ -4305,47 +4305,47 @@ constexpr ParameterInfo kParameters[] = { { /* [503] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[39], }, { /* [504] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[39], }, { /* [505] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[12], }, { /* [506] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[55], }, { /* [507] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[21], }, { /* [508] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[78], }, { /* [509] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[113], }, { /* [510] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [511] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[133], }, { /* [512] */ @@ -4354,58 +4354,58 @@ constexpr ParameterInfo kParameters[] = { }, { /* [513] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[117], - }, - { - /* [514] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [515] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], - }, - { - /* [516] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [517] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], - }, - { - /* [518] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [519] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[125], - }, - { - /* [520] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [521] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], - }, - { - /* [522] */ /* usage */ ParameterUsage::kNone, /* matcher indices */ &kMatcherIndices[1], }, + { + /* [514] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], + }, + { + /* [515] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[39], + }, + { + /* [516] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[39], + }, + { + /* [517] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], + }, + { + /* [518] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], + }, + { + /* [519] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[39], + }, + { + /* [520] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[39], + }, + { + /* [521] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[130], + }, + { + /* [522] */ + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], + }, { /* [523] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[123], + /* matcher indices */ &kMatcherIndices[132], }, { /* [524] */ @@ -4415,7 +4415,7 @@ constexpr ParameterInfo kParameters[] = { { /* [525] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[111], + /* matcher indices */ &kMatcherIndices[131], }, { /* [526] */ @@ -4424,18 +4424,18 @@ constexpr ParameterInfo kParameters[] = { }, { /* [527] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[119], + /* 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[115], + /* matcher indices */ &kMatcherIndices[123], }, { /* [530] */ @@ -4445,7 +4445,7 @@ constexpr ParameterInfo kParameters[] = { { /* [531] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[109], }, { /* [532] */ @@ -4454,168 +4454,168 @@ constexpr ParameterInfo kParameters[] = { }, { /* [533] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], - }, - { - /* [534] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[119], - }, - { - /* [535] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[115], - }, - { - /* [536] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[123], - }, - { - /* [537] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[111], - }, - { - /* [538] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[125], - }, - { - /* [539] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[43], - }, - { - /* [540] */ /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[121], }, { - /* [541] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* [534] */ + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { - /* [542] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[43], - }, - { - /* [543] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], - }, - { - /* [544] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[43], - }, - { - /* [545] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [546] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[43], - }, - { - /* [547] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], - }, - { - /* [548] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[43], - }, - { - /* [549] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[134], - }, - { - /* [550] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[36], - }, - { - /* [551] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[33], - }, - { - /* [552] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[30], - }, - { - /* [553] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[27], - }, - { - /* [554] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[136], - }, - { - /* [555] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], - }, - { - /* [556] */ + /* [535] */ /* usage */ ParameterUsage::kNone, /* matcher indices */ &kMatcherIndices[12], }, { - /* [557] */ + /* [536] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [537] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[117], + }, + { + /* [538] */ + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [539] */ /* usage */ ParameterUsage::kNone, /* matcher indices */ &kMatcherIndices[13], }, { - /* [558] */ + /* [540] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[117], + }, + { + /* [541] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[115], + }, + { + /* [542] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[121], + }, + { + /* [543] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[113], + }, + { + /* [544] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[123], + }, + { + /* [545] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[109], + }, + { + /* [546] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[119], + }, + { + /* [547] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[133], + }, + { + /* [548] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[39], + }, + { + /* [549] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[131], + }, + { + /* [550] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[43], + }, + { + /* [551] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[132], + }, + { + /* [552] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[43], + }, + { + /* [553] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[130], + }, + { + /* [554] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[43], + }, + { + /* [555] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[134], + }, + { + /* [556] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[36], + }, + { + /* [557] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[33], + }, + { + /* [558] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[27], }, { /* [559] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[30], }, { /* [560] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[136], }, { /* [561] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[83], }, { /* [562] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[83], }, { /* [563] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[81], }, { /* [564] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[81], }, { /* [565] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[81], }, { /* [566] */ @@ -4625,22 +4625,22 @@ constexpr ParameterInfo kParameters[] = { { /* [567] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[21], }, { /* [568] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[117], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], }, { /* [569] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[43], }, { /* [570] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[43], }, { /* [571] */ @@ -4654,33 +4654,33 @@ constexpr ParameterInfo kParameters[] = { }, { /* [573] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[117], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [574] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[125], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [575] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], }, { /* [576] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [577] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[30], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], }, { /* [578] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[111], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [579] */ @@ -4690,42 +4690,42 @@ constexpr ParameterInfo kParameters[] = { { /* [580] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[117], + /* matcher indices */ &kMatcherIndices[123], }, { /* [581] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[119], + /* matcher indices */ &kMatcherIndices[131], }, { /* [582] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[123], + /* matcher indices */ &kMatcherIndices[130], }, { /* [583] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[125], + /* matcher indices */ &kMatcherIndices[27], }, { /* [584] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* matcher indices */ &kMatcherIndices[109], }, { /* [585] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[113], }, { /* [586] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[115], }, { /* [587] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[117], }, { /* [588] */ @@ -4735,47 +4735,47 @@ constexpr ParameterInfo kParameters[] = { { /* [589] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[123], }, { /* [590] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[133], }, { /* [591] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[131], }, { /* [592] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[132], }, { /* [593] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[81], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[130], }, { /* [594] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[81], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[119], }, { /* [595] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[85], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[134], }, { /* [596] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[12], }, { /* [597] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[12], }, { /* [598] */ @@ -4895,22 +4895,22 @@ constexpr ParameterInfo kParameters[] = { { /* [621] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[39], }, { /* [622] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[1], }, { /* [623] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[39], }, { /* [624] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[1], }, { /* [625] */ @@ -4935,22 +4935,22 @@ constexpr ParameterInfo kParameters[] = { { /* [629] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[21], }, { /* [630] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[12], }, { /* [631] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[21], }, { /* [632] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[12], }, { /* [633] */ @@ -4995,22 +4995,22 @@ constexpr ParameterInfo kParameters[] = { { /* [641] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [642] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[21], }, { /* [643] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [644] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[17], }, { /* [645] */ @@ -5025,27 +5025,27 @@ constexpr ParameterInfo kParameters[] = { { /* [647] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [648] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[39], }, { /* [649] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[17], + /* 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] */ @@ -5060,22 +5060,22 @@ constexpr ParameterInfo kParameters[] = { { /* [654] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[21], }, { /* [655] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[12], }, { /* [656] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[21], }, { /* [657] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[12], }, { /* [658] */ @@ -5120,42 +5120,42 @@ constexpr ParameterInfo kParameters[] = { { /* [666] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[4], }, { /* [667] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[24], }, { /* [668] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[4], + /* matcher indices */ &kMatcherIndices[10], }, { /* [669] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[24], }, { /* [670] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[24], + /* matcher indices */ &kMatcherIndices[10], }, { /* [671] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[10], + /* matcher indices */ &kMatcherIndices[21], }, { /* [672] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[24], + /* matcher indices */ &kMatcherIndices[12], }, { /* [673] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[10], + /* matcher indices */ &kMatcherIndices[39], }, { /* [674] */ @@ -5165,16 +5165,46 @@ constexpr ParameterInfo kParameters[] = { { /* [675] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[0], }, { /* [676] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[12], }, { /* [677] */ /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [678] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [679] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [680] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], + }, + { + /* [681] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [682] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [683] */ + /* usage */ ParameterUsage::kNone, /* matcher indices */ &kMatcherIndices[1], }, }; @@ -5243,7 +5273,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[537], + /* parameters */ &kParameters[545], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5255,7 +5285,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[525], + /* parameters */ &kParameters[531], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5267,8 +5297,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[535], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[543], + /* return matcher indices */ &kMatcherIndices[85], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5279,8 +5309,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[509], + /* return matcher indices */ &kMatcherIndices[85], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5291,8 +5321,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[568], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[541], + /* return matcher indices */ &kMatcherIndices[85], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5303,8 +5333,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[513], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[465], + /* return matcher indices */ &kMatcherIndices[85], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5315,8 +5345,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[534], - /* return matcher indices */ &kMatcherIndices[95], + /* parameters */ &kParameters[540], + /* return matcher indices */ &kMatcherIndices[97], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5327,8 +5357,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[527], - /* return matcher indices */ &kMatcherIndices[95], + /* parameters */ &kParameters[537], + /* return matcher indices */ &kMatcherIndices[97], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5339,8 +5369,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[542], + /* return matcher indices */ &kMatcherIndices[85], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5351,8 +5381,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[523], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[533], + /* return matcher indices */ &kMatcherIndices[85], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5363,8 +5393,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[544], + /* return matcher indices */ &kMatcherIndices[85], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5375,8 +5405,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[519], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[529], + /* return matcher indices */ &kMatcherIndices[85], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5387,8 +5417,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[540], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[546], + /* return matcher indices */ &kMatcherIndices[85], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5399,8 +5429,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[547], + /* return matcher indices */ &kMatcherIndices[85], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5411,8 +5441,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[517], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[511], + /* return matcher indices */ &kMatcherIndices[85], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5423,8 +5453,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[549], + /* return matcher indices */ &kMatcherIndices[85], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5435,8 +5465,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[515], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[525], + /* return matcher indices */ &kMatcherIndices[85], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5447,8 +5477,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[545], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[551], + /* return matcher indices */ &kMatcherIndices[85], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5459,8 +5489,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[85], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5471,8 +5501,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[547], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[553], + /* return matcher indices */ &kMatcherIndices[85], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5483,8 +5513,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[511], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[521], + /* return matcher indices */ &kMatcherIndices[85], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5495,8 +5525,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[549], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[555], + /* return matcher indices */ &kMatcherIndices[85], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5507,7 +5537,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 2, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[0], - /* parameters */ &kParameters[550], + /* parameters */ &kParameters[556], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5519,8 +5549,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 2, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[0], - /* parameters */ &kParameters[551], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[557], + /* return matcher indices */ &kMatcherIndices[85], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5531,8 +5561,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 2, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[0], - /* parameters */ &kParameters[552], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[558], + /* return matcher indices */ &kMatcherIndices[85], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5543,8 +5573,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 2, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[0], - /* parameters */ &kParameters[553], - /* return matcher indices */ &kMatcherIndices[95], + /* parameters */ &kParameters[559], + /* return matcher indices */ &kMatcherIndices[97], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5555,8 +5585,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[554], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[560], + /* return matcher indices */ &kMatcherIndices[85], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5567,8 +5597,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[258], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[222], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5579,8 +5609,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[158], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[193], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5591,8 +5621,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[163], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[178], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5603,8 +5633,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[55], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[31], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5615,8 +5645,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[242], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[226], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5627,8 +5657,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[183], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[173], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5639,8 +5669,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[234], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[230], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5651,8 +5681,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[193], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[163], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5663,7 +5693,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[226], + /* parameters */ &kParameters[234], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5675,7 +5705,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[208], + /* parameters */ &kParameters[83], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5687,7 +5717,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[113], + /* parameters */ &kParameters[213], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5699,7 +5729,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[13], + /* parameters */ &kParameters[55], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5711,7 +5741,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[222], + /* parameters */ &kParameters[238], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5723,7 +5753,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[203], + /* parameters */ &kParameters[133], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5735,8 +5765,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[351], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[372], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5747,8 +5777,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[456], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[381], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -5759,8 +5789,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[447], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[378], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -5771,8 +5801,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[290], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[338], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -5783,8 +5813,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[286], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[246], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -5795,8 +5825,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[118], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[153], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -5807,8 +5837,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[429], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[366], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -5819,8 +5849,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[278], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[262], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -5831,8 +5861,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[423], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[360], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -5843,8 +5873,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[274], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[266], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -5855,7 +5885,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[417], + /* parameters */ &kParameters[354], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -5867,7 +5897,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[266], + /* parameters */ &kParameters[270], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -5879,7 +5909,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[218], + /* parameters */ &kParameters[330], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -5891,7 +5921,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[153], + /* parameters */ &kParameters[148], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -5903,7 +5933,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[384], + /* parameters */ &kParameters[444], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -5915,7 +5945,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[254], + /* parameters */ &kParameters[218], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -5927,8 +5957,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[330], - /* return matcher indices */ &kMatcherIndices[113], + /* parameters */ &kParameters[314], + /* return matcher indices */ &kMatcherIndices[111], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5939,8 +5969,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[178], - /* return matcher indices */ &kMatcherIndices[113], + /* parameters */ &kParameters[188], + /* return matcher indices */ &kMatcherIndices[111], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5951,8 +5981,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[168], - /* return matcher indices */ &kMatcherIndices[113], + /* parameters */ &kParameters[183], + /* return matcher indices */ &kMatcherIndices[111], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5963,8 +5993,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[25], - /* return matcher indices */ &kMatcherIndices[113], + /* parameters */ &kParameters[43], + /* return matcher indices */ &kMatcherIndices[111], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5975,8 +6005,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[322], - /* return matcher indices */ &kMatcherIndices[113], + /* parameters */ &kParameters[302], + /* return matcher indices */ &kMatcherIndices[111], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5987,8 +6017,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[138], - /* return matcher indices */ &kMatcherIndices[113], + /* parameters */ &kParameters[143], + /* return matcher indices */ &kMatcherIndices[111], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5999,8 +6029,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[357], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[423], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6011,8 +6041,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[334], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[290], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6023,8 +6053,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[318], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[286], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6035,8 +6065,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[93], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[88], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6047,8 +6077,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[393], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[402], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6059,8 +6089,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[306], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[282], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6071,7 +6101,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[354], + /* parameters */ &kParameters[384], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6083,7 +6113,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[375], + /* parameters */ &kParameters[387], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6095,7 +6125,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[246], + /* parameters */ &kParameters[254], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6107,7 +6137,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[378], + /* parameters */ &kParameters[390], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6119,7 +6149,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[387], + /* parameters */ &kParameters[399], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6131,7 +6161,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[390], + /* parameters */ &kParameters[405], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6143,7 +6173,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[262], + /* parameters */ &kParameters[334], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6155,7 +6185,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[414], + /* parameters */ &kParameters[408], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6167,7 +6197,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[420], + /* parameters */ &kParameters[417], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6179,7 +6209,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[426], + /* parameters */ &kParameters[420], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6191,7 +6221,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[282], + /* parameters */ &kParameters[298], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6203,7 +6233,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[432], + /* parameters */ &kParameters[426], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6215,7 +6245,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[578], + /* parameters */ &kParameters[584], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6227,7 +6257,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[579], + /* parameters */ &kParameters[585], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6239,7 +6269,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[580], + /* parameters */ &kParameters[586], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6251,7 +6281,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[581], + /* parameters */ &kParameters[587], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6263,7 +6293,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[582], + /* parameters */ &kParameters[588], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6275,7 +6305,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[583], + /* parameters */ &kParameters[589], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6287,7 +6317,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[584], + /* parameters */ &kParameters[590], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6299,7 +6329,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[585], + /* parameters */ &kParameters[591], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6311,7 +6341,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[586], + /* parameters */ &kParameters[592], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6323,7 +6353,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[587], + /* parameters */ &kParameters[593], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6335,8 +6365,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[435], - /* return matcher indices */ &kMatcherIndices[113], + /* parameters */ &kParameters[429], + /* return matcher indices */ &kMatcherIndices[111], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6347,8 +6377,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[444], - /* return matcher indices */ &kMatcherIndices[113], + /* parameters */ &kParameters[432], + /* return matcher indices */ &kMatcherIndices[111], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6359,8 +6389,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[298], - /* return matcher indices */ &kMatcherIndices[113], + /* parameters */ &kParameters[306], + /* return matcher indices */ &kMatcherIndices[111], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6371,8 +6401,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[399], - /* return matcher indices */ &kMatcherIndices[113], + /* parameters */ &kParameters[435], + /* return matcher indices */ &kMatcherIndices[111], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6383,8 +6413,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[396], - /* return matcher indices */ &kMatcherIndices[113], + /* parameters */ &kParameters[438], + /* return matcher indices */ &kMatcherIndices[111], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6395,7 +6425,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[381], + /* parameters */ &kParameters[441], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6407,7 +6437,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[314], + /* parameters */ &kParameters[322], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6419,7 +6449,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[360], + /* parameters */ &kParameters[459], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6431,8 +6461,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[489], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[483], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6443,8 +6473,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[78], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[158], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6455,8 +6485,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[67], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[37], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6467,8 +6497,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[61], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[49], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6480,7 +6510,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[0], - /* return matcher indices */ &kMatcherIndices[81], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6491,8 +6521,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[128], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[73], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6503,8 +6533,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[43], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[25], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6515,8 +6545,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[213], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[208], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6527,8 +6557,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[37], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[13], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6539,8 +6569,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[250], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[326], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -6551,8 +6581,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[173], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[128], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -6563,8 +6593,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[133], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[203], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -6576,7 +6606,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[19], - /* return matcher indices */ &kMatcherIndices[81], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -6587,8 +6617,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[238], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[318], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -6599,8 +6629,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[148], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[198], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -6611,8 +6641,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[230], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[310], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -6623,8 +6653,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[198], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[168], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -6635,8 +6665,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[302], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[274], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6647,8 +6677,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[143], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[93], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6659,8 +6689,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[83], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[103], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6671,8 +6701,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[7], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[67], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6683,8 +6713,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[294], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[250], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6695,8 +6725,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[103], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[123], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6707,7 +6737,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[326], + /* parameters */ &kParameters[258], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6719,7 +6749,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[73], + /* parameters */ &kParameters[113], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6731,7 +6761,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[123], + /* parameters */ &kParameters[118], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6743,7 +6773,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[31], + /* parameters */ &kParameters[61], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6755,7 +6785,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[310], + /* parameters */ &kParameters[242], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6767,7 +6797,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[88], + /* parameters */ &kParameters[138], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6779,7 +6809,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[338], + /* parameters */ &kParameters[294], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -6803,7 +6833,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[98], + /* parameters */ &kParameters[78], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -6815,7 +6845,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[49], + /* parameters */ &kParameters[7], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -6827,7 +6857,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[270], + /* parameters */ &kParameters[278], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -6839,7 +6869,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[188], + /* parameters */ &kParameters[98], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -6851,7 +6881,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[573], + /* parameters */ &kParameters[579], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6863,7 +6893,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[574], + /* parameters */ &kParameters[580], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6875,7 +6905,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[575], + /* parameters */ &kParameters[581], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6887,7 +6917,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[576], + /* parameters */ &kParameters[582], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6899,7 +6929,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 2, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[0], - /* parameters */ &kParameters[577], + /* parameters */ &kParameters[583], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6911,7 +6941,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[405], + /* parameters */ &kParameters[411], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6923,7 +6953,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[408], + /* parameters */ &kParameters[414], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6935,7 +6965,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[411], + /* parameters */ &kParameters[375], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6947,7 +6977,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[3], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[441], + /* parameters */ &kParameters[369], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6959,7 +6989,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[3], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[438], + /* parameters */ &kParameters[456], /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6971,7 +7001,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[3], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[402], + /* parameters */ &kParameters[453], /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6983,7 +7013,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[620], + /* parameters */ &kParameters[612], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -6995,7 +7025,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[619], + /* parameters */ &kParameters[611], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -7007,7 +7037,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[651], + /* parameters */ &kParameters[646], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7019,7 +7049,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[650], + /* parameters */ &kParameters[645], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7031,7 +7061,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[653], + /* parameters */ &kParameters[649], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7043,7 +7073,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[652], + /* parameters */ &kParameters[648], /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7055,7 +7085,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[485], + /* parameters */ &kParameters[493], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7067,7 +7097,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[487], + /* parameters */ &kParameters[495], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7079,7 +7109,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[655], + /* parameters */ &kParameters[651], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7091,7 +7121,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[654], + /* parameters */ &kParameters[650], /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7103,7 +7133,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[648], + /* parameters */ &kParameters[640], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -7115,7 +7145,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[647], + /* parameters */ &kParameters[639], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -7127,7 +7157,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[646], + /* parameters */ &kParameters[638], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -7139,7 +7169,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[645], + /* parameters */ &kParameters[637], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -7151,7 +7181,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[644], + /* parameters */ &kParameters[636], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -7163,7 +7193,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[643], + /* parameters */ &kParameters[635], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -7175,7 +7205,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[642], + /* parameters */ &kParameters[634], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -7187,7 +7217,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[641], + /* parameters */ &kParameters[633], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -7199,7 +7229,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[640], + /* parameters */ &kParameters[632], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -7211,7 +7241,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[639], + /* parameters */ &kParameters[631], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -7223,7 +7253,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[638], + /* parameters */ &kParameters[630], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -7235,7 +7265,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[637], + /* parameters */ &kParameters[629], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -7247,7 +7277,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[636], + /* parameters */ &kParameters[628], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7259,7 +7289,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[635], + /* parameters */ &kParameters[627], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7271,7 +7301,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[634], + /* parameters */ &kParameters[626], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7283,31 +7313,31 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[633], + /* parameters */ &kParameters[625], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [171] */ - /* num parameters */ 1, + /* num parameters */ 3, /* num open types */ 1, /* num open numbers */ 0, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[657], + /* parameters */ &kParameters[363], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [172] */ - /* num parameters */ 1, + /* num parameters */ 3, /* num open types */ 1, /* num open numbers */ 1, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[656], + /* parameters */ &kParameters[357], /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7319,7 +7349,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[632], + /* parameters */ &kParameters[653], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7331,7 +7361,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[631], + /* parameters */ &kParameters[652], /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7343,7 +7373,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[630], + /* parameters */ &kParameters[624], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7355,7 +7385,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[629], + /* parameters */ &kParameters[623], /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7363,71 +7393,71 @@ constexpr OverloadInfo kOverloads[] = { { /* [177] */ /* 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[628], - /* return matcher indices */ &kMatcherIndices[12], + /* parameters */ &kParameters[622], + /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [178] */ /* 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[627], - /* return matcher indices */ &kMatcherIndices[21], + /* parameters */ &kParameters[621], + /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [179] */ - /* num parameters */ 3, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[345], + /* parameters */ &kParameters[620], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [180] */ - /* num parameters */ 3, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[369], + /* parameters */ &kParameters[619], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [181] */ - /* num parameters */ 1, + /* num parameters */ 3, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[626], + /* parameters */ &kParameters[348], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [182] */ - /* num parameters */ 1, + /* num parameters */ 3, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[625], + /* parameters */ &kParameters[345], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7439,8 +7469,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[624], - /* return matcher indices */ &kMatcherIndices[138], + /* parameters */ &kParameters[618], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7451,8 +7481,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[623], - /* return matcher indices */ &kMatcherIndices[101], + /* parameters */ &kParameters[617], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7463,9 +7493,9 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[622], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* parameters */ &kParameters[616], + /* return matcher indices */ &kMatcherIndices[138], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { @@ -7475,9 +7505,9 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[621], - /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* parameters */ &kParameters[615], + /* return matcher indices */ &kMatcherIndices[101], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { @@ -7487,9 +7517,9 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[659], + /* parameters */ &kParameters[614], /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, { @@ -7499,9 +7529,9 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[658], + /* parameters */ &kParameters[613], /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, { @@ -7511,9 +7541,9 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[618], + /* parameters */ &kParameters[655], /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { @@ -7523,9 +7553,9 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[617], + /* parameters */ &kParameters[654], /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { @@ -7535,9 +7565,9 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[616], + /* parameters */ &kParameters[610], /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, { @@ -7547,9 +7577,9 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[615], + /* parameters */ &kParameters[609], /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, { @@ -7559,10 +7589,10 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[614], - /* return matcher indices */ &kMatcherIndices[10], + /* parameters */ &kParameters[608], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ true, + /* is_deprecated */ false, }, { /* [194] */ @@ -7571,10 +7601,10 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[613], - /* return matcher indices */ &kMatcherIndices[24], + /* parameters */ &kParameters[607], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ true, + /* is_deprecated */ false, }, { /* [195] */ @@ -7583,7 +7613,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[612], + /* parameters */ &kParameters[606], /* return matcher indices */ &kMatcherIndices[10], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ true, @@ -7595,7 +7625,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[611], + /* parameters */ &kParameters[605], /* return matcher indices */ &kMatcherIndices[24], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ true, @@ -7607,7 +7637,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[610], + /* parameters */ &kParameters[604], /* return matcher indices */ &kMatcherIndices[10], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ true, @@ -7619,7 +7649,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[609], + /* parameters */ &kParameters[603], /* return matcher indices */ &kMatcherIndices[24], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ true, @@ -7631,7 +7661,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[608], + /* parameters */ &kParameters[602], /* return matcher indices */ &kMatcherIndices[10], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ true, @@ -7643,56 +7673,56 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[607], + /* parameters */ &kParameters[601], /* return matcher indices */ &kMatcherIndices[24], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ true, }, { /* [201] */ - /* num parameters */ 2, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[459], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [202] */ - /* num parameters */ 2, - /* num open types */ 0, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[483], - /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [203] */ /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[606], + /* parameters */ &kParameters[600], + /* return matcher indices */ &kMatcherIndices[10], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ true, + }, + { + /* [202] */ + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[599], + /* return matcher indices */ &kMatcherIndices[24], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ true, + }, + { + /* [203] */ + /* num parameters */ 2, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[505], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [204] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[605], - /* return matcher indices */ &kMatcherIndices[12], + /* parameters */ &kParameters[507], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7703,7 +7733,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[604], + /* parameters */ &kParameters[596], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7715,8 +7745,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[603], - /* return matcher indices */ &kMatcherIndices[21], + /* parameters */ &kParameters[578], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7727,7 +7757,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[602], + /* parameters */ &kParameters[577], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7739,32 +7769,32 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[601], + /* parameters */ &kParameters[576], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [209] */ - /* 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[479], - /* return matcher indices */ &kMatcherIndices[1], + /* parameters */ &kParameters[575], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [210] */ - /* 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[477], - /* return matcher indices */ &kMatcherIndices[39], + /* parameters */ &kParameters[573], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7775,7 +7805,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[471], + /* parameters */ &kParameters[513], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7787,32 +7817,32 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[469], + /* parameters */ &kParameters[515], /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [213] */ - /* num parameters */ 1, - /* num open types */ 0, + /* num parameters */ 2, + /* num open types */ 1, /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], + /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[661], - /* return matcher indices */ &kMatcherIndices[12], + /* parameters */ &kParameters[517], + /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [214] */ - /* num parameters */ 1, - /* num open types */ 0, + /* num parameters */ 2, + /* num open types */ 1, /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], + /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[660], - /* return matcher indices */ &kMatcherIndices[21], + /* parameters */ &kParameters[519], + /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7823,8 +7853,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[600], - /* return matcher indices */ &kMatcherIndices[137], + /* parameters */ &kParameters[657], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7835,56 +7865,56 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[599], - /* return matcher indices */ &kMatcherIndices[103], + /* parameters */ &kParameters[656], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [217] */ - /* num parameters */ 3, - /* 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[450], - /* return matcher indices */ &kMatcherIndices[1], + /* parameters */ &kParameters[568], + /* return matcher indices */ &kMatcherIndices[137], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [218] */ - /* num parameters */ 3, - /* 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[342], - /* return matcher indices */ &kMatcherIndices[39], + /* parameters */ &kParameters[567], + /* return matcher indices */ &kMatcherIndices[103], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [219] */ - /* num parameters */ 1, - /* num open types */ 0, + /* num parameters */ 3, + /* num open types */ 1, /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], + /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[663], - /* return matcher indices */ &kMatcherIndices[12], + /* parameters */ &kParameters[396], + /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [220] */ - /* num parameters */ 1, - /* num open types */ 0, + /* num parameters */ 3, + /* num open types */ 1, /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], + /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[662], - /* return matcher indices */ &kMatcherIndices[21], + /* parameters */ &kParameters[393], + /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7895,7 +7925,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[565], + /* parameters */ &kParameters[676], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7907,7 +7937,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[564], + /* parameters */ &kParameters[674], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7919,7 +7949,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[559], + /* parameters */ &kParameters[659], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7931,7 +7961,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[558], + /* parameters */ &kParameters[658], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7939,12 +7969,12 @@ constexpr OverloadInfo kOverloads[] = { { /* [225] */ /* 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[588], - /* return matcher indices */ &kMatcherIndices[55], + /* parameters */ &kParameters[597], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7952,35 +7982,35 @@ constexpr OverloadInfo kOverloads[] = { /* [226] */ /* num parameters */ 1, /* num open types */ 0, - /* num open numbers */ 0, + /* num open numbers */ 1, /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[589], - /* return matcher indices */ &kMatcherIndices[55], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[574], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [227] */ - /* num parameters */ 2, - /* num open types */ 0, + /* num parameters */ 1, + /* num open types */ 1, /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], + /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[475], - /* return matcher indices */ &kMatcherIndices[12], + /* parameters */ &kParameters[594], + /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [228] */ - /* num parameters */ 2, + /* 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[473], - /* return matcher indices */ &kMatcherIndices[21], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[595], + /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7991,7 +8021,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[467], + /* parameters */ &kParameters[485], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8003,31 +8033,31 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[465], + /* parameters */ &kParameters[487], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [231] */ - /* 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[535], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [232] */ - /* 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[491], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8039,7 +8069,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[665], + /* parameters */ &kParameters[647], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8051,7 +8081,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[664], + /* parameters */ &kParameters[679], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8063,7 +8093,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[667], + /* parameters */ &kParameters[663], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8075,7 +8105,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[666], + /* parameters */ &kParameters[662], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8083,48 +8113,48 @@ constexpr OverloadInfo kOverloads[] = { { /* [237] */ /* 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[590], - /* return matcher indices */ &kMatcherIndices[1], + /* parameters */ &kParameters[665], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [238] */ /* 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[533], - /* return matcher indices */ &kMatcherIndices[39], + /* parameters */ &kParameters[664], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [239] */ /* 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[572], - /* return matcher indices */ &kMatcherIndices[12], + /* parameters */ &kParameters[680], + /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [240] */ /* 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[571], - /* return matcher indices */ &kMatcherIndices[21], + /* parameters */ &kParameters[548], + /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -8135,8 +8165,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[671], - /* return matcher indices */ &kMatcherIndices[10], + /* parameters */ &kParameters[682], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -8147,8 +8177,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[670], - /* return matcher indices */ &kMatcherIndices[10], + /* parameters */ &kParameters[681], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -8159,8 +8189,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[570], - /* return matcher indices */ &kMatcherIndices[12], + /* parameters */ &kParameters[668], + /* return matcher indices */ &kMatcherIndices[10], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -8171,8 +8201,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[569], - /* return matcher indices */ &kMatcherIndices[21], + /* parameters */ &kParameters[667], + /* return matcher indices */ &kMatcherIndices[10], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -8183,7 +8213,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[567], + /* parameters */ &kParameters[678], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8195,7 +8225,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[566], + /* parameters */ &kParameters[677], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8207,7 +8237,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[673], + /* parameters */ &kParameters[670], /* return matcher indices */ &kMatcherIndices[10], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8219,103 +8249,103 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[672], + /* parameters */ &kParameters[669], /* return matcher indices */ &kMatcherIndices[10], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [249] */ - /* num parameters */ 3, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[372], + /* parameters */ &kParameters[661], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [250] */ - /* num parameters */ 3, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[363], + /* parameters */ &kParameters[660], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [251] */ - /* num parameters */ 1, + /* num parameters */ 3, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[563], + /* parameters */ &kParameters[450], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [252] */ - /* num parameters */ 1, + /* num parameters */ 3, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[562], + /* parameters */ &kParameters[447], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [253] */ - /* num parameters */ 2, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[491], + /* parameters */ &kParameters[643], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [254] */ - /* num parameters */ 2, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[493], + /* parameters */ &kParameters[642], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [255] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[675], + /* parameters */ &kParameters[497], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [256] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[674], + /* parameters */ &kParameters[499], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8327,7 +8357,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[561], + /* parameters */ &kParameters[672], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8339,7 +8369,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[560], + /* parameters */ &kParameters[671], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8351,7 +8381,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[556], + /* parameters */ &kParameters[641], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8363,7 +8393,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[555], + /* parameters */ &kParameters[598], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8371,48 +8401,48 @@ constexpr OverloadInfo kOverloads[] = { { /* [261] */ /* 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[677], - /* return matcher indices */ &kMatcherIndices[1], + /* parameters */ &kParameters[572], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [262] */ /* 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[676], - /* return matcher indices */ &kMatcherIndices[39], + /* parameters */ &kParameters[571], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [263] */ /* num parameters */ 1, - /* num open types */ 0, - /* num open numbers */ 2, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[2], - /* parameters */ &kParameters[557], - /* return matcher indices */ &kMatcherIndices[9], + /* num open types */ 1, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[683], + /* return matcher indices */ &kMatcherIndices[1], /* 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[548], - /* return matcher indices */ &kMatcherIndices[85], + /* num open types */ 1, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[673], + /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -8420,11 +8450,11 @@ constexpr OverloadInfo kOverloads[] = { /* [265] */ /* 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[546], - /* return matcher indices */ &kMatcherIndices[85], + /* open numbers */ &kOpenNumbers[2], + /* parameters */ &kParameters[539], + /* return matcher indices */ &kMatcherIndices[9], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -8435,8 +8465,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[544], - /* return matcher indices */ &kMatcherIndices[85], + /* parameters */ &kParameters[570], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -8447,7 +8477,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[542], + /* parameters */ &kParameters[569], /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8459,92 +8489,92 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[539], + /* parameters */ &kParameters[554], /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [269] */ - /* num parameters */ 0, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[678], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [270] */ - /* num parameters */ 0, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[678], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [271] */ /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[596], - /* return matcher indices */ &kMatcherIndices[43], + /* parameters */ &kParameters[552], + /* return matcher indices */ &kMatcherIndices[83], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, + { + /* [270] */ + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[550], + /* return matcher indices */ &kMatcherIndices[83], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [271] */ + /* num parameters */ 0, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[684], + /* return matcher indices */ nullptr, + /* supported_stages */ PipelineStageSet(PipelineStage::kCompute), + /* is_deprecated */ false, + }, { /* [272] */ - /* num parameters */ 3, + /* num parameters */ 0, /* num open types */ 0, - /* num open numbers */ 1, + /* num open numbers */ 0, /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[453], - /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[684], + /* return matcher indices */ nullptr, + /* supported_stages */ PipelineStageSet(PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [273] */ - /* num parameters */ 2, + /* 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[463], - /* return matcher indices */ &kMatcherIndices[21], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[565], + /* return matcher indices */ &kMatcherIndices[43], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [274] */ - /* 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[593], - /* return matcher indices */ &kMatcherIndices[43], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[462], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [275] */ - /* 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[594], - /* return matcher indices */ &kMatcherIndices[43], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[473], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -8555,7 +8585,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[595], + /* parameters */ &kParameters[561], /* return matcher indices */ &kMatcherIndices[43], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8567,7 +8597,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[597], + /* parameters */ &kParameters[562], /* return matcher indices */ &kMatcherIndices[43], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8576,106 +8606,106 @@ constexpr OverloadInfo kOverloads[] = { /* [278] */ /* 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[598], - /* return matcher indices */ &kMatcherIndices[21], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[563], + /* return matcher indices */ &kMatcherIndices[43], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [279] */ - /* 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[348], - /* return matcher indices */ &kMatcherIndices[21], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[564], + /* return matcher indices */ &kMatcherIndices[43], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [280] */ - /* num parameters */ 2, - /* num open types */ 1, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[0], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[497], - /* return matcher indices */ &kMatcherIndices[1], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [281] */ /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[649], - /* return matcher indices */ &kMatcherIndices[12], + /* parameters */ &kParameters[566], + /* return matcher indices */ &kMatcherIndices[21], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [281] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[351], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [282] */ /* num parameters */ 2, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[481], - /* return matcher indices */ &kMatcherIndices[91], + /* num open types */ 1, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[503], + /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [283] */ /* 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[668], - /* return matcher indices */ &kMatcherIndices[43], + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[644], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [284] */ + /* num parameters */ 2, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[489], + /* return matcher indices */ &kMatcherIndices[93], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [285] */ + /* num parameters */ 1, + /* num open types */ 1, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[2], + /* open numbers */ &kOpenNumbers[4], + /* parameters */ &kParameters[666], + /* return matcher indices */ &kMatcherIndices[43], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [286] */ /* num parameters */ 1, /* num open types */ 1, /* num open numbers */ 1, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[669], - /* return matcher indices */ &kMatcherIndices[1], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [285] */ - /* num parameters */ 2, - /* num open types */ 1, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[1], - /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[495], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [286] */ - /* num parameters */ 2, - /* num open types */ 1, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[1], - /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[499], + /* parameters */ &kParameters[675], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8687,8 +8717,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[501], - /* return matcher indices */ &kMatcherIndices[1], + /* parameters */ &kParameters[481], + /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -8699,7 +8729,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[503], + /* parameters */ &kParameters[479], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8711,7 +8741,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[505], + /* parameters */ &kParameters[477], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8723,7 +8753,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[507], + /* parameters */ &kParameters[475], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8735,7 +8765,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[509], + /* parameters */ &kParameters[471], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8747,7 +8777,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[521], + /* parameters */ &kParameters[469], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8759,20 +8789,44 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[461], + /* parameters */ &kParameters[467], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [294] */ + /* num parameters */ 2, + /* num open types */ 1, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[1], + /* open numbers */ &kOpenNumbers[5], + /* parameters */ &kParameters[527], + /* return matcher indices */ &kMatcherIndices[1], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [295] */ + /* num parameters */ 2, + /* num open types */ 1, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[1], + /* open numbers */ &kOpenNumbers[5], + /* parameters */ &kParameters[501], + /* return matcher indices */ &kMatcherIndices[1], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [296] */ /* num parameters */ 3, /* num open types */ 1, /* num open numbers */ 1, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[366], - /* return matcher indices */ &kMatcherIndices[105], + /* parameters */ &kParameters[342], + /* return matcher indices */ &kMatcherIndices[127], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -8784,14 +8838,14 @@ constexpr BuiltinInfo kBuiltins[] = { /* fn abs(T) -> T */ /* fn abs(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[261], + /* overloads */ &kOverloads[263], }, { /* [1] */ /* fn acos(f32) -> f32 */ /* fn acos(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[255], + /* overloads */ &kOverloads[257], }, { /* [2] */ @@ -8805,69 +8859,69 @@ constexpr BuiltinInfo kBuiltins[] = { /* fn any(bool) -> bool */ /* fn any(vec) -> bool */ /* num overloads */ 2, - /* overloads */ &kOverloads[241], + /* overloads */ &kOverloads[243], }, { /* [4] */ /* fn arrayLength(ptr, A>) -> u32 */ /* num overloads */ 1, - /* overloads */ &kOverloads[283], + /* overloads */ &kOverloads[285], }, { /* [5] */ /* fn asin(f32) -> f32 */ /* fn asin(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[235], + /* overloads */ &kOverloads[237], }, { /* [6] */ /* fn atan(f32) -> f32 */ /* fn atan(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[233], + /* overloads */ &kOverloads[235], }, { /* [7] */ /* fn atan2(f32, f32) -> f32 */ /* fn atan2(vec, vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[227], + /* overloads */ &kOverloads[229], }, { /* [8] */ /* fn ceil(f32) -> f32 */ /* fn ceil(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[219], + /* overloads */ &kOverloads[223], }, { /* [9] */ /* fn clamp(T, T, T) -> T */ /* fn clamp(vec, vec, vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[217], + /* overloads */ &kOverloads[219], }, { /* [10] */ /* fn cos(f32) -> f32 */ /* fn cos(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[213], + /* overloads */ &kOverloads[215], }, { /* [11] */ /* fn cosh(f32) -> f32 */ /* fn cosh(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[187], + /* overloads */ &kOverloads[189], }, { /* [12] */ /* fn countLeadingZeros(T) -> T */ /* fn countLeadingZeros(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[171], + /* overloads */ &kOverloads[173], }, { /* [13] */ @@ -8887,7 +8941,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* [15] */ /* fn cross(vec3, vec3) -> vec3 */ /* num overloads */ 1, - /* overloads */ &kOverloads[282], + /* overloads */ &kOverloads[284], }, { /* [16] */ @@ -8900,7 +8954,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* [17] */ /* fn determinant(mat) -> f32 */ /* num overloads */ 1, - /* overloads */ &kOverloads[281], + /* overloads */ &kOverloads[283], }, { /* [18] */ @@ -8913,7 +8967,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* [19] */ /* fn dot(vec, vec) -> T */ /* num overloads */ 1, - /* overloads */ &kOverloads[280], + /* overloads */ &kOverloads[282], }, { /* [20] */ @@ -8973,152 +9027,159 @@ constexpr BuiltinInfo kBuiltins[] = { }, { /* [28] */ - /* fn faceForward(vec, vec, vec) -> vec */ - /* num overloads */ 1, - /* overloads */ &kOverloads[279], + /* fn extractBits(T, u32, u32) -> T */ + /* fn extractBits(vec, u32, u32) -> vec */ + /* num overloads */ 2, + /* overloads */ &kOverloads[171], }, { /* [29] */ - /* fn firstLeadingBit(T) -> T */ - /* fn firstLeadingBit(vec) -> vec */ - /* num overloads */ 2, - /* overloads */ &kOverloads[173], + /* fn faceForward(vec, vec, vec) -> vec */ + /* num overloads */ 1, + /* overloads */ &kOverloads[281], }, { /* [30] */ - /* fn firstTrailingBit(T) -> T */ - /* fn firstTrailingBit(vec) -> vec */ + /* fn firstLeadingBit(T) -> T */ + /* fn firstLeadingBit(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[175], }, { /* [31] */ - /* fn floor(f32) -> f32 */ - /* fn floor(vec) -> vec */ + /* fn firstTrailingBit(T) -> T */ + /* fn firstTrailingBit(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[177], }, { /* [32] */ - /* 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[179], }, { /* [33] */ - /* 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[181], }, { /* [34] */ - /* fn frexp(f32) -> __frexp_result */ - /* fn frexp(vec) -> __frexp_result_vec */ + /* fn fract(f32) -> f32 */ + /* fn fract(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[183], }, { /* [35] */ - /* fn fwidth(f32) -> f32 */ - /* fn fwidth(vec) -> vec */ + /* fn frexp(f32) -> __frexp_result */ + /* fn frexp(vec) -> __frexp_result_vec */ /* num overloads */ 2, /* overloads */ &kOverloads[185], }, { /* [36] */ + /* fn fwidth(f32) -> f32 */ + /* fn fwidth(vec) -> vec */ + /* num overloads */ 2, + /* overloads */ &kOverloads[187], + }, + { + /* [37] */ /* fn fwidthCoarse(f32) -> f32 */ /* fn fwidthCoarse(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[145], }, { - /* [37] */ + /* [38] */ /* fn fwidthFine(f32) -> f32 */ /* fn fwidthFine(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[189], - }, - { - /* [38] */ - /* fn inverseSqrt(f32) -> f32 */ - /* fn inverseSqrt(vec) -> vec */ - /* num overloads */ 2, /* overloads */ &kOverloads[191], }, { /* [39] */ - /* fn isFinite(f32) -> bool */ - /* fn isFinite(vec) -> vec */ + /* fn inverseSqrt(f32) -> f32 */ + /* fn inverseSqrt(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[193], }, { /* [40] */ - /* fn isInf(f32) -> bool */ - /* fn isInf(vec) -> vec */ + /* fn isFinite(f32) -> bool */ + /* fn isFinite(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[195], }, { /* [41] */ - /* fn isNan(f32) -> bool */ - /* fn isNan(vec) -> vec */ + /* fn isInf(f32) -> bool */ + /* fn isInf(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[197], }, { /* [42] */ - /* fn isNormal(f32) -> bool */ - /* fn isNormal(vec) -> vec */ + /* fn isNan(f32) -> bool */ + /* fn isNan(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[199], }, { /* [43] */ - /* fn ldexp(f32, i32) -> f32 */ - /* fn ldexp(vec, vec) -> vec */ + /* fn isNormal(f32) -> bool */ + /* fn isNormal(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[201], }, { /* [44] */ - /* fn length(f32) -> f32 */ - /* fn length(vec) -> f32 */ + /* fn ldexp(f32, i32) -> f32 */ + /* fn ldexp(vec, vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[203], }, { /* [45] */ - /* fn log(f32) -> f32 */ - /* fn log(vec) -> vec */ + /* fn length(f32) -> f32 */ + /* fn length(vec) -> f32 */ /* num overloads */ 2, /* overloads */ &kOverloads[205], }, { /* [46] */ - /* fn log2(f32) -> f32 */ - /* fn log2(vec) -> vec */ + /* fn log(f32) -> f32 */ + /* fn log(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[207], }, { /* [47] */ - /* fn max(T, T) -> T */ - /* fn max(vec, vec) -> vec */ + /* fn log2(f32) -> f32 */ + /* fn log2(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[209], }, { /* [48] */ - /* 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[211], }, { /* [49] */ + /* fn min(T, T) -> T */ + /* fn min(vec, vec) -> vec */ + /* num overloads */ 2, + /* overloads */ &kOverloads[213], + }, + { + /* [50] */ /* fn mix(f32, f32, f32) -> f32 */ /* fn mix(vec, vec, vec) -> vec */ /* fn mix(vec, vec, f32) -> vec */ @@ -9126,90 +9187,90 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[139], }, { - /* [50] */ + /* [51] */ /* fn modf(f32) -> __modf_result */ /* fn modf(vec) -> __modf_result_vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[215], + /* overloads */ &kOverloads[217], }, { - /* [51] */ + /* [52] */ /* fn normalize(vec) -> vec */ /* num overloads */ 1, + /* overloads */ &kOverloads[280], + }, + { + /* [53] */ + /* fn pack2x16float(vec2) -> u32 */ + /* num overloads */ 1, + /* overloads */ &kOverloads[273], + }, + { + /* [54] */ + /* fn pack2x16snorm(vec2) -> u32 */ + /* num overloads */ 1, + /* overloads */ &kOverloads[279], + }, + { + /* [55] */ + /* fn pack2x16unorm(vec2) -> u32 */ + /* num overloads */ 1, /* overloads */ &kOverloads[278], }, { - /* [52] */ - /* fn pack2x16float(vec2) -> u32 */ + /* [56] */ + /* fn pack4x8snorm(vec4) -> u32 */ /* num overloads */ 1, /* overloads */ &kOverloads[277], }, { - /* [53] */ - /* fn pack2x16snorm(vec2) -> u32 */ - /* num overloads */ 1, - /* overloads */ &kOverloads[271], - }, - { - /* [54] */ - /* fn pack2x16unorm(vec2) -> u32 */ + /* [57] */ + /* fn pack4x8unorm(vec4) -> u32 */ /* num overloads */ 1, /* overloads */ &kOverloads[276], }, { - /* [55] */ - /* fn pack4x8snorm(vec4) -> u32 */ - /* num overloads */ 1, - /* overloads */ &kOverloads[275], - }, - { - /* [56] */ - /* fn pack4x8unorm(vec4) -> u32 */ - /* num overloads */ 1, - /* overloads */ &kOverloads[274], - }, - { - /* [57] */ + /* [58] */ /* fn pow(f32, f32) -> f32 */ /* fn pow(vec, vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[229], - }, - { - /* [58] */ - /* fn radians(f32) -> f32 */ - /* fn radians(vec) -> vec */ - /* num overloads */ 2, /* overloads */ &kOverloads[231], }, { /* [59] */ - /* fn reflect(vec, vec) -> vec */ - /* num overloads */ 1, - /* overloads */ &kOverloads[273], + /* fn radians(f32) -> f32 */ + /* fn radians(vec) -> vec */ + /* num overloads */ 2, + /* overloads */ &kOverloads[233], }, { /* [60] */ - /* fn refract(vec, vec, f32) -> vec */ + /* fn reflect(vec, vec) -> vec */ /* num overloads */ 1, - /* overloads */ &kOverloads[272], + /* overloads */ &kOverloads[275], }, { /* [61] */ - /* fn reverseBits(T) -> T */ - /* fn reverseBits(vec) -> vec */ - /* num overloads */ 2, - /* overloads */ &kOverloads[237], + /* fn refract(vec, vec, f32) -> vec */ + /* num overloads */ 1, + /* overloads */ &kOverloads[274], }, { /* [62] */ - /* fn round(f32) -> f32 */ - /* fn round(vec) -> vec */ + /* fn reverseBits(T) -> T */ + /* fn reverseBits(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[239], }, { /* [63] */ + /* fn round(f32) -> f32 */ + /* fn round(vec) -> vec */ + /* num overloads */ 2, + /* overloads */ &kOverloads[241], + }, + { + /* [64] */ /* fn select(T, T, bool) -> T */ /* fn select(vec, vec, bool) -> vec */ /* fn select(vec, vec, vec) -> vec */ @@ -9217,118 +9278,118 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[142], }, { - /* [64] */ + /* [65] */ /* fn sign(f32) -> f32 */ /* fn sign(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[243], - }, - { - /* [65] */ - /* fn sin(f32) -> f32 */ - /* fn sin(vec) -> vec */ - /* num overloads */ 2, /* overloads */ &kOverloads[245], }, { /* [66] */ - /* fn sinh(f32) -> f32 */ - /* fn sinh(vec) -> vec */ + /* fn sin(f32) -> f32 */ + /* fn sin(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[221], }, { /* [67] */ - /* 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[249], }, { /* [68] */ - /* 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[251], }, { /* [69] */ - /* fn step(f32, f32) -> f32 */ - /* fn step(vec, vec) -> vec */ + /* fn sqrt(f32) -> f32 */ + /* fn sqrt(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[253], }, { /* [70] */ - /* fn storageBarrier() */ - /* num overloads */ 1, - /* overloads */ &kOverloads[270], + /* fn step(f32, f32) -> f32 */ + /* fn step(vec, vec) -> vec */ + /* num overloads */ 2, + /* overloads */ &kOverloads[255], }, { /* [71] */ - /* fn tan(f32) -> f32 */ - /* fn tan(vec) -> vec */ - /* num overloads */ 2, - /* overloads */ &kOverloads[257], + /* fn storageBarrier() */ + /* num overloads */ 1, + /* overloads */ &kOverloads[272], }, { /* [72] */ - /* fn tanh(f32) -> f32 */ - /* fn tanh(vec) -> vec */ - /* num overloads */ 2, - /* overloads */ &kOverloads[223], - }, - { - /* [73] */ - /* fn transpose(mat) -> mat */ - /* num overloads */ 1, - /* overloads */ &kOverloads[263], - }, - { - /* [74] */ - /* fn trunc(f32) -> f32 */ - /* fn trunc(vec) -> vec */ + /* fn tan(f32) -> f32 */ + /* fn tan(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[259], }, { - /* [75] */ - /* fn unpack2x16float(u32) -> vec2 */ - /* num overloads */ 1, - /* overloads */ &kOverloads[264], + /* [73] */ + /* fn tanh(f32) -> f32 */ + /* fn tanh(vec) -> vec */ + /* num overloads */ 2, + /* overloads */ &kOverloads[225], }, { - /* [76] */ - /* fn unpack2x16snorm(u32) -> vec2 */ + /* [74] */ + /* fn transpose(mat) -> mat */ /* num overloads */ 1, /* overloads */ &kOverloads[265], }, { - /* [77] */ - /* fn unpack2x16unorm(u32) -> vec2 */ + /* [75] */ + /* fn trunc(f32) -> f32 */ + /* fn trunc(vec) -> vec */ + /* num overloads */ 2, + /* overloads */ &kOverloads[261], + }, + { + /* [76] */ + /* fn unpack2x16float(u32) -> vec2 */ /* num overloads */ 1, /* overloads */ &kOverloads[266], }, { - /* [78] */ - /* fn unpack4x8snorm(u32) -> vec4 */ + /* [77] */ + /* fn unpack2x16snorm(u32) -> vec2 */ /* num overloads */ 1, /* overloads */ &kOverloads[267], }, { - /* [79] */ - /* fn unpack4x8unorm(u32) -> vec4 */ + /* [78] */ + /* fn unpack2x16unorm(u32) -> vec2 */ /* num overloads */ 1, /* overloads */ &kOverloads[268], }, { - /* [80] */ - /* fn workgroupBarrier() */ + /* [79] */ + /* fn unpack4x8snorm(u32) -> vec4 */ /* num overloads */ 1, /* overloads */ &kOverloads[269], }, + { + /* [80] */ + /* fn unpack4x8unorm(u32) -> vec4 */ + /* num overloads */ 1, + /* overloads */ &kOverloads[270], + }, { /* [81] */ + /* fn workgroupBarrier() */ + /* num overloads */ 1, + /* overloads */ &kOverloads[271], + }, + { + /* [82] */ /* fn textureDimensions(texture: texture_1d) -> i32 */ /* fn textureDimensions(texture: texture_1d, level: i32) -> i32 */ /* fn textureDimensions(texture: texture_2d) -> vec2 */ @@ -9360,7 +9421,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[0], }, { - /* [82] */ + /* [83] */ /* 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 */ @@ -9377,7 +9438,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[57], }, { - /* [83] */ + /* [84] */ /* 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 */ @@ -9388,7 +9449,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[116], }, { - /* [84] */ + /* [85] */ /* fn textureNumLayers(texture: texture_2d_array) -> i32 */ /* fn textureNumLayers(texture: texture_cube_array) -> i32 */ /* fn textureNumLayers(texture: texture_depth_2d_array) -> i32 */ @@ -9398,7 +9459,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[134], }, { - /* [85] */ + /* [86] */ /* fn textureNumLevels(texture: texture_1d) -> i32 */ /* fn textureNumLevels(texture: texture_2d) -> i32 */ /* fn textureNumLevels(texture: texture_2d_array) -> i32 */ @@ -9413,14 +9474,14 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[81], }, { - /* [86] */ + /* [87] */ /* fn textureNumSamples(texture: texture_multisampled_2d) -> i32 */ /* fn textureNumSamples(texture: texture_depth_multisampled_2d) -> i32 */ /* num overloads */ 2, - /* overloads */ &kOverloads[225], + /* overloads */ &kOverloads[227], }, { - /* [87] */ + /* [88] */ /* 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 */ @@ -9440,7 +9501,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[42], }, { - /* [88] */ + /* [89] */ /* 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 */ @@ -9453,7 +9514,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[108], }, { - /* [89] */ + /* [90] */ /* 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 */ @@ -9464,7 +9525,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[128], }, { - /* [90] */ + /* [91] */ /* 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 */ @@ -9475,7 +9536,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[122], }, { - /* [91] */ + /* [92] */ /* 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 */ @@ -9488,7 +9549,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[100], }, { - /* [92] */ + /* [93] */ /* 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 */ @@ -9508,7 +9569,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[27], }, { - /* [93] */ + /* [94] */ /* 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) */ @@ -9525,7 +9586,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[69], }, { - /* [94] */ + /* [95] */ /* 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 */ @@ -9538,72 +9599,72 @@ constexpr BuiltinInfo kBuiltins[] = { /* num overloads */ 9, /* overloads */ &kOverloads[91], }, - { - /* [95] */ - /* fn atomicLoad(ptr, read_write>) -> T */ - /* num overloads */ 1, - /* overloads */ &kOverloads[284], - }, { /* [96] */ - /* fn atomicStore(ptr, read_write>, T) */ - /* num overloads */ 1, - /* overloads */ &kOverloads[285], - }, - { - /* [97] */ - /* fn atomicAdd(ptr, read_write>, T) -> T */ + /* fn atomicLoad(ptr, read_write>) -> T */ /* num overloads */ 1, /* overloads */ &kOverloads[286], }, { - /* [98] */ - /* fn atomicSub(ptr, read_write>, T) -> T */ + /* [97] */ + /* fn atomicStore(ptr, read_write>, T) */ /* num overloads */ 1, /* overloads */ &kOverloads[287], }, { - /* [99] */ - /* fn atomicMax(ptr, read_write>, T) -> T */ + /* [98] */ + /* fn atomicAdd(ptr, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ &kOverloads[288], }, { - /* [100] */ - /* fn atomicMin(ptr, read_write>, T) -> T */ + /* [99] */ + /* fn atomicSub(ptr, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ &kOverloads[289], }, { - /* [101] */ - /* fn atomicAnd(ptr, read_write>, T) -> T */ + /* [100] */ + /* fn atomicMax(ptr, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ &kOverloads[290], }, { - /* [102] */ - /* fn atomicOr(ptr, read_write>, T) -> T */ + /* [101] */ + /* fn atomicMin(ptr, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ &kOverloads[291], }, { - /* [103] */ - /* fn atomicXor(ptr, read_write>, T) -> T */ + /* [102] */ + /* fn atomicAnd(ptr, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ &kOverloads[292], }, { - /* [104] */ - /* fn atomicExchange(ptr, read_write>, T) -> T */ + /* [103] */ + /* fn atomicOr(ptr, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ &kOverloads[293], }, { - /* [105] */ - /* fn atomicCompareExchangeWeak(ptr, read_write>, T, T) -> vec2 */ + /* [104] */ + /* fn atomicXor(ptr, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ &kOverloads[294], }, + { + /* [105] */ + /* fn atomicExchange(ptr, read_write>, T) -> T */ + /* num overloads */ 1, + /* overloads */ &kOverloads[295], + }, + { + /* [106] */ + /* fn atomicCompareExchangeWeak(ptr, read_write>, T, T) -> vec2 */ + /* num overloads */ 1, + /* overloads */ &kOverloads[296], + }, }; // clang-format on diff --git a/src/tint/builtins.def b/src/tint/builtins.def index feb7f7adef..670d878b0d 100644 --- a/src/tint/builtins.def +++ b/src/tint/builtins.def @@ -315,6 +315,8 @@ fn exp(f32) -> f32 fn exp(vec) -> vec fn exp2(f32) -> f32 fn exp2(vec) -> vec +fn extractBits(T, u32, u32) -> T +fn extractBits(vec, u32, u32) -> vec fn faceForward(vec, vec, vec) -> vec fn firstLeadingBit(T) -> T fn firstLeadingBit(vec) -> vec diff --git a/src/tint/reader/spirv/function.cc b/src/tint/reader/spirv/function.cc index f827001623..fd98cdac60 100644 --- a/src/tint/reader/spirv/function.cc +++ b/src/tint/reader/spirv/function.cc @@ -463,6 +463,9 @@ sem::BuiltinType GetBuiltin(SpvOp opcode) { return sem::BuiltinType::kDpdxCoarse; case SpvOpDPdyCoarse: return sem::BuiltinType::kDpdyCoarse; + case SpvOpBitFieldSExtract: + case SpvOpBitFieldUExtract: + return sem::BuiltinType::kExtractBits; case SpvOpFwidthCoarse: return sem::BuiltinType::kFwidthCoarse; default: diff --git a/src/tint/reader/spirv/function_bit_test.cc b/src/tint/reader/spirv/function_bit_test.cc index 2ac6531d25..524d1dd4a6 100644 --- a/src/tint/reader/spirv/function_bit_test.cc +++ b/src/tint/reader/spirv/function_bit_test.cc @@ -901,9 +901,79 @@ TEST_F(SpvUnaryBitTest, BitReverse_IntVector_IntVector) { << body; } +TEST_F(SpvUnaryBitTest, ExtractBits_Int) { + const auto assembly = BitTestPreamble() + R"( + %1 = OpBitFieldSExtract %v2int %int_30 %uint_10 %uint_20 + OpReturn + OpFunctionEnd + )"; + auto p = parser(test::Assemble(assembly)); + ASSERT_TRUE(p->BuildAndParseInternalModuleExceptFunctions()); + auto fe = p->function_emitter(100); + EXPECT_TRUE(fe.EmitBody()) << p->error(); + auto ast_body = fe.ast_body(); + auto body = test::ToString(p->program(), ast_body); + EXPECT_THAT(body, + HasSubstr("let x_1 : vec2 = extractBits(30, 10u, 20u);")) + << body; +} + +TEST_F(SpvUnaryBitTest, ExtractBits_IntVector) { + const auto assembly = BitTestPreamble() + R"( + %1 = OpBitFieldSExtract %v2int %v2int_30_40 %uint_10 %uint_20 + OpReturn + OpFunctionEnd + )"; + auto p = parser(test::Assemble(assembly)); + ASSERT_TRUE(p->BuildAndParseInternalModuleExceptFunctions()); + auto fe = p->function_emitter(100); + EXPECT_TRUE(fe.EmitBody()) << p->error(); + auto ast_body = fe.ast_body(); + auto body = test::ToString(p->program(), ast_body); + EXPECT_THAT( + body, + HasSubstr( + "let x_1 : vec2 = extractBits(vec2(30, 40), 10u, 20u);")) + << body; +} + +TEST_F(SpvUnaryBitTest, ExtractBits_Uint) { + const auto assembly = BitTestPreamble() + R"( + %1 = OpBitFieldUExtract %v2uint %uint_20 %uint_10 %uint_20 + OpReturn + OpFunctionEnd + )"; + auto p = parser(test::Assemble(assembly)); + ASSERT_TRUE(p->BuildAndParseInternalModuleExceptFunctions()); + auto fe = p->function_emitter(100); + EXPECT_TRUE(fe.EmitBody()) << p->error(); + auto ast_body = fe.ast_body(); + auto body = test::ToString(p->program(), ast_body); + EXPECT_THAT(body, + HasSubstr("let x_1 : vec2 = extractBits(20u, 10u, 20u);")) + << body; +} + +TEST_F(SpvUnaryBitTest, ExtractBits_UintVector) { + const auto assembly = BitTestPreamble() + R"( + %1 = OpBitFieldUExtract %v2uint %v2uint_10_20 %uint_10 %uint_20 + OpReturn + OpFunctionEnd + )"; + auto p = parser(test::Assemble(assembly)); + ASSERT_TRUE(p->BuildAndParseInternalModuleExceptFunctions()); + auto fe = p->function_emitter(100); + EXPECT_TRUE(fe.EmitBody()) << p->error(); + auto ast_body = fe.ast_body(); + auto body = test::ToString(p->program(), ast_body); + EXPECT_THAT( + body, + HasSubstr( + "let x_1 : vec2 = extractBits(vec2(10u, 20u), 10u, 20u);")) + << body; +} + // TODO(dneto): OpBitFieldInsert -// TODO(dneto): OpBitFieldSExtract -// TODO(dneto): OpBitFieldUExtract } // namespace } // namespace spirv diff --git a/src/tint/sem/builtin_type.cc b/src/tint/sem/builtin_type.cc index bd60a8f45f..b3a463ab77 100644 --- a/src/tint/sem/builtin_type.cc +++ b/src/tint/sem/builtin_type.cc @@ -114,6 +114,9 @@ BuiltinType ParseBuiltinType(const std::string& name) { if (name == "exp2") { return BuiltinType::kExp2; } + if (name == "extractBits") { + return BuiltinType::kExtractBits; + } if (name == "faceForward") { return BuiltinType::kFaceForward; } @@ -411,6 +414,8 @@ const char* str(BuiltinType i) { return "exp"; case BuiltinType::kExp2: return "exp2"; + case BuiltinType::kExtractBits: + return "extractBits"; case BuiltinType::kFaceForward: return "faceForward"; case BuiltinType::kFirstLeadingBit: diff --git a/src/tint/sem/builtin_type.h b/src/tint/sem/builtin_type.h index a52bc1d24d..df65da7d05 100644 --- a/src/tint/sem/builtin_type.h +++ b/src/tint/sem/builtin_type.h @@ -62,6 +62,7 @@ enum class BuiltinType { kDpdyFine, kExp, kExp2, + kExtractBits, kFaceForward, kFirstLeadingBit, kFirstTrailingBit, diff --git a/src/tint/transform/builtin_polyfill.cc b/src/tint/transform/builtin_polyfill.cc index 3bc3af1fb0..fb20a20be2 100644 --- a/src/tint/transform/builtin_polyfill.cc +++ b/src/tint/transform/builtin_polyfill.cc @@ -31,10 +31,13 @@ namespace transform { struct BuiltinPolyfill::State { /// Constructor /// @param c the CloneContext - explicit State(CloneContext& c) : ctx(c) {} + /// @param p the builtins to polyfill + State(CloneContext& c, Builtins p) : ctx(c), polyfill(p) {} /// The clone context CloneContext& ctx; + /// The builtins to polyfill + Builtins polyfill; /// The destination program builder ProgramBuilder& b = *ctx.dst; /// The source clone context @@ -170,6 +173,57 @@ struct BuiltinPolyfill::State { return name; } + /// Builds the polyfill function for the `extractBits` builtin + /// @param ty the parameter and return type for the function + /// @return the polyfill function name + Symbol extractBits(const sem::Type* ty) { + auto name = b.Symbols().New("tint_extract_bits"); + uint32_t width = WidthOf(ty); + + constexpr uint32_t W = 32u; // 32-bit + + auto vecN_u32 = + [&](const ast::Expression* value) -> const ast::Expression* { + if (width == 1) { + return value; + } + return b.Construct(b.ty.vec(width), value); + }; + + ast::StatementList body = { + b.Decl(b.Const("s", nullptr, b.Call("min", "offset", W))), + b.Decl(b.Const("e", nullptr, b.Call("min", W, b.Add("s", "count")))), + }; + + switch (polyfill.extract_bits) { + case Level::kFull: + body.emplace_back(b.Decl(b.Const("shl", nullptr, b.Sub(W, "e")))); + body.emplace_back(b.Decl(b.Const("shr", nullptr, b.Add("shl", "s")))); + body.emplace_back(b.Return(b.Shr(b.Shl("v", vecN_u32(b.Expr("shl"))), + vecN_u32(b.Expr("shr"))))); + break; + case Level::kClampParameters: + body.emplace_back( + b.Return(b.Call("extractBits", "v", "s", b.Sub("e", "s")))); + break; + default: + TINT_ICE(Transform, b.Diagnostics()) + << "unhandled polyfill level: " + << static_cast(polyfill.extract_bits); + return {}; + } + + b.Func(name, + { + b.Param("v", T(ty)), + b.Param("offset", b.ty.u32()), + b.Param("count", b.ty.u32()), + }, + T(ty), body); + + return name; + } + /// Builds the polyfill function for the `firstLeadingBit` builtin /// @param ty the parameter and return type for the function /// @return the polyfill function name @@ -361,6 +415,11 @@ bool BuiltinPolyfill::ShouldRun(const Program* program, return true; } break; + case sem::BuiltinType::kExtractBits: + if (builtins.extract_bits != Level::kNone) { + return true; + } + break; case sem::BuiltinType::kFirstLeadingBit: if (builtins.first_leading_bit) { return true; @@ -395,7 +454,7 @@ void BuiltinPolyfill::Run(CloneContext& ctx, ctx.ReplaceAll( [&](const ast::CallExpression* expr) -> const ast::CallExpression* { auto builtins = cfg->builtins; - State s{ctx}; + State s{ctx, builtins}; if (auto* call = s.sem.Get(expr)) { if (auto* builtin = call->Target()->As()) { Symbol polyfill; @@ -414,6 +473,13 @@ void BuiltinPolyfill::Run(CloneContext& ctx, }); } break; + case sem::BuiltinType::kExtractBits: + if (builtins.extract_bits != Level::kNone) { + polyfill = utils::GetOrCreate(polyfills, builtin, [&] { + return s.extractBits(builtin->ReturnType()); + }); + } + break; case sem::BuiltinType::kFirstLeadingBit: if (builtins.first_leading_bit) { polyfill = utils::GetOrCreate(polyfills, builtin, [&] { diff --git a/src/tint/transform/builtin_polyfill.h b/src/tint/transform/builtin_polyfill.h index ab3ee258b3..b25c878f12 100644 --- a/src/tint/transform/builtin_polyfill.h +++ b/src/tint/transform/builtin_polyfill.h @@ -28,12 +28,24 @@ class BuiltinPolyfill : public Castable { /// Destructor ~BuiltinPolyfill() override; + /// Enumerator of polyfill levels + enum class Level { + /// No polyfill needed, supported by the backend. + kNone, + /// Clamp the parameters to the inner implementation. + kClampParameters, + /// Polyfill the entire function + kFull, + }; + /// Specifies the builtins that should be polyfilled by the transform. struct Builtins { /// Should `countLeadingZeros()` be polyfilled? bool count_leading_zeros = false; /// Should `countTrailingZeros()` be polyfilled? bool count_trailing_zeros = false; + /// What level should `extractBits()` be polyfilled? + Level extract_bits = Level::kNone; /// Should `firstLeadingBit()` be polyfilled? bool first_leading_bit = false; /// Should `firstTrailingBit()` be polyfilled? diff --git a/src/tint/transform/builtin_polyfill_test.cc b/src/tint/transform/builtin_polyfill_test.cc index 081c5b87bb..4ac51fdcc7 100644 --- a/src/tint/transform/builtin_polyfill_test.cc +++ b/src/tint/transform/builtin_polyfill_test.cc @@ -22,6 +22,8 @@ namespace tint { namespace transform { namespace { +using Level = BuiltinPolyfill::Level; + using BuiltinPolyfillTest = TransformTest; TEST_F(BuiltinPolyfillTest, ShouldRunEmptyModule) { @@ -348,6 +350,237 @@ fn f() { EXPECT_EQ(expect, str(got)); } +//////////////////////////////////////////////////////////////////////////////// +// extractBits +//////////////////////////////////////////////////////////////////////////////// +DataMap polyfillExtractBits(Level level) { + BuiltinPolyfill::Builtins builtins; + builtins.extract_bits = level; + DataMap data; + data.Add(builtins); + return data; +} + +TEST_F(BuiltinPolyfillTest, ShouldRunExtractBits) { + auto* src = R"( +fn f() { + extractBits(1234, 5u, 6u); +} +)"; + + EXPECT_FALSE(ShouldRun(src)); + EXPECT_FALSE( + ShouldRun(src, polyfillExtractBits(Level::kNone))); + EXPECT_TRUE(ShouldRun( + src, polyfillExtractBits(Level::kClampParameters))); + EXPECT_TRUE( + ShouldRun(src, polyfillExtractBits(Level::kFull))); +} + +TEST_F(BuiltinPolyfillTest, ExtractBits_Full_i32) { + auto* src = R"( +fn f() { + let r : i32 = extractBits(1234, 5u, 6u); +} +)"; + + auto* expect = R"( +fn tint_extract_bits(v : i32, offset : u32, count : u32) -> i32 { + let s = min(offset, 32u); + let e = min(32u, (s + count)); + let shl = (32u - e); + let shr = (shl + s); + return ((v << shl) >> shr); +} + +fn f() { + let r : i32 = tint_extract_bits(1234, 5u, 6u); +} +)"; + + auto got = Run(src, polyfillExtractBits(Level::kFull)); + + EXPECT_EQ(expect, str(got)); +} + +TEST_F(BuiltinPolyfillTest, ExtractBits_Full_u32) { + auto* src = R"( +fn f() { + let r : u32 = extractBits(1234u, 5u, 6u); +} +)"; + + auto* expect = R"( +fn tint_extract_bits(v : u32, offset : u32, count : u32) -> u32 { + let s = min(offset, 32u); + let e = min(32u, (s + count)); + let shl = (32u - e); + let shr = (shl + s); + return ((v << shl) >> shr); +} + +fn f() { + let r : u32 = tint_extract_bits(1234u, 5u, 6u); +} +)"; + + auto got = Run(src, polyfillExtractBits(Level::kFull)); + + EXPECT_EQ(expect, str(got)); +} + +TEST_F(BuiltinPolyfillTest, ExtractBits_Full_vec3_i32) { + auto* src = R"( +fn f() { + let r : vec3 = extractBits(vec3(1234), 5u, 6u); +} +)"; + + auto* expect = R"( +fn tint_extract_bits(v : vec3, offset : u32, count : u32) -> vec3 { + let s = min(offset, 32u); + let e = min(32u, (s + count)); + let shl = (32u - e); + let shr = (shl + s); + return ((v << vec3(shl)) >> vec3(shr)); +} + +fn f() { + let r : vec3 = tint_extract_bits(vec3(1234), 5u, 6u); +} +)"; + + auto got = Run(src, polyfillExtractBits(Level::kFull)); + + EXPECT_EQ(expect, str(got)); +} + +TEST_F(BuiltinPolyfillTest, ExtractBits_Full_vec3_u32) { + auto* src = R"( +fn f() { + let r : vec3 = extractBits(vec3(1234u), 5u, 6u); +} +)"; + + auto* expect = R"( +fn tint_extract_bits(v : vec3, offset : u32, count : u32) -> vec3 { + let s = min(offset, 32u); + let e = min(32u, (s + count)); + let shl = (32u - e); + let shr = (shl + s); + return ((v << vec3(shl)) >> vec3(shr)); +} + +fn f() { + let r : vec3 = tint_extract_bits(vec3(1234u), 5u, 6u); +} +)"; + + auto got = Run(src, polyfillExtractBits(Level::kFull)); + + EXPECT_EQ(expect, str(got)); +} + +TEST_F(BuiltinPolyfillTest, ExtractBits_Clamp_i32) { + auto* src = R"( +fn f() { + let r : i32 = extractBits(1234, 5u, 6u); +} +)"; + + auto* expect = R"( +fn tint_extract_bits(v : i32, offset : u32, count : u32) -> i32 { + let s = min(offset, 32u); + let e = min(32u, (s + count)); + return extractBits(v, s, (e - s)); +} + +fn f() { + let r : i32 = tint_extract_bits(1234, 5u, 6u); +} +)"; + + auto got = + Run(src, polyfillExtractBits(Level::kClampParameters)); + + EXPECT_EQ(expect, str(got)); +} + +TEST_F(BuiltinPolyfillTest, ExtractBits_Clamp_u32) { + auto* src = R"( +fn f() { + let r : u32 = extractBits(1234u, 5u, 6u); +} +)"; + + auto* expect = R"( +fn tint_extract_bits(v : u32, offset : u32, count : u32) -> u32 { + let s = min(offset, 32u); + let e = min(32u, (s + count)); + return extractBits(v, s, (e - s)); +} + +fn f() { + let r : u32 = tint_extract_bits(1234u, 5u, 6u); +} +)"; + + auto got = + Run(src, polyfillExtractBits(Level::kClampParameters)); + + EXPECT_EQ(expect, str(got)); +} + +TEST_F(BuiltinPolyfillTest, ExtractBits_Clamp_vec3_i32) { + auto* src = R"( +fn f() { + let r : vec3 = extractBits(vec3(1234), 5u, 6u); +} +)"; + + auto* expect = R"( +fn tint_extract_bits(v : vec3, offset : u32, count : u32) -> vec3 { + let s = min(offset, 32u); + let e = min(32u, (s + count)); + return extractBits(v, s, (e - s)); +} + +fn f() { + let r : vec3 = tint_extract_bits(vec3(1234), 5u, 6u); +} +)"; + + auto got = + Run(src, polyfillExtractBits(Level::kClampParameters)); + + EXPECT_EQ(expect, str(got)); +} + +TEST_F(BuiltinPolyfillTest, ExtractBits_Clamp_vec3_u32) { + auto* src = R"( +fn f() { + let r : vec3 = extractBits(vec3(1234u), 5u, 6u); +} +)"; + + auto* expect = R"( +fn tint_extract_bits(v : vec3, offset : u32, count : u32) -> vec3 { + let s = min(offset, 32u); + let e = min(32u, (s + count)); + return extractBits(v, s, (e - s)); +} + +fn f() { + let r : vec3 = tint_extract_bits(vec3(1234u), 5u, 6u); +} +)"; + + auto got = + Run(src, polyfillExtractBits(Level::kClampParameters)); + + EXPECT_EQ(expect, str(got)); +} + //////////////////////////////////////////////////////////////////////////////// // firstLeadingBit //////////////////////////////////////////////////////////////////////////////// diff --git a/src/tint/transform/glsl.cc b/src/tint/transform/glsl.cc index e7d79f19d4..fdf0fdf301 100644 --- a/src/tint/transform/glsl.cc +++ b/src/tint/transform/glsl.cc @@ -56,6 +56,7 @@ Output Glsl::Run(const Program* in, const DataMap& inputs) const { BuiltinPolyfill::Builtins polyfills; polyfills.count_leading_zeros = true; polyfills.count_trailing_zeros = true; + polyfills.extract_bits = BuiltinPolyfill::Level::kClampParameters; polyfills.first_leading_bit = true; polyfills.first_trailing_bit = true; data.Add(polyfills); diff --git a/src/tint/writer/glsl/generator_impl.cc b/src/tint/writer/glsl/generator_impl.cc index 664a795ab4..ef3d3da920 100644 --- a/src/tint/writer/glsl/generator_impl.cc +++ b/src/tint/writer/glsl/generator_impl.cc @@ -604,6 +604,9 @@ bool GeneratorImpl::EmitBuiltinCall(std::ostream& out, if (builtin->Type() == sem::BuiltinType::kArrayLength) { return EmitArrayLength(out, expr); } + if (builtin->Type() == sem::BuiltinType::kExtractBits) { + return EmitExtractBits(out, expr); + } if (builtin->IsDataPacking()) { return EmitDataPackingCall(out, expr, builtin); } @@ -813,6 +816,24 @@ bool GeneratorImpl::EmitArrayLength(std::ostream& out, return true; } +bool GeneratorImpl::EmitExtractBits(std::ostream& out, + const ast::CallExpression* expr) { + out << "bitfieldExtract("; + if (!EmitExpression(out, expr->args[0])) { + return false; + } + out << ", int("; + if (!EmitExpression(out, expr->args[1])) { + return false; + } + out << "), int("; + if (!EmitExpression(out, expr->args[2])) { + return false; + } + out << "))"; + return true; +} + bool GeneratorImpl::EmitSelectCall(std::ostream& out, const ast::CallExpression* expr) { auto* expr_false = expr->args[0]; diff --git a/src/tint/writer/glsl/generator_impl.h b/src/tint/writer/glsl/generator_impl.h index 25e416c4e6..f48cdfd5ef 100644 --- a/src/tint/writer/glsl/generator_impl.h +++ b/src/tint/writer/glsl/generator_impl.h @@ -171,6 +171,11 @@ class GeneratorImpl : public TextGenerator { /// @param expr the call expression /// @returns true if the array length expression is emitted bool EmitArrayLength(std::ostream& out, const ast::CallExpression* expr); + /// Handles generating a call to `bitfieldExtract` + /// @param out the output of the expression stream + /// @param expr the call expression + /// @returns true if the expression is emitted + bool EmitExtractBits(std::ostream& out, const ast::CallExpression* expr); /// Handles generating a call to a texture function (`textureSample`, /// `textureSampleGrad`, etc) /// @param out the output of the expression stream diff --git a/src/tint/writer/glsl/generator_impl_builtin_test.cc b/src/tint/writer/glsl/generator_impl_builtin_test.cc index 1a6f789229..88979bfb15 100644 --- a/src/tint/writer/glsl/generator_impl_builtin_test.cc +++ b/src/tint/writer/glsl/generator_impl_builtin_test.cc @@ -583,6 +583,38 @@ void main() { )"); } +TEST_F(GlslGeneratorImplTest_Builtin, ExtractBits) { + auto* v = Var("v", ty.vec3()); + auto* offset = Var("offset", ty.u32()); + auto* count = Var("count", ty.u32()); + auto* call = Call("extractBits", v, offset, count); + WrapInFunction(v, offset, count, call); + + GeneratorImpl& gen = SanitizeAndBuild(); + + ASSERT_TRUE(gen.Generate()) << gen.error(); + EXPECT_EQ(gen.result(), R"(#version 310 es + +uvec3 tint_extract_bits(uvec3 v, uint offset, uint count) { + uint s = min(offset, 32u); + uint e = min(32u, (s + count)); + return bitfieldExtract(v, int(s), int((e - s))); +} + +void test_function() { + uvec3 v = uvec3(0u, 0u, 0u); + uint offset = 0u; + uint count = 0u; + uvec3 tint_symbol = tint_extract_bits(v, offset, count); +} + +layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; +void main() { + test_function(); + return; +} +)"); +} #if 0 TEST_F(GlslGeneratorImplTest_Builtin, Pack4x8Snorm) { auto* call = Call("pack4x8snorm", "p1"); diff --git a/src/tint/writer/hlsl/generator_impl.cc b/src/tint/writer/hlsl/generator_impl.cc index 7fa1efdab7..e2a8341440 100644 --- a/src/tint/writer/hlsl/generator_impl.cc +++ b/src/tint/writer/hlsl/generator_impl.cc @@ -147,6 +147,7 @@ SanitizedResult Sanitize( // and `firstbithigh`. polyfills.count_leading_zeros = true; polyfills.count_trailing_zeros = true; + polyfills.extract_bits = transform::BuiltinPolyfill::Level::kFull; polyfills.first_leading_bit = true; polyfills.first_trailing_bit = true; data.Add(polyfills); diff --git a/src/tint/writer/msl/generator_impl.cc b/src/tint/writer/msl/generator_impl.cc index e56c23fbc8..34006079ab 100644 --- a/src/tint/writer/msl/generator_impl.cc +++ b/src/tint/writer/msl/generator_impl.cc @@ -130,6 +130,8 @@ SanitizedResult Sanitize( { // Builtin polyfills transform::BuiltinPolyfill::Builtins polyfills; + polyfills.extract_bits = + transform::BuiltinPolyfill::Level::kClampParameters; polyfills.first_leading_bit = true; polyfills.first_trailing_bit = true; data.Add(polyfills); @@ -1373,6 +1375,9 @@ std::string GeneratorImpl::generate_builtin_name(const sem::Builtin* builtin) { case sem::BuiltinType::kDpdyFine: out += "dfdy"; break; + case sem::BuiltinType::kExtractBits: + out += "extract_bits"; + break; case sem::BuiltinType::kFwidth: case sem::BuiltinType::kFwidthCoarse: case sem::BuiltinType::kFwidthFine: diff --git a/src/tint/writer/msl/generator_impl_builtin_test.cc b/src/tint/writer/msl/generator_impl_builtin_test.cc index 864c512f0c..f3505d66eb 100644 --- a/src/tint/writer/msl/generator_impl_builtin_test.cc +++ b/src/tint/writer/msl/generator_impl_builtin_test.cc @@ -129,6 +129,8 @@ const ast::CallExpression* GenerateCall(BuiltinType builtin, case BuiltinType::kCountTrailingZeros: case BuiltinType::kReverseBits: return builder->Call(str.str(), "u2"); + case BuiltinType::kExtractBits: + return builder->Call(str.str(), "u2", "u1", "u1"); case BuiltinType::kMax: case BuiltinType::kMin: if (type == ParamType::kF32) { @@ -229,6 +231,7 @@ INSTANTIATE_TEST_SUITE_P( BuiltinData{BuiltinType::kDpdyFine, ParamType::kF32, "dfdy"}, BuiltinData{BuiltinType::kExp, ParamType::kF32, "exp"}, BuiltinData{BuiltinType::kExp2, ParamType::kF32, "exp2"}, + BuiltinData{BuiltinType::kExtractBits, ParamType::kU32, "extract_bits"}, BuiltinData{BuiltinType::kFaceForward, ParamType::kF32, "faceforward"}, BuiltinData{BuiltinType::kFloor, ParamType::kF32, "floor"}, BuiltinData{BuiltinType::kFma, ParamType::kF32, "fma"}, diff --git a/src/tint/writer/spirv/builder.cc b/src/tint/writer/spirv/builder.cc index 29ef10e968..3080b8ac35 100644 --- a/src/tint/writer/spirv/builder.cc +++ b/src/tint/writer/spirv/builder.cc @@ -263,6 +263,8 @@ SanitizedResult Sanitize(const Program* in, transform::BuiltinPolyfill::Builtins polyfills; polyfills.count_leading_zeros = true; polyfills.count_trailing_zeros = true; + polyfills.extract_bits = + transform::BuiltinPolyfill::Level::kClampParameters; polyfills.first_leading_bit = true; polyfills.first_trailing_bit = true; data.Add(polyfills); @@ -2504,6 +2506,11 @@ uint32_t Builder::GenerateBuiltinCall(const sem::Call* call, case BuiltinType::kDpdyFine: op = spv::Op::OpDPdyFine; break; + case BuiltinType::kExtractBits: + op = builtin->Parameters()[0]->Type()->is_unsigned_scalar_or_vector() + ? spv::Op::OpBitFieldUExtract + : spv::Op::OpBitFieldSExtract; + break; case BuiltinType::kFwidth: op = spv::Op::OpFwidth; break; diff --git a/src/tint/writer/spirv/builder_builtin_test.cc b/src/tint/writer/spirv/builder_builtin_test.cc index b8dc6d0e8c..700b714314 100644 --- a/src/tint/writer/spirv/builder_builtin_test.cc +++ b/src/tint/writer/spirv/builder_builtin_test.cc @@ -2554,6 +2554,160 @@ OpReturn Validate(b); } +TEST_F(BuiltinBuilderTest, Call_ExtractBits_i32) { + auto* v = Var("v", ty.i32()); + auto* offset = Var("offset", ty.u32()); + auto* count = Var("count", ty.u32()); + auto* call = Call("extractBits", v, offset, count); + auto* func = WrapInFunction(v, offset, count, call); + + spirv::Builder& b = Build(); + + ASSERT_TRUE(b.GenerateFunction(func)) << b.error(); + + EXPECT_EQ(DumpBuilder(b), R"(OpEntryPoint GLCompute %3 "test_function" +OpExecutionMode %3 LocalSize 1 1 1 +OpName %3 "test_function" +OpName %5 "v" +OpName %9 "offset" +OpName %13 "count" +%2 = OpTypeVoid +%1 = OpTypeFunction %2 +%7 = OpTypeInt 32 1 +%6 = OpTypePointer Function %7 +%8 = OpConstantNull %7 +%11 = OpTypeInt 32 0 +%10 = OpTypePointer Function %11 +%12 = OpConstantNull %11 +%3 = OpFunction %2 None %1 +%4 = OpLabel +%5 = OpVariable %6 Function %8 +%9 = OpVariable %10 Function %12 +%13 = OpVariable %10 Function %12 +%15 = OpLoad %7 %5 +%16 = OpLoad %11 %9 +%17 = OpLoad %11 %13 +%14 = OpBitFieldSExtract %7 %15 %16 %17 +OpReturn +OpFunctionEnd +)"); +} + +TEST_F(BuiltinBuilderTest, Call_ExtractBits_u32) { + auto* v = Var("v", ty.u32()); + auto* offset = Var("offset", ty.u32()); + auto* count = Var("count", ty.u32()); + auto* call = Call("extractBits", v, offset, count); + auto* func = WrapInFunction(v, offset, count, call); + + spirv::Builder& b = Build(); + + ASSERT_TRUE(b.GenerateFunction(func)) << b.error(); + + EXPECT_EQ(DumpBuilder(b), R"(OpEntryPoint GLCompute %3 "test_function" +OpExecutionMode %3 LocalSize 1 1 1 +OpName %3 "test_function" +OpName %5 "v" +OpName %9 "offset" +OpName %10 "count" +%2 = OpTypeVoid +%1 = OpTypeFunction %2 +%7 = OpTypeInt 32 0 +%6 = OpTypePointer Function %7 +%8 = OpConstantNull %7 +%3 = OpFunction %2 None %1 +%4 = OpLabel +%5 = OpVariable %6 Function %8 +%9 = OpVariable %6 Function %8 +%10 = OpVariable %6 Function %8 +%12 = OpLoad %7 %5 +%13 = OpLoad %7 %9 +%14 = OpLoad %7 %10 +%11 = OpBitFieldUExtract %7 %12 %13 %14 +OpReturn +OpFunctionEnd +)"); +} + +TEST_F(BuiltinBuilderTest, Call_ExtractBits_vec3_i32) { + auto* v = Var("v", ty.vec3()); + auto* offset = Var("offset", ty.u32()); + auto* count = Var("count", ty.u32()); + auto* call = Call("extractBits", v, offset, count); + auto* func = WrapInFunction(v, offset, count, call); + + spirv::Builder& b = Build(); + + ASSERT_TRUE(b.GenerateFunction(func)) << b.error(); + + EXPECT_EQ(DumpBuilder(b), R"(OpEntryPoint GLCompute %3 "test_function" +OpExecutionMode %3 LocalSize 1 1 1 +OpName %3 "test_function" +OpName %5 "v" +OpName %10 "offset" +OpName %14 "count" +%2 = OpTypeVoid +%1 = OpTypeFunction %2 +%8 = OpTypeInt 32 1 +%7 = OpTypeVector %8 3 +%6 = OpTypePointer Function %7 +%9 = OpConstantNull %7 +%12 = OpTypeInt 32 0 +%11 = OpTypePointer Function %12 +%13 = OpConstantNull %12 +%3 = OpFunction %2 None %1 +%4 = OpLabel +%5 = OpVariable %6 Function %9 +%10 = OpVariable %11 Function %13 +%14 = OpVariable %11 Function %13 +%16 = OpLoad %7 %5 +%17 = OpLoad %12 %10 +%18 = OpLoad %12 %14 +%15 = OpBitFieldSExtract %7 %16 %17 %18 +OpReturn +OpFunctionEnd +)"); +} + +TEST_F(BuiltinBuilderTest, Call_ExtractBits_vec3_u32) { + auto* v = Var("v", ty.vec3()); + auto* offset = Var("offset", ty.u32()); + auto* count = Var("count", ty.u32()); + auto* call = Call("extractBits", v, offset, count); + auto* func = WrapInFunction(v, offset, count, call); + + spirv::Builder& b = Build(); + + ASSERT_TRUE(b.GenerateFunction(func)) << b.error(); + + EXPECT_EQ(DumpBuilder(b), R"(OpEntryPoint GLCompute %3 "test_function" +OpExecutionMode %3 LocalSize 1 1 1 +OpName %3 "test_function" +OpName %5 "v" +OpName %10 "offset" +OpName %13 "count" +%2 = OpTypeVoid +%1 = OpTypeFunction %2 +%8 = OpTypeInt 32 0 +%7 = OpTypeVector %8 3 +%6 = OpTypePointer Function %7 +%9 = OpConstantNull %7 +%11 = OpTypePointer Function %8 +%12 = OpConstantNull %8 +%3 = OpFunction %2 None %1 +%4 = OpLabel +%5 = OpVariable %6 Function %9 +%10 = OpVariable %11 Function %12 +%13 = OpVariable %11 Function %12 +%15 = OpLoad %7 %5 +%16 = OpLoad %8 %10 +%17 = OpLoad %8 %13 +%14 = OpBitFieldUExtract %7 %15 %16 %17 +OpReturn +OpFunctionEnd +)"); +} + } // namespace } // namespace spirv } // namespace writer diff --git a/test/tint/builtins/extractBits/scalar/i32.spvasm b/test/tint/builtins/extractBits/scalar/i32.spvasm new file mode 100644 index 0000000000..a86f511f09 --- /dev/null +++ b/test/tint/builtins/extractBits/scalar/i32.spvasm @@ -0,0 +1,30 @@ + OpCapability Shader + %15 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint GLCompute %f "f" + OpExecutionMode %f LocalSize 1 1 1 + OpName %f "f" + OpName %v "v" + OpName %offset "offset" + OpName %count "count" + %void = OpTypeVoid + %1 = OpTypeFunction %void + %int = OpTypeInt 32 1 + %_ptr_Function_int = OpTypePointer Function %int + %8 = OpConstantNull %int + %uint = OpTypeInt 32 0 +%_ptr_Function_uint = OpTypePointer Function %uint + %12 = OpConstantNull %uint + %uint_31 = OpConstant %uint 31 + %uint_32 = OpConstant %uint 32 + %f = OpFunction %void None %1 + %4 = OpLabel + %v = OpVariable %_ptr_Function_int Function %8 + %offset = OpVariable %_ptr_Function_uint Function %12 + %count = OpVariable %_ptr_Function_uint Function %12 + %16 = OpLoad %int %v + %17 = OpLoad %uint %offset + %18 = OpLoad %uint %count + %14 = OpBitFieldSExtract %int %16 %17 %18 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/extractBits/scalar/i32.spvasm.expected.glsl b/test/tint/builtins/extractBits/scalar/i32.spvasm.expected.glsl new file mode 100644 index 0000000000..05127a38ee --- /dev/null +++ b/test/tint/builtins/extractBits/scalar/i32.spvasm.expected.glsl @@ -0,0 +1,25 @@ +#version 310 es + +int tint_extract_bits(int v, uint offset, uint count) { + uint s = min(offset, 32u); + uint e = min(32u, (s + count)); + return bitfieldExtract(v, int(s), int((e - s))); +} + +void f_1() { + int v = 0; + uint offset_1 = 0u; + uint count = 0u; + int x_14 = tint_extract_bits(v, offset_1, count); + return; +} + +void f() { + f_1(); +} + +layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; +void main() { + f(); + return; +} diff --git a/test/tint/builtins/extractBits/scalar/i32.spvasm.expected.hlsl b/test/tint/builtins/extractBits/scalar/i32.spvasm.expected.hlsl new file mode 100644 index 0000000000..fa2d12f348 --- /dev/null +++ b/test/tint/builtins/extractBits/scalar/i32.spvasm.expected.hlsl @@ -0,0 +1,21 @@ +int tint_extract_bits(int v, uint offset, uint count) { + const uint s = min(offset, 32u); + const uint e = min(32u, (s + count)); + const uint shl = (32u - e); + const uint shr = (shl + s); + return ((v << shl) >> shr); +} + +void f_1() { + int v = 0; + uint offset_1 = 0u; + uint count = 0u; + const int x_14 = tint_extract_bits(v, offset_1, count); + return; +} + +[numthreads(1, 1, 1)] +void f() { + f_1(); + return; +} diff --git a/test/tint/builtins/extractBits/scalar/i32.spvasm.expected.msl b/test/tint/builtins/extractBits/scalar/i32.spvasm.expected.msl new file mode 100644 index 0000000000..6ef8f96bad --- /dev/null +++ b/test/tint/builtins/extractBits/scalar/i32.spvasm.expected.msl @@ -0,0 +1,25 @@ +#include + +using namespace metal; +int tint_extract_bits(int v, uint offset, uint count) { + uint const s = min(offset, 32u); + uint const e = min(32u, (s + count)); + return extract_bits(v, s, (e - s)); +} + +void f_1() { + int v = 0; + uint offset_1 = 0u; + uint count = 0u; + int const x_16 = v; + uint const x_17 = offset_1; + uint const x_18 = count; + int const x_14 = tint_extract_bits(x_16, x_17, x_18); + return; +} + +kernel void f() { + f_1(); + return; +} + diff --git a/test/tint/builtins/extractBits/scalar/i32.spvasm.expected.spvasm b/test/tint/builtins/extractBits/scalar/i32.spvasm.expected.spvasm new file mode 100644 index 0000000000..9281c0e37e --- /dev/null +++ b/test/tint/builtins/extractBits/scalar/i32.spvasm.expected.spvasm @@ -0,0 +1,62 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 36 +; Schema: 0 + OpCapability Shader + %10 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint GLCompute %f "f" + OpExecutionMode %f LocalSize 1 1 1 + OpName %tint_extract_bits "tint_extract_bits" + OpName %v "v" + OpName %offset "offset" + OpName %count "count" + OpName %f_1 "f_1" + OpName %v_0 "v" + OpName %offset_1 "offset_1" + OpName %count_0 "count" + OpName %f "f" + %int = OpTypeInt 32 1 + %uint = OpTypeInt 32 0 + %1 = OpTypeFunction %int %int %uint %uint + %uint_32 = OpConstant %uint 32 + %void = OpTypeVoid + %16 = OpTypeFunction %void + %int_0 = OpConstant %int 0 +%_ptr_Function_int = OpTypePointer Function %int + %23 = OpConstantNull %int + %uint_0 = OpConstant %uint 0 +%_ptr_Function_uint = OpTypePointer Function %uint + %27 = OpConstantNull %uint +%tint_extract_bits = OpFunction %int None %1 + %v = OpFunctionParameter %int + %offset = OpFunctionParameter %uint + %count = OpFunctionParameter %uint + %8 = OpLabel + %9 = OpExtInst %uint %10 UMin %offset %uint_32 + %13 = OpIAdd %uint %9 %count + %12 = OpExtInst %uint %10 UMin %uint_32 %13 + %15 = OpISub %uint %12 %9 + %14 = OpBitFieldSExtract %int %v %9 %15 + OpReturnValue %14 + OpFunctionEnd + %f_1 = OpFunction %void None %16 + %19 = OpLabel + %v_0 = OpVariable %_ptr_Function_int Function %23 + %offset_1 = OpVariable %_ptr_Function_uint Function %27 + %count_0 = OpVariable %_ptr_Function_uint Function %27 + OpStore %v_0 %int_0 + OpStore %offset_1 %uint_0 + OpStore %count_0 %uint_0 + %29 = OpLoad %int %v_0 + %30 = OpLoad %uint %offset_1 + %31 = OpLoad %uint %count_0 + %32 = OpFunctionCall %int %tint_extract_bits %29 %30 %31 + OpReturn + OpFunctionEnd + %f = OpFunction %void None %16 + %34 = OpLabel + %35 = OpFunctionCall %void %f_1 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/extractBits/scalar/i32.spvasm.expected.wgsl b/test/tint/builtins/extractBits/scalar/i32.spvasm.expected.wgsl new file mode 100644 index 0000000000..eaa60de70d --- /dev/null +++ b/test/tint/builtins/extractBits/scalar/i32.spvasm.expected.wgsl @@ -0,0 +1,15 @@ +fn f_1() { + var v : i32 = 0; + var offset_1 : u32 = 0u; + var count : u32 = 0u; + let x_16 : i32 = v; + let x_17 : u32 = offset_1; + let x_18 : u32 = count; + let x_14 : i32 = extractBits(x_16, x_17, x_18); + return; +} + +@stage(compute) @workgroup_size(1, 1, 1) +fn f() { + f_1(); +} diff --git a/test/tint/builtins/extractBits/scalar/u32.spvasm b/test/tint/builtins/extractBits/scalar/u32.spvasm new file mode 100644 index 0000000000..7ee2f99030 --- /dev/null +++ b/test/tint/builtins/extractBits/scalar/u32.spvasm @@ -0,0 +1,27 @@ + OpCapability Shader + %12 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint GLCompute %f "f" + OpExecutionMode %f LocalSize 1 1 1 + OpName %f "f" + OpName %v "v" + OpName %offset "offset" + OpName %count "count" + %void = OpTypeVoid + %1 = OpTypeFunction %void + %uint = OpTypeInt 32 0 +%_ptr_Function_uint = OpTypePointer Function %uint + %8 = OpConstantNull %uint + %uint_31 = OpConstant %uint 31 + %uint_32 = OpConstant %uint 32 + %f = OpFunction %void None %1 + %4 = OpLabel + %v = OpVariable %_ptr_Function_uint Function %8 + %offset = OpVariable %_ptr_Function_uint Function %8 + %count = OpVariable %_ptr_Function_uint Function %8 + %13 = OpLoad %uint %v + %14 = OpLoad %uint %offset + %15 = OpLoad %uint %count + %11 = OpBitFieldUExtract %uint %13 %14 %15 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/extractBits/scalar/u32.spvasm.expected.glsl b/test/tint/builtins/extractBits/scalar/u32.spvasm.expected.glsl new file mode 100644 index 0000000000..e62cd8f20b --- /dev/null +++ b/test/tint/builtins/extractBits/scalar/u32.spvasm.expected.glsl @@ -0,0 +1,25 @@ +#version 310 es + +uint tint_extract_bits(uint v, uint offset, uint count) { + uint s = min(offset, 32u); + uint e = min(32u, (s + count)); + return bitfieldExtract(v, int(s), int((e - s))); +} + +void f_1() { + uint v = 0u; + uint offset_1 = 0u; + uint count = 0u; + uint x_11 = tint_extract_bits(v, offset_1, count); + return; +} + +void f() { + f_1(); +} + +layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; +void main() { + f(); + return; +} diff --git a/test/tint/builtins/extractBits/scalar/u32.spvasm.expected.hlsl b/test/tint/builtins/extractBits/scalar/u32.spvasm.expected.hlsl new file mode 100644 index 0000000000..310ab2e068 --- /dev/null +++ b/test/tint/builtins/extractBits/scalar/u32.spvasm.expected.hlsl @@ -0,0 +1,21 @@ +uint tint_extract_bits(uint v, uint offset, uint count) { + const uint s = min(offset, 32u); + const uint e = min(32u, (s + count)); + const uint shl = (32u - e); + const uint shr = (shl + s); + return ((v << shl) >> shr); +} + +void f_1() { + uint v = 0u; + uint offset_1 = 0u; + uint count = 0u; + const uint x_11 = tint_extract_bits(v, offset_1, count); + return; +} + +[numthreads(1, 1, 1)] +void f() { + f_1(); + return; +} diff --git a/test/tint/builtins/extractBits/scalar/u32.spvasm.expected.msl b/test/tint/builtins/extractBits/scalar/u32.spvasm.expected.msl new file mode 100644 index 0000000000..d3acb739d5 --- /dev/null +++ b/test/tint/builtins/extractBits/scalar/u32.spvasm.expected.msl @@ -0,0 +1,25 @@ +#include + +using namespace metal; +uint tint_extract_bits(uint v, uint offset, uint count) { + uint const s = min(offset, 32u); + uint const e = min(32u, (s + count)); + return extract_bits(v, s, (e - s)); +} + +void f_1() { + uint v = 0u; + uint offset_1 = 0u; + uint count = 0u; + uint const x_13 = v; + uint const x_14 = offset_1; + uint const x_15 = count; + uint const x_11 = tint_extract_bits(x_13, x_14, x_15); + return; +} + +kernel void f() { + f_1(); + return; +} + diff --git a/test/tint/builtins/extractBits/scalar/u32.spvasm.expected.spvasm b/test/tint/builtins/extractBits/scalar/u32.spvasm.expected.spvasm new file mode 100644 index 0000000000..67c95bdef4 --- /dev/null +++ b/test/tint/builtins/extractBits/scalar/u32.spvasm.expected.spvasm @@ -0,0 +1,58 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 32 +; Schema: 0 + OpCapability Shader + %9 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint GLCompute %f "f" + OpExecutionMode %f LocalSize 1 1 1 + OpName %tint_extract_bits "tint_extract_bits" + OpName %v "v" + OpName %offset "offset" + OpName %count "count" + OpName %f_1 "f_1" + OpName %v_0 "v" + OpName %offset_1 "offset_1" + OpName %count_0 "count" + OpName %f "f" + %uint = OpTypeInt 32 0 + %1 = OpTypeFunction %uint %uint %uint %uint + %uint_32 = OpConstant %uint 32 + %void = OpTypeVoid + %15 = OpTypeFunction %void + %uint_0 = OpConstant %uint 0 +%_ptr_Function_uint = OpTypePointer Function %uint + %22 = OpConstantNull %uint +%tint_extract_bits = OpFunction %uint None %1 + %v = OpFunctionParameter %uint + %offset = OpFunctionParameter %uint + %count = OpFunctionParameter %uint + %7 = OpLabel + %8 = OpExtInst %uint %9 UMin %offset %uint_32 + %12 = OpIAdd %uint %8 %count + %11 = OpExtInst %uint %9 UMin %uint_32 %12 + %14 = OpISub %uint %11 %8 + %13 = OpBitFieldUExtract %uint %v %8 %14 + OpReturnValue %13 + OpFunctionEnd + %f_1 = OpFunction %void None %15 + %18 = OpLabel + %v_0 = OpVariable %_ptr_Function_uint Function %22 + %offset_1 = OpVariable %_ptr_Function_uint Function %22 + %count_0 = OpVariable %_ptr_Function_uint Function %22 + OpStore %v_0 %uint_0 + OpStore %offset_1 %uint_0 + OpStore %count_0 %uint_0 + %25 = OpLoad %uint %v_0 + %26 = OpLoad %uint %offset_1 + %27 = OpLoad %uint %count_0 + %28 = OpFunctionCall %uint %tint_extract_bits %25 %26 %27 + OpReturn + OpFunctionEnd + %f = OpFunction %void None %15 + %30 = OpLabel + %31 = OpFunctionCall %void %f_1 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/extractBits/scalar/u32.spvasm.expected.wgsl b/test/tint/builtins/extractBits/scalar/u32.spvasm.expected.wgsl new file mode 100644 index 0000000000..5947ee1c83 --- /dev/null +++ b/test/tint/builtins/extractBits/scalar/u32.spvasm.expected.wgsl @@ -0,0 +1,15 @@ +fn f_1() { + var v : u32 = 0u; + var offset_1 : u32 = 0u; + var count : u32 = 0u; + let x_13 : u32 = v; + let x_14 : u32 = offset_1; + let x_15 : u32 = count; + let x_11 : u32 = extractBits(x_13, x_14, x_15); + return; +} + +@stage(compute) @workgroup_size(1, 1, 1) +fn f() { + f_1(); +} diff --git a/test/tint/builtins/extractBits/vec3/i32.spvasm b/test/tint/builtins/extractBits/vec3/i32.spvasm new file mode 100644 index 0000000000..3534ecbfd7 --- /dev/null +++ b/test/tint/builtins/extractBits/vec3/i32.spvasm @@ -0,0 +1,31 @@ + OpCapability Shader + %16 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint GLCompute %f "f" + OpExecutionMode %f LocalSize 1 1 1 + OpName %f "f" + OpName %v "v" + OpName %offset "offset" + OpName %count "count" + %void = OpTypeVoid + %1 = OpTypeFunction %void + %int = OpTypeInt 32 1 + %v3int = OpTypeVector %int 3 +%_ptr_Function_v3int = OpTypePointer Function %v3int + %9 = OpConstantNull %v3int + %uint = OpTypeInt 32 0 + %_ptr_Function_uint = OpTypePointer Function %uint + %13 = OpConstantNull %uint + %uint_31 = OpConstant %uint 31 + %uint_32 = OpConstant %uint 32 + %f = OpFunction %void None %1 + %4 = OpLabel + %v = OpVariable %_ptr_Function_v3int Function %9 + %offset = OpVariable %_ptr_Function_uint Function %13 + %count = OpVariable %_ptr_Function_uint Function %13 + %17 = OpLoad %v3int %v + %18 = OpLoad %uint %offset + %19 = OpLoad %uint %count + %15 = OpBitFieldSExtract %v3int %17 %18 %19 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/extractBits/vec3/i32.spvasm.expected.glsl b/test/tint/builtins/extractBits/vec3/i32.spvasm.expected.glsl new file mode 100644 index 0000000000..e0f5e2bad7 --- /dev/null +++ b/test/tint/builtins/extractBits/vec3/i32.spvasm.expected.glsl @@ -0,0 +1,25 @@ +#version 310 es + +ivec3 tint_extract_bits(ivec3 v, uint offset, uint count) { + uint s = min(offset, 32u); + uint e = min(32u, (s + count)); + return bitfieldExtract(v, int(s), int((e - s))); +} + +void f_1() { + ivec3 v = ivec3(0, 0, 0); + uint offset_1 = 0u; + uint count = 0u; + ivec3 x_15 = tint_extract_bits(v, offset_1, count); + return; +} + +void f() { + f_1(); +} + +layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; +void main() { + f(); + return; +} diff --git a/test/tint/builtins/extractBits/vec3/i32.spvasm.expected.hlsl b/test/tint/builtins/extractBits/vec3/i32.spvasm.expected.hlsl new file mode 100644 index 0000000000..ba7c0ad9b6 --- /dev/null +++ b/test/tint/builtins/extractBits/vec3/i32.spvasm.expected.hlsl @@ -0,0 +1,21 @@ +int3 tint_extract_bits(int3 v, uint offset, uint count) { + const uint s = min(offset, 32u); + const uint e = min(32u, (s + count)); + const uint shl = (32u - e); + const uint shr = (shl + s); + return ((v << uint3((shl).xxx)) >> uint3((shr).xxx)); +} + +void f_1() { + int3 v = int3(0, 0, 0); + uint offset_1 = 0u; + uint count = 0u; + const int3 x_15 = tint_extract_bits(v, offset_1, count); + return; +} + +[numthreads(1, 1, 1)] +void f() { + f_1(); + return; +} diff --git a/test/tint/builtins/extractBits/vec3/i32.spvasm.expected.msl b/test/tint/builtins/extractBits/vec3/i32.spvasm.expected.msl new file mode 100644 index 0000000000..38e5225470 --- /dev/null +++ b/test/tint/builtins/extractBits/vec3/i32.spvasm.expected.msl @@ -0,0 +1,25 @@ +#include + +using namespace metal; +int3 tint_extract_bits(int3 v, uint offset, uint count) { + uint const s = min(offset, 32u); + uint const e = min(32u, (s + count)); + return extract_bits(v, s, (e - s)); +} + +void f_1() { + int3 v = int3(); + uint offset_1 = 0u; + uint count = 0u; + int3 const x_17 = v; + uint const x_18 = offset_1; + uint const x_19 = count; + int3 const x_15 = tint_extract_bits(x_17, x_18, x_19); + return; +} + +kernel void f() { + f_1(); + return; +} + diff --git a/test/tint/builtins/extractBits/vec3/i32.spvasm.expected.spvasm b/test/tint/builtins/extractBits/vec3/i32.spvasm.expected.spvasm new file mode 100644 index 0000000000..2ef08d08bf --- /dev/null +++ b/test/tint/builtins/extractBits/vec3/i32.spvasm.expected.spvasm @@ -0,0 +1,62 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 36 +; Schema: 0 + OpCapability Shader + %11 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint GLCompute %f "f" + OpExecutionMode %f LocalSize 1 1 1 + OpName %tint_extract_bits "tint_extract_bits" + OpName %v "v" + OpName %offset "offset" + OpName %count "count" + OpName %f_1 "f_1" + OpName %v_0 "v" + OpName %offset_1 "offset_1" + OpName %count_0 "count" + OpName %f "f" + %int = OpTypeInt 32 1 + %v3int = OpTypeVector %int 3 + %uint = OpTypeInt 32 0 + %1 = OpTypeFunction %v3int %v3int %uint %uint + %uint_32 = OpConstant %uint 32 + %void = OpTypeVoid + %17 = OpTypeFunction %void + %21 = OpConstantNull %v3int +%_ptr_Function_v3int = OpTypePointer Function %v3int + %uint_0 = OpConstant %uint 0 +%_ptr_Function_uint = OpTypePointer Function %uint + %27 = OpConstantNull %uint +%tint_extract_bits = OpFunction %v3int None %1 + %v = OpFunctionParameter %v3int + %offset = OpFunctionParameter %uint + %count = OpFunctionParameter %uint + %9 = OpLabel + %10 = OpExtInst %uint %11 UMin %offset %uint_32 + %14 = OpIAdd %uint %10 %count + %13 = OpExtInst %uint %11 UMin %uint_32 %14 + %16 = OpISub %uint %13 %10 + %15 = OpBitFieldSExtract %v3int %v %10 %16 + OpReturnValue %15 + OpFunctionEnd + %f_1 = OpFunction %void None %17 + %20 = OpLabel + %v_0 = OpVariable %_ptr_Function_v3int Function %21 + %offset_1 = OpVariable %_ptr_Function_uint Function %27 + %count_0 = OpVariable %_ptr_Function_uint Function %27 + OpStore %v_0 %21 + OpStore %offset_1 %uint_0 + OpStore %count_0 %uint_0 + %29 = OpLoad %v3int %v_0 + %30 = OpLoad %uint %offset_1 + %31 = OpLoad %uint %count_0 + %32 = OpFunctionCall %v3int %tint_extract_bits %29 %30 %31 + OpReturn + OpFunctionEnd + %f = OpFunction %void None %17 + %34 = OpLabel + %35 = OpFunctionCall %void %f_1 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/extractBits/vec3/i32.spvasm.expected.wgsl b/test/tint/builtins/extractBits/vec3/i32.spvasm.expected.wgsl new file mode 100644 index 0000000000..68aed69139 --- /dev/null +++ b/test/tint/builtins/extractBits/vec3/i32.spvasm.expected.wgsl @@ -0,0 +1,15 @@ +fn f_1() { + var v : vec3 = vec3(); + var offset_1 : u32 = 0u; + var count : u32 = 0u; + let x_17 : vec3 = v; + let x_18 : u32 = offset_1; + let x_19 : u32 = count; + let x_15 : vec3 = extractBits(x_17, x_18, x_19); + return; +} + +@stage(compute) @workgroup_size(1, 1, 1) +fn f() { + f_1(); +} diff --git a/test/tint/builtins/extractBits/vec3/u32.spvasm b/test/tint/builtins/extractBits/vec3/u32.spvasm new file mode 100644 index 0000000000..ce50271309 --- /dev/null +++ b/test/tint/builtins/extractBits/vec3/u32.spvasm @@ -0,0 +1,28 @@ + OpCapability Shader + %15 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint GLCompute %f "f" + OpExecutionMode %f LocalSize 1 1 1 + OpName %f "f" + OpName %v "v" + OpName %offset "offset" + OpName %count "count" + %void = OpTypeVoid + %1 = OpTypeFunction %void + %uint = OpTypeInt 32 0 + %v3uint = OpTypeVector %uint 3 +%_ptr_Function_v3uint = OpTypePointer Function %v3uint + %9 = OpConstantNull %v3uint + %_ptr_Function_uint = OpTypePointer Function %uint + %12 = OpConstantNull %uint + %f = OpFunction %void None %1 + %4 = OpLabel + %v = OpVariable %_ptr_Function_v3uint Function %9 + %offset = OpVariable %_ptr_Function_uint Function %12 + %count = OpVariable %_ptr_Function_uint Function %12 + %16 = OpLoad %v3uint %v + %17 = OpLoad %uint %offset + %18 = OpLoad %uint %count + %14 = OpBitFieldUExtract %v3uint %16 %17 %18 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/extractBits/vec3/u32.spvasm.expected.glsl b/test/tint/builtins/extractBits/vec3/u32.spvasm.expected.glsl new file mode 100644 index 0000000000..457d137642 --- /dev/null +++ b/test/tint/builtins/extractBits/vec3/u32.spvasm.expected.glsl @@ -0,0 +1,25 @@ +#version 310 es + +uvec3 tint_extract_bits(uvec3 v, uint offset, uint count) { + uint s = min(offset, 32u); + uint e = min(32u, (s + count)); + return bitfieldExtract(v, int(s), int((e - s))); +} + +void f_1() { + uvec3 v = uvec3(0u, 0u, 0u); + uint offset_1 = 0u; + uint count = 0u; + uvec3 x_14 = tint_extract_bits(v, offset_1, count); + return; +} + +void f() { + f_1(); +} + +layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; +void main() { + f(); + return; +} diff --git a/test/tint/builtins/extractBits/vec3/u32.spvasm.expected.hlsl b/test/tint/builtins/extractBits/vec3/u32.spvasm.expected.hlsl new file mode 100644 index 0000000000..ed7936a708 --- /dev/null +++ b/test/tint/builtins/extractBits/vec3/u32.spvasm.expected.hlsl @@ -0,0 +1,21 @@ +uint3 tint_extract_bits(uint3 v, uint offset, uint count) { + const uint s = min(offset, 32u); + const uint e = min(32u, (s + count)); + const uint shl = (32u - e); + const uint shr = (shl + s); + return ((v << uint3((shl).xxx)) >> uint3((shr).xxx)); +} + +void f_1() { + uint3 v = uint3(0u, 0u, 0u); + uint offset_1 = 0u; + uint count = 0u; + const uint3 x_14 = tint_extract_bits(v, offset_1, count); + return; +} + +[numthreads(1, 1, 1)] +void f() { + f_1(); + return; +} diff --git a/test/tint/builtins/extractBits/vec3/u32.spvasm.expected.msl b/test/tint/builtins/extractBits/vec3/u32.spvasm.expected.msl new file mode 100644 index 0000000000..77b64509a1 --- /dev/null +++ b/test/tint/builtins/extractBits/vec3/u32.spvasm.expected.msl @@ -0,0 +1,25 @@ +#include + +using namespace metal; +uint3 tint_extract_bits(uint3 v, uint offset, uint count) { + uint const s = min(offset, 32u); + uint const e = min(32u, (s + count)); + return extract_bits(v, s, (e - s)); +} + +void f_1() { + uint3 v = uint3(); + uint offset_1 = 0u; + uint count = 0u; + uint3 const x_16 = v; + uint const x_17 = offset_1; + uint const x_18 = count; + uint3 const x_14 = tint_extract_bits(x_16, x_17, x_18); + return; +} + +kernel void f() { + f_1(); + return; +} + diff --git a/test/tint/builtins/extractBits/vec3/u32.spvasm.expected.spvasm b/test/tint/builtins/extractBits/vec3/u32.spvasm.expected.spvasm new file mode 100644 index 0000000000..d5800cc7be --- /dev/null +++ b/test/tint/builtins/extractBits/vec3/u32.spvasm.expected.spvasm @@ -0,0 +1,61 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 35 +; Schema: 0 + OpCapability Shader + %10 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint GLCompute %f "f" + OpExecutionMode %f LocalSize 1 1 1 + OpName %tint_extract_bits "tint_extract_bits" + OpName %v "v" + OpName %offset "offset" + OpName %count "count" + OpName %f_1 "f_1" + OpName %v_0 "v" + OpName %offset_1 "offset_1" + OpName %count_0 "count" + OpName %f "f" + %uint = OpTypeInt 32 0 + %v3uint = OpTypeVector %uint 3 + %1 = OpTypeFunction %v3uint %v3uint %uint %uint + %uint_32 = OpConstant %uint 32 + %void = OpTypeVoid + %16 = OpTypeFunction %void + %20 = OpConstantNull %v3uint +%_ptr_Function_v3uint = OpTypePointer Function %v3uint + %uint_0 = OpConstant %uint 0 +%_ptr_Function_uint = OpTypePointer Function %uint + %26 = OpConstantNull %uint +%tint_extract_bits = OpFunction %v3uint None %1 + %v = OpFunctionParameter %v3uint + %offset = OpFunctionParameter %uint + %count = OpFunctionParameter %uint + %8 = OpLabel + %9 = OpExtInst %uint %10 UMin %offset %uint_32 + %13 = OpIAdd %uint %9 %count + %12 = OpExtInst %uint %10 UMin %uint_32 %13 + %15 = OpISub %uint %12 %9 + %14 = OpBitFieldUExtract %v3uint %v %9 %15 + OpReturnValue %14 + OpFunctionEnd + %f_1 = OpFunction %void None %16 + %19 = OpLabel + %v_0 = OpVariable %_ptr_Function_v3uint Function %20 + %offset_1 = OpVariable %_ptr_Function_uint Function %26 + %count_0 = OpVariable %_ptr_Function_uint Function %26 + OpStore %v_0 %20 + OpStore %offset_1 %uint_0 + OpStore %count_0 %uint_0 + %28 = OpLoad %v3uint %v_0 + %29 = OpLoad %uint %offset_1 + %30 = OpLoad %uint %count_0 + %31 = OpFunctionCall %v3uint %tint_extract_bits %28 %29 %30 + OpReturn + OpFunctionEnd + %f = OpFunction %void None %16 + %33 = OpLabel + %34 = OpFunctionCall %void %f_1 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/extractBits/vec3/u32.spvasm.expected.wgsl b/test/tint/builtins/extractBits/vec3/u32.spvasm.expected.wgsl new file mode 100644 index 0000000000..207dc1cdb8 --- /dev/null +++ b/test/tint/builtins/extractBits/vec3/u32.spvasm.expected.wgsl @@ -0,0 +1,15 @@ +fn f_1() { + var v : vec3 = vec3(); + var offset_1 : u32 = 0u; + var count : u32 = 0u; + let x_16 : vec3 = v; + let x_17 : u32 = offset_1; + let x_18 : u32 = count; + let x_14 : vec3 = extractBits(x_16, x_17, x_18); + return; +} + +@stage(compute) @workgroup_size(1, 1, 1) +fn f() { + f_1(); +} diff --git a/test/tint/builtins/gen/extractBits/12b197.wgsl b/test/tint/builtins/gen/extractBits/12b197.wgsl new file mode 100644 index 0000000000..d431f5631d --- /dev/null +++ b/test/tint/builtins/gen/extractBits/12b197.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 extractBits(vec<3, u32>, u32, u32) -> vec<3, u32> +fn extractBits_12b197() { + var res: vec3 = extractBits(vec3(), 1u, 1u); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + extractBits_12b197(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + extractBits_12b197(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + extractBits_12b197(); +} diff --git a/test/tint/builtins/gen/extractBits/12b197.wgsl.expected.glsl b/test/tint/builtins/gen/extractBits/12b197.wgsl.expected.glsl new file mode 100644 index 0000000000..226ce964ba --- /dev/null +++ b/test/tint/builtins/gen/extractBits/12b197.wgsl.expected.glsl @@ -0,0 +1,66 @@ +#version 310 es + +uvec3 tint_extract_bits(uvec3 v, uint offset, uint count) { + uint s = min(offset, 32u); + uint e = min(32u, (s + count)); + return bitfieldExtract(v, int(s), int((e - s))); +} + +void extractBits_12b197() { + uvec3 res = tint_extract_bits(uvec3(0u, 0u, 0u), 1u, 1u); +} + +vec4 vertex_main() { + extractBits_12b197(); + 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_extract_bits(uvec3 v, uint offset, uint count) { + uint s = min(offset, 32u); + uint e = min(32u, (s + count)); + return bitfieldExtract(v, int(s), int((e - s))); +} + +void extractBits_12b197() { + uvec3 res = tint_extract_bits(uvec3(0u, 0u, 0u), 1u, 1u); +} + +void fragment_main() { + extractBits_12b197(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +uvec3 tint_extract_bits(uvec3 v, uint offset, uint count) { + uint s = min(offset, 32u); + uint e = min(32u, (s + count)); + return bitfieldExtract(v, int(s), int((e - s))); +} + +void extractBits_12b197() { + uvec3 res = tint_extract_bits(uvec3(0u, 0u, 0u), 1u, 1u); +} + +void compute_main() { + extractBits_12b197(); +} + +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/extractBits/12b197.wgsl.expected.hlsl b/test/tint/builtins/gen/extractBits/12b197.wgsl.expected.hlsl new file mode 100644 index 0000000000..68c7d9e9a2 --- /dev/null +++ b/test/tint/builtins/gen/extractBits/12b197.wgsl.expected.hlsl @@ -0,0 +1,38 @@ +uint3 tint_extract_bits(uint3 v, uint offset, uint count) { + const uint s = min(offset, 32u); + const uint e = min(32u, (s + count)); + const uint shl = (32u - e); + const uint shr = (shl + s); + return ((v << uint3((shl).xxx)) >> uint3((shr).xxx)); +} + +void extractBits_12b197() { + uint3 res = tint_extract_bits(uint3(0u, 0u, 0u), 1u, 1u); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + extractBits_12b197(); + 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() { + extractBits_12b197(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + extractBits_12b197(); + return; +} diff --git a/test/tint/builtins/gen/extractBits/12b197.wgsl.expected.msl b/test/tint/builtins/gen/extractBits/12b197.wgsl.expected.msl new file mode 100644 index 0000000000..ad92fcff9b --- /dev/null +++ b/test/tint/builtins/gen/extractBits/12b197.wgsl.expected.msl @@ -0,0 +1,39 @@ +#include + +using namespace metal; +uint3 tint_extract_bits(uint3 v, uint offset, uint count) { + uint const s = min(offset, 32u); + uint const e = min(32u, (s + count)); + return extract_bits(v, s, (e - s)); +} + +void extractBits_12b197() { + uint3 res = tint_extract_bits(uint3(), 1u, 1u); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + extractBits_12b197(); + 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() { + extractBits_12b197(); + return; +} + +kernel void compute_main() { + extractBits_12b197(); + return; +} + diff --git a/test/tint/builtins/gen/extractBits/12b197.wgsl.expected.spvasm b/test/tint/builtins/gen/extractBits/12b197.wgsl.expected.spvasm new file mode 100644 index 0000000000..123c5e5c6e --- /dev/null +++ b/test/tint/builtins/gen/extractBits/12b197.wgsl.expected.spvasm @@ -0,0 +1,87 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 47 +; Schema: 0 + OpCapability Shader + %18 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size + OpEntryPoint Fragment %fragment_main "fragment_main" + OpEntryPoint GLCompute %compute_main "compute_main" + OpExecutionMode %fragment_main OriginUpperLeft + OpExecutionMode %compute_main LocalSize 1 1 1 + OpName %value "value" + OpName %vertex_point_size "vertex_point_size" + OpName %tint_extract_bits "tint_extract_bits" + OpName %v "v" + OpName %offset "offset" + OpName %count "count" + OpName %extractBits_12b197 "extractBits_12b197" + 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 %uint %uint + %uint_32 = OpConstant %uint 32 + %void = OpTypeVoid + %24 = OpTypeFunction %void + %29 = OpConstantNull %v3uint + %uint_1 = OpConstant %uint 1 +%_ptr_Function_v3uint = OpTypePointer Function %v3uint + %33 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%tint_extract_bits = OpFunction %v3uint None %9 + %v = OpFunctionParameter %v3uint + %offset = OpFunctionParameter %uint + %count = OpFunctionParameter %uint + %16 = OpLabel + %17 = OpExtInst %uint %18 UMin %offset %uint_32 + %21 = OpIAdd %uint %17 %count + %20 = OpExtInst %uint %18 UMin %uint_32 %21 + %23 = OpISub %uint %20 %17 + %22 = OpBitFieldUExtract %v3uint %v %17 %23 + OpReturnValue %22 + OpFunctionEnd +%extractBits_12b197 = OpFunction %void None %24 + %27 = OpLabel + %res = OpVariable %_ptr_Function_v3uint Function %29 + %28 = OpFunctionCall %v3uint %tint_extract_bits %29 %uint_1 %uint_1 + OpStore %res %28 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %33 + %35 = OpLabel + %36 = OpFunctionCall %void %extractBits_12b197 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %24 + %38 = OpLabel + %39 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %39 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %24 + %42 = OpLabel + %43 = OpFunctionCall %void %extractBits_12b197 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %24 + %45 = OpLabel + %46 = OpFunctionCall %void %extractBits_12b197 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/extractBits/12b197.wgsl.expected.wgsl b/test/tint/builtins/gen/extractBits/12b197.wgsl.expected.wgsl new file mode 100644 index 0000000000..26d197692e --- /dev/null +++ b/test/tint/builtins/gen/extractBits/12b197.wgsl.expected.wgsl @@ -0,0 +1,19 @@ +fn extractBits_12b197() { + var res : vec3 = extractBits(vec3(), 1u, 1u); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + extractBits_12b197(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + extractBits_12b197(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + extractBits_12b197(); +} diff --git a/test/tint/builtins/gen/extractBits/249874.wgsl b/test/tint/builtins/gen/extractBits/249874.wgsl new file mode 100644 index 0000000000..214ef6050e --- /dev/null +++ b/test/tint/builtins/gen/extractBits/249874.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 extractBits(i32, u32, u32) -> i32 +fn extractBits_249874() { + var res: i32 = extractBits(1, 1u, 1u); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + extractBits_249874(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + extractBits_249874(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + extractBits_249874(); +} diff --git a/test/tint/builtins/gen/extractBits/249874.wgsl.expected.glsl b/test/tint/builtins/gen/extractBits/249874.wgsl.expected.glsl new file mode 100644 index 0000000000..e449417821 --- /dev/null +++ b/test/tint/builtins/gen/extractBits/249874.wgsl.expected.glsl @@ -0,0 +1,66 @@ +#version 310 es + +int tint_extract_bits(int v, uint offset, uint count) { + uint s = min(offset, 32u); + uint e = min(32u, (s + count)); + return bitfieldExtract(v, int(s), int((e - s))); +} + +void extractBits_249874() { + int res = tint_extract_bits(1, 1u, 1u); +} + +vec4 vertex_main() { + extractBits_249874(); + 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_extract_bits(int v, uint offset, uint count) { + uint s = min(offset, 32u); + uint e = min(32u, (s + count)); + return bitfieldExtract(v, int(s), int((e - s))); +} + +void extractBits_249874() { + int res = tint_extract_bits(1, 1u, 1u); +} + +void fragment_main() { + extractBits_249874(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +int tint_extract_bits(int v, uint offset, uint count) { + uint s = min(offset, 32u); + uint e = min(32u, (s + count)); + return bitfieldExtract(v, int(s), int((e - s))); +} + +void extractBits_249874() { + int res = tint_extract_bits(1, 1u, 1u); +} + +void compute_main() { + extractBits_249874(); +} + +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/extractBits/249874.wgsl.expected.hlsl b/test/tint/builtins/gen/extractBits/249874.wgsl.expected.hlsl new file mode 100644 index 0000000000..c43da1df03 --- /dev/null +++ b/test/tint/builtins/gen/extractBits/249874.wgsl.expected.hlsl @@ -0,0 +1,38 @@ +int tint_extract_bits(int v, uint offset, uint count) { + const uint s = min(offset, 32u); + const uint e = min(32u, (s + count)); + const uint shl = (32u - e); + const uint shr = (shl + s); + return ((v << shl) >> shr); +} + +void extractBits_249874() { + int res = tint_extract_bits(1, 1u, 1u); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + extractBits_249874(); + 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() { + extractBits_249874(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + extractBits_249874(); + return; +} diff --git a/test/tint/builtins/gen/extractBits/249874.wgsl.expected.msl b/test/tint/builtins/gen/extractBits/249874.wgsl.expected.msl new file mode 100644 index 0000000000..b9fff8e5f7 --- /dev/null +++ b/test/tint/builtins/gen/extractBits/249874.wgsl.expected.msl @@ -0,0 +1,39 @@ +#include + +using namespace metal; +int tint_extract_bits(int v, uint offset, uint count) { + uint const s = min(offset, 32u); + uint const e = min(32u, (s + count)); + return extract_bits(v, s, (e - s)); +} + +void extractBits_249874() { + int res = tint_extract_bits(1, 1u, 1u); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + extractBits_249874(); + 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() { + extractBits_249874(); + return; +} + +kernel void compute_main() { + extractBits_249874(); + return; +} + diff --git a/test/tint/builtins/gen/extractBits/249874.wgsl.expected.spvasm b/test/tint/builtins/gen/extractBits/249874.wgsl.expected.spvasm new file mode 100644 index 0000000000..6758f24f40 --- /dev/null +++ b/test/tint/builtins/gen/extractBits/249874.wgsl.expected.spvasm @@ -0,0 +1,88 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 48 +; Schema: 0 + OpCapability Shader + %18 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size + OpEntryPoint Fragment %fragment_main "fragment_main" + OpEntryPoint GLCompute %compute_main "compute_main" + OpExecutionMode %fragment_main OriginUpperLeft + OpExecutionMode %compute_main LocalSize 1 1 1 + OpName %value "value" + OpName %vertex_point_size "vertex_point_size" + OpName %tint_extract_bits "tint_extract_bits" + OpName %v "v" + OpName %offset "offset" + OpName %count "count" + OpName %extractBits_249874 "extractBits_249874" + 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 + %uint = OpTypeInt 32 0 + %9 = OpTypeFunction %int %int %uint %uint + %uint_32 = OpConstant %uint 32 + %void = OpTypeVoid + %24 = OpTypeFunction %void + %int_1 = OpConstant %int 1 + %uint_1 = OpConstant %uint 1 +%_ptr_Function_int = OpTypePointer Function %int + %33 = OpConstantNull %int + %34 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%tint_extract_bits = OpFunction %int None %9 + %v = OpFunctionParameter %int + %offset = OpFunctionParameter %uint + %count = OpFunctionParameter %uint + %16 = OpLabel + %17 = OpExtInst %uint %18 UMin %offset %uint_32 + %21 = OpIAdd %uint %17 %count + %20 = OpExtInst %uint %18 UMin %uint_32 %21 + %23 = OpISub %uint %20 %17 + %22 = OpBitFieldSExtract %int %v %17 %23 + OpReturnValue %22 + OpFunctionEnd +%extractBits_249874 = OpFunction %void None %24 + %27 = OpLabel + %res = OpVariable %_ptr_Function_int Function %33 + %28 = OpFunctionCall %int %tint_extract_bits %int_1 %uint_1 %uint_1 + OpStore %res %28 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %34 + %36 = OpLabel + %37 = OpFunctionCall %void %extractBits_249874 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %24 + %39 = OpLabel + %40 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %40 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %24 + %43 = OpLabel + %44 = OpFunctionCall %void %extractBits_249874 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %24 + %46 = OpLabel + %47 = OpFunctionCall %void %extractBits_249874 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/extractBits/249874.wgsl.expected.wgsl b/test/tint/builtins/gen/extractBits/249874.wgsl.expected.wgsl new file mode 100644 index 0000000000..6c805149b3 --- /dev/null +++ b/test/tint/builtins/gen/extractBits/249874.wgsl.expected.wgsl @@ -0,0 +1,19 @@ +fn extractBits_249874() { + var res : i32 = extractBits(1, 1u, 1u); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + extractBits_249874(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + extractBits_249874(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + extractBits_249874(); +} diff --git a/test/tint/builtins/gen/extractBits/631377.wgsl b/test/tint/builtins/gen/extractBits/631377.wgsl new file mode 100644 index 0000000000..d750cd4dae --- /dev/null +++ b/test/tint/builtins/gen/extractBits/631377.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 extractBits(vec<4, u32>, u32, u32) -> vec<4, u32> +fn extractBits_631377() { + var res: vec4 = extractBits(vec4(), 1u, 1u); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + extractBits_631377(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + extractBits_631377(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + extractBits_631377(); +} diff --git a/test/tint/builtins/gen/extractBits/631377.wgsl.expected.glsl b/test/tint/builtins/gen/extractBits/631377.wgsl.expected.glsl new file mode 100644 index 0000000000..b3800b17ce --- /dev/null +++ b/test/tint/builtins/gen/extractBits/631377.wgsl.expected.glsl @@ -0,0 +1,66 @@ +#version 310 es + +uvec4 tint_extract_bits(uvec4 v, uint offset, uint count) { + uint s = min(offset, 32u); + uint e = min(32u, (s + count)); + return bitfieldExtract(v, int(s), int((e - s))); +} + +void extractBits_631377() { + uvec4 res = tint_extract_bits(uvec4(0u, 0u, 0u, 0u), 1u, 1u); +} + +vec4 vertex_main() { + extractBits_631377(); + 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_extract_bits(uvec4 v, uint offset, uint count) { + uint s = min(offset, 32u); + uint e = min(32u, (s + count)); + return bitfieldExtract(v, int(s), int((e - s))); +} + +void extractBits_631377() { + uvec4 res = tint_extract_bits(uvec4(0u, 0u, 0u, 0u), 1u, 1u); +} + +void fragment_main() { + extractBits_631377(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +uvec4 tint_extract_bits(uvec4 v, uint offset, uint count) { + uint s = min(offset, 32u); + uint e = min(32u, (s + count)); + return bitfieldExtract(v, int(s), int((e - s))); +} + +void extractBits_631377() { + uvec4 res = tint_extract_bits(uvec4(0u, 0u, 0u, 0u), 1u, 1u); +} + +void compute_main() { + extractBits_631377(); +} + +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/extractBits/631377.wgsl.expected.hlsl b/test/tint/builtins/gen/extractBits/631377.wgsl.expected.hlsl new file mode 100644 index 0000000000..a78bfb42ea --- /dev/null +++ b/test/tint/builtins/gen/extractBits/631377.wgsl.expected.hlsl @@ -0,0 +1,38 @@ +uint4 tint_extract_bits(uint4 v, uint offset, uint count) { + const uint s = min(offset, 32u); + const uint e = min(32u, (s + count)); + const uint shl = (32u - e); + const uint shr = (shl + s); + return ((v << uint4((shl).xxxx)) >> uint4((shr).xxxx)); +} + +void extractBits_631377() { + uint4 res = tint_extract_bits(uint4(0u, 0u, 0u, 0u), 1u, 1u); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + extractBits_631377(); + 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() { + extractBits_631377(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + extractBits_631377(); + return; +} diff --git a/test/tint/builtins/gen/extractBits/631377.wgsl.expected.msl b/test/tint/builtins/gen/extractBits/631377.wgsl.expected.msl new file mode 100644 index 0000000000..9bb51b666b --- /dev/null +++ b/test/tint/builtins/gen/extractBits/631377.wgsl.expected.msl @@ -0,0 +1,39 @@ +#include + +using namespace metal; +uint4 tint_extract_bits(uint4 v, uint offset, uint count) { + uint const s = min(offset, 32u); + uint const e = min(32u, (s + count)); + return extract_bits(v, s, (e - s)); +} + +void extractBits_631377() { + uint4 res = tint_extract_bits(uint4(), 1u, 1u); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + extractBits_631377(); + 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() { + extractBits_631377(); + return; +} + +kernel void compute_main() { + extractBits_631377(); + return; +} + diff --git a/test/tint/builtins/gen/extractBits/631377.wgsl.expected.spvasm b/test/tint/builtins/gen/extractBits/631377.wgsl.expected.spvasm new file mode 100644 index 0000000000..ed3df80cd9 --- /dev/null +++ b/test/tint/builtins/gen/extractBits/631377.wgsl.expected.spvasm @@ -0,0 +1,87 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 47 +; Schema: 0 + OpCapability Shader + %18 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size + OpEntryPoint Fragment %fragment_main "fragment_main" + OpEntryPoint GLCompute %compute_main "compute_main" + OpExecutionMode %fragment_main OriginUpperLeft + OpExecutionMode %compute_main LocalSize 1 1 1 + OpName %value "value" + OpName %vertex_point_size "vertex_point_size" + OpName %tint_extract_bits "tint_extract_bits" + OpName %v "v" + OpName %offset "offset" + OpName %count "count" + OpName %extractBits_631377 "extractBits_631377" + 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 %uint %uint + %uint_32 = OpConstant %uint 32 + %void = OpTypeVoid + %24 = OpTypeFunction %void + %29 = OpConstantNull %v4uint + %uint_1 = OpConstant %uint 1 +%_ptr_Function_v4uint = OpTypePointer Function %v4uint + %33 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%tint_extract_bits = OpFunction %v4uint None %9 + %v = OpFunctionParameter %v4uint + %offset = OpFunctionParameter %uint + %count = OpFunctionParameter %uint + %16 = OpLabel + %17 = OpExtInst %uint %18 UMin %offset %uint_32 + %21 = OpIAdd %uint %17 %count + %20 = OpExtInst %uint %18 UMin %uint_32 %21 + %23 = OpISub %uint %20 %17 + %22 = OpBitFieldUExtract %v4uint %v %17 %23 + OpReturnValue %22 + OpFunctionEnd +%extractBits_631377 = OpFunction %void None %24 + %27 = OpLabel + %res = OpVariable %_ptr_Function_v4uint Function %29 + %28 = OpFunctionCall %v4uint %tint_extract_bits %29 %uint_1 %uint_1 + OpStore %res %28 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %33 + %35 = OpLabel + %36 = OpFunctionCall %void %extractBits_631377 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %24 + %38 = OpLabel + %39 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %39 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %24 + %42 = OpLabel + %43 = OpFunctionCall %void %extractBits_631377 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %24 + %45 = OpLabel + %46 = OpFunctionCall %void %extractBits_631377 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/extractBits/631377.wgsl.expected.wgsl b/test/tint/builtins/gen/extractBits/631377.wgsl.expected.wgsl new file mode 100644 index 0000000000..dca168242c --- /dev/null +++ b/test/tint/builtins/gen/extractBits/631377.wgsl.expected.wgsl @@ -0,0 +1,19 @@ +fn extractBits_631377() { + var res : vec4 = extractBits(vec4(), 1u, 1u); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + extractBits_631377(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + extractBits_631377(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + extractBits_631377(); +} diff --git a/test/tint/builtins/gen/extractBits/a99a8d.wgsl b/test/tint/builtins/gen/extractBits/a99a8d.wgsl new file mode 100644 index 0000000000..241476a747 --- /dev/null +++ b/test/tint/builtins/gen/extractBits/a99a8d.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 extractBits(vec<2, i32>, u32, u32) -> vec<2, i32> +fn extractBits_a99a8d() { + var res: vec2 = extractBits(vec2(), 1u, 1u); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + extractBits_a99a8d(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + extractBits_a99a8d(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + extractBits_a99a8d(); +} diff --git a/test/tint/builtins/gen/extractBits/a99a8d.wgsl.expected.glsl b/test/tint/builtins/gen/extractBits/a99a8d.wgsl.expected.glsl new file mode 100644 index 0000000000..26f552380f --- /dev/null +++ b/test/tint/builtins/gen/extractBits/a99a8d.wgsl.expected.glsl @@ -0,0 +1,66 @@ +#version 310 es + +ivec2 tint_extract_bits(ivec2 v, uint offset, uint count) { + uint s = min(offset, 32u); + uint e = min(32u, (s + count)); + return bitfieldExtract(v, int(s), int((e - s))); +} + +void extractBits_a99a8d() { + ivec2 res = tint_extract_bits(ivec2(0, 0), 1u, 1u); +} + +vec4 vertex_main() { + extractBits_a99a8d(); + 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_extract_bits(ivec2 v, uint offset, uint count) { + uint s = min(offset, 32u); + uint e = min(32u, (s + count)); + return bitfieldExtract(v, int(s), int((e - s))); +} + +void extractBits_a99a8d() { + ivec2 res = tint_extract_bits(ivec2(0, 0), 1u, 1u); +} + +void fragment_main() { + extractBits_a99a8d(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +ivec2 tint_extract_bits(ivec2 v, uint offset, uint count) { + uint s = min(offset, 32u); + uint e = min(32u, (s + count)); + return bitfieldExtract(v, int(s), int((e - s))); +} + +void extractBits_a99a8d() { + ivec2 res = tint_extract_bits(ivec2(0, 0), 1u, 1u); +} + +void compute_main() { + extractBits_a99a8d(); +} + +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/extractBits/a99a8d.wgsl.expected.hlsl b/test/tint/builtins/gen/extractBits/a99a8d.wgsl.expected.hlsl new file mode 100644 index 0000000000..28166af258 --- /dev/null +++ b/test/tint/builtins/gen/extractBits/a99a8d.wgsl.expected.hlsl @@ -0,0 +1,38 @@ +int2 tint_extract_bits(int2 v, uint offset, uint count) { + const uint s = min(offset, 32u); + const uint e = min(32u, (s + count)); + const uint shl = (32u - e); + const uint shr = (shl + s); + return ((v << uint2((shl).xx)) >> uint2((shr).xx)); +} + +void extractBits_a99a8d() { + int2 res = tint_extract_bits(int2(0, 0), 1u, 1u); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + extractBits_a99a8d(); + 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() { + extractBits_a99a8d(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + extractBits_a99a8d(); + return; +} diff --git a/test/tint/builtins/gen/extractBits/a99a8d.wgsl.expected.msl b/test/tint/builtins/gen/extractBits/a99a8d.wgsl.expected.msl new file mode 100644 index 0000000000..a1a1b09770 --- /dev/null +++ b/test/tint/builtins/gen/extractBits/a99a8d.wgsl.expected.msl @@ -0,0 +1,39 @@ +#include + +using namespace metal; +int2 tint_extract_bits(int2 v, uint offset, uint count) { + uint const s = min(offset, 32u); + uint const e = min(32u, (s + count)); + return extract_bits(v, s, (e - s)); +} + +void extractBits_a99a8d() { + int2 res = tint_extract_bits(int2(), 1u, 1u); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + extractBits_a99a8d(); + 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() { + extractBits_a99a8d(); + return; +} + +kernel void compute_main() { + extractBits_a99a8d(); + return; +} + diff --git a/test/tint/builtins/gen/extractBits/a99a8d.wgsl.expected.spvasm b/test/tint/builtins/gen/extractBits/a99a8d.wgsl.expected.spvasm new file mode 100644 index 0000000000..5dcee110aa --- /dev/null +++ b/test/tint/builtins/gen/extractBits/a99a8d.wgsl.expected.spvasm @@ -0,0 +1,88 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 48 +; Schema: 0 + OpCapability Shader + %19 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size + OpEntryPoint Fragment %fragment_main "fragment_main" + OpEntryPoint GLCompute %compute_main "compute_main" + OpExecutionMode %fragment_main OriginUpperLeft + OpExecutionMode %compute_main LocalSize 1 1 1 + OpName %value "value" + OpName %vertex_point_size "vertex_point_size" + OpName %tint_extract_bits "tint_extract_bits" + OpName %v "v" + OpName %offset "offset" + OpName %count "count" + OpName %extractBits_a99a8d "extractBits_a99a8d" + 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 + %uint = OpTypeInt 32 0 + %9 = OpTypeFunction %v2int %v2int %uint %uint + %uint_32 = OpConstant %uint 32 + %void = OpTypeVoid + %25 = OpTypeFunction %void + %30 = OpConstantNull %v2int + %uint_1 = OpConstant %uint 1 +%_ptr_Function_v2int = OpTypePointer Function %v2int + %34 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%tint_extract_bits = OpFunction %v2int None %9 + %v = OpFunctionParameter %v2int + %offset = OpFunctionParameter %uint + %count = OpFunctionParameter %uint + %17 = OpLabel + %18 = OpExtInst %uint %19 UMin %offset %uint_32 + %22 = OpIAdd %uint %18 %count + %21 = OpExtInst %uint %19 UMin %uint_32 %22 + %24 = OpISub %uint %21 %18 + %23 = OpBitFieldSExtract %v2int %v %18 %24 + OpReturnValue %23 + OpFunctionEnd +%extractBits_a99a8d = OpFunction %void None %25 + %28 = OpLabel + %res = OpVariable %_ptr_Function_v2int Function %30 + %29 = OpFunctionCall %v2int %tint_extract_bits %30 %uint_1 %uint_1 + OpStore %res %29 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %34 + %36 = OpLabel + %37 = OpFunctionCall %void %extractBits_a99a8d + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %25 + %39 = OpLabel + %40 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %40 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %25 + %43 = OpLabel + %44 = OpFunctionCall %void %extractBits_a99a8d + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %25 + %46 = OpLabel + %47 = OpFunctionCall %void %extractBits_a99a8d + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/extractBits/a99a8d.wgsl.expected.wgsl b/test/tint/builtins/gen/extractBits/a99a8d.wgsl.expected.wgsl new file mode 100644 index 0000000000..4f6879db08 --- /dev/null +++ b/test/tint/builtins/gen/extractBits/a99a8d.wgsl.expected.wgsl @@ -0,0 +1,19 @@ +fn extractBits_a99a8d() { + var res : vec2 = extractBits(vec2(), 1u, 1u); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + extractBits_a99a8d(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + extractBits_a99a8d(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + extractBits_a99a8d(); +} diff --git a/test/tint/builtins/gen/extractBits/ce81f8.wgsl b/test/tint/builtins/gen/extractBits/ce81f8.wgsl new file mode 100644 index 0000000000..c22e61744e --- /dev/null +++ b/test/tint/builtins/gen/extractBits/ce81f8.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 extractBits(u32, u32, u32) -> u32 +fn extractBits_ce81f8() { + var res: u32 = extractBits(1u, 1u, 1u); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + extractBits_ce81f8(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + extractBits_ce81f8(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + extractBits_ce81f8(); +} diff --git a/test/tint/builtins/gen/extractBits/ce81f8.wgsl.expected.glsl b/test/tint/builtins/gen/extractBits/ce81f8.wgsl.expected.glsl new file mode 100644 index 0000000000..64bdfdb746 --- /dev/null +++ b/test/tint/builtins/gen/extractBits/ce81f8.wgsl.expected.glsl @@ -0,0 +1,66 @@ +#version 310 es + +uint tint_extract_bits(uint v, uint offset, uint count) { + uint s = min(offset, 32u); + uint e = min(32u, (s + count)); + return bitfieldExtract(v, int(s), int((e - s))); +} + +void extractBits_ce81f8() { + uint res = tint_extract_bits(1u, 1u, 1u); +} + +vec4 vertex_main() { + extractBits_ce81f8(); + 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_extract_bits(uint v, uint offset, uint count) { + uint s = min(offset, 32u); + uint e = min(32u, (s + count)); + return bitfieldExtract(v, int(s), int((e - s))); +} + +void extractBits_ce81f8() { + uint res = tint_extract_bits(1u, 1u, 1u); +} + +void fragment_main() { + extractBits_ce81f8(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +uint tint_extract_bits(uint v, uint offset, uint count) { + uint s = min(offset, 32u); + uint e = min(32u, (s + count)); + return bitfieldExtract(v, int(s), int((e - s))); +} + +void extractBits_ce81f8() { + uint res = tint_extract_bits(1u, 1u, 1u); +} + +void compute_main() { + extractBits_ce81f8(); +} + +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/extractBits/ce81f8.wgsl.expected.hlsl b/test/tint/builtins/gen/extractBits/ce81f8.wgsl.expected.hlsl new file mode 100644 index 0000000000..07f52bc451 --- /dev/null +++ b/test/tint/builtins/gen/extractBits/ce81f8.wgsl.expected.hlsl @@ -0,0 +1,38 @@ +uint tint_extract_bits(uint v, uint offset, uint count) { + const uint s = min(offset, 32u); + const uint e = min(32u, (s + count)); + const uint shl = (32u - e); + const uint shr = (shl + s); + return ((v << shl) >> shr); +} + +void extractBits_ce81f8() { + uint res = tint_extract_bits(1u, 1u, 1u); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + extractBits_ce81f8(); + 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() { + extractBits_ce81f8(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + extractBits_ce81f8(); + return; +} diff --git a/test/tint/builtins/gen/extractBits/ce81f8.wgsl.expected.msl b/test/tint/builtins/gen/extractBits/ce81f8.wgsl.expected.msl new file mode 100644 index 0000000000..bfb975924e --- /dev/null +++ b/test/tint/builtins/gen/extractBits/ce81f8.wgsl.expected.msl @@ -0,0 +1,39 @@ +#include + +using namespace metal; +uint tint_extract_bits(uint v, uint offset, uint count) { + uint const s = min(offset, 32u); + uint const e = min(32u, (s + count)); + return extract_bits(v, s, (e - s)); +} + +void extractBits_ce81f8() { + uint res = tint_extract_bits(1u, 1u, 1u); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + extractBits_ce81f8(); + 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() { + extractBits_ce81f8(); + return; +} + +kernel void compute_main() { + extractBits_ce81f8(); + return; +} + diff --git a/test/tint/builtins/gen/extractBits/ce81f8.wgsl.expected.spvasm b/test/tint/builtins/gen/extractBits/ce81f8.wgsl.expected.spvasm new file mode 100644 index 0000000000..2a1170710b --- /dev/null +++ b/test/tint/builtins/gen/extractBits/ce81f8.wgsl.expected.spvasm @@ -0,0 +1,86 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 46 +; Schema: 0 + OpCapability Shader + %17 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size + OpEntryPoint Fragment %fragment_main "fragment_main" + OpEntryPoint GLCompute %compute_main "compute_main" + OpExecutionMode %fragment_main OriginUpperLeft + OpExecutionMode %compute_main LocalSize 1 1 1 + OpName %value "value" + OpName %vertex_point_size "vertex_point_size" + OpName %tint_extract_bits "tint_extract_bits" + OpName %v "v" + OpName %offset "offset" + OpName %count "count" + OpName %extractBits_ce81f8 "extractBits_ce81f8" + 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 %uint %uint + %uint_32 = OpConstant %uint 32 + %void = OpTypeVoid + %23 = OpTypeFunction %void + %uint_1 = OpConstant %uint 1 +%_ptr_Function_uint = OpTypePointer Function %uint + %31 = OpConstantNull %uint + %32 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%tint_extract_bits = OpFunction %uint None %9 + %v = OpFunctionParameter %uint + %offset = OpFunctionParameter %uint + %count = OpFunctionParameter %uint + %15 = OpLabel + %16 = OpExtInst %uint %17 UMin %offset %uint_32 + %20 = OpIAdd %uint %16 %count + %19 = OpExtInst %uint %17 UMin %uint_32 %20 + %22 = OpISub %uint %19 %16 + %21 = OpBitFieldUExtract %uint %v %16 %22 + OpReturnValue %21 + OpFunctionEnd +%extractBits_ce81f8 = OpFunction %void None %23 + %26 = OpLabel + %res = OpVariable %_ptr_Function_uint Function %31 + %27 = OpFunctionCall %uint %tint_extract_bits %uint_1 %uint_1 %uint_1 + OpStore %res %27 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %32 + %34 = OpLabel + %35 = OpFunctionCall %void %extractBits_ce81f8 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %23 + %37 = OpLabel + %38 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %38 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %23 + %41 = OpLabel + %42 = OpFunctionCall %void %extractBits_ce81f8 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %23 + %44 = OpLabel + %45 = OpFunctionCall %void %extractBits_ce81f8 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/extractBits/ce81f8.wgsl.expected.wgsl b/test/tint/builtins/gen/extractBits/ce81f8.wgsl.expected.wgsl new file mode 100644 index 0000000000..646fa964fc --- /dev/null +++ b/test/tint/builtins/gen/extractBits/ce81f8.wgsl.expected.wgsl @@ -0,0 +1,19 @@ +fn extractBits_ce81f8() { + var res : u32 = extractBits(1u, 1u, 1u); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + extractBits_ce81f8(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + extractBits_ce81f8(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + extractBits_ce81f8(); +} diff --git a/test/tint/builtins/gen/extractBits/e04f5d.wgsl b/test/tint/builtins/gen/extractBits/e04f5d.wgsl new file mode 100644 index 0000000000..69842f448a --- /dev/null +++ b/test/tint/builtins/gen/extractBits/e04f5d.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 extractBits(vec<3, i32>, u32, u32) -> vec<3, i32> +fn extractBits_e04f5d() { + var res: vec3 = extractBits(vec3(), 1u, 1u); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + extractBits_e04f5d(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + extractBits_e04f5d(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + extractBits_e04f5d(); +} diff --git a/test/tint/builtins/gen/extractBits/e04f5d.wgsl.expected.glsl b/test/tint/builtins/gen/extractBits/e04f5d.wgsl.expected.glsl new file mode 100644 index 0000000000..52c1ee0c73 --- /dev/null +++ b/test/tint/builtins/gen/extractBits/e04f5d.wgsl.expected.glsl @@ -0,0 +1,66 @@ +#version 310 es + +ivec3 tint_extract_bits(ivec3 v, uint offset, uint count) { + uint s = min(offset, 32u); + uint e = min(32u, (s + count)); + return bitfieldExtract(v, int(s), int((e - s))); +} + +void extractBits_e04f5d() { + ivec3 res = tint_extract_bits(ivec3(0, 0, 0), 1u, 1u); +} + +vec4 vertex_main() { + extractBits_e04f5d(); + 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_extract_bits(ivec3 v, uint offset, uint count) { + uint s = min(offset, 32u); + uint e = min(32u, (s + count)); + return bitfieldExtract(v, int(s), int((e - s))); +} + +void extractBits_e04f5d() { + ivec3 res = tint_extract_bits(ivec3(0, 0, 0), 1u, 1u); +} + +void fragment_main() { + extractBits_e04f5d(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +ivec3 tint_extract_bits(ivec3 v, uint offset, uint count) { + uint s = min(offset, 32u); + uint e = min(32u, (s + count)); + return bitfieldExtract(v, int(s), int((e - s))); +} + +void extractBits_e04f5d() { + ivec3 res = tint_extract_bits(ivec3(0, 0, 0), 1u, 1u); +} + +void compute_main() { + extractBits_e04f5d(); +} + +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/extractBits/e04f5d.wgsl.expected.hlsl b/test/tint/builtins/gen/extractBits/e04f5d.wgsl.expected.hlsl new file mode 100644 index 0000000000..b363dcd54d --- /dev/null +++ b/test/tint/builtins/gen/extractBits/e04f5d.wgsl.expected.hlsl @@ -0,0 +1,38 @@ +int3 tint_extract_bits(int3 v, uint offset, uint count) { + const uint s = min(offset, 32u); + const uint e = min(32u, (s + count)); + const uint shl = (32u - e); + const uint shr = (shl + s); + return ((v << uint3((shl).xxx)) >> uint3((shr).xxx)); +} + +void extractBits_e04f5d() { + int3 res = tint_extract_bits(int3(0, 0, 0), 1u, 1u); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + extractBits_e04f5d(); + 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() { + extractBits_e04f5d(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + extractBits_e04f5d(); + return; +} diff --git a/test/tint/builtins/gen/extractBits/e04f5d.wgsl.expected.msl b/test/tint/builtins/gen/extractBits/e04f5d.wgsl.expected.msl new file mode 100644 index 0000000000..b94ad3e3a6 --- /dev/null +++ b/test/tint/builtins/gen/extractBits/e04f5d.wgsl.expected.msl @@ -0,0 +1,39 @@ +#include + +using namespace metal; +int3 tint_extract_bits(int3 v, uint offset, uint count) { + uint const s = min(offset, 32u); + uint const e = min(32u, (s + count)); + return extract_bits(v, s, (e - s)); +} + +void extractBits_e04f5d() { + int3 res = tint_extract_bits(int3(), 1u, 1u); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + extractBits_e04f5d(); + 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() { + extractBits_e04f5d(); + return; +} + +kernel void compute_main() { + extractBits_e04f5d(); + return; +} + diff --git a/test/tint/builtins/gen/extractBits/e04f5d.wgsl.expected.spvasm b/test/tint/builtins/gen/extractBits/e04f5d.wgsl.expected.spvasm new file mode 100644 index 0000000000..fedc92ebcb --- /dev/null +++ b/test/tint/builtins/gen/extractBits/e04f5d.wgsl.expected.spvasm @@ -0,0 +1,88 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 48 +; Schema: 0 + OpCapability Shader + %19 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size + OpEntryPoint Fragment %fragment_main "fragment_main" + OpEntryPoint GLCompute %compute_main "compute_main" + OpExecutionMode %fragment_main OriginUpperLeft + OpExecutionMode %compute_main LocalSize 1 1 1 + OpName %value "value" + OpName %vertex_point_size "vertex_point_size" + OpName %tint_extract_bits "tint_extract_bits" + OpName %v "v" + OpName %offset "offset" + OpName %count "count" + OpName %extractBits_e04f5d "extractBits_e04f5d" + 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 + %uint = OpTypeInt 32 0 + %9 = OpTypeFunction %v3int %v3int %uint %uint + %uint_32 = OpConstant %uint 32 + %void = OpTypeVoid + %25 = OpTypeFunction %void + %30 = OpConstantNull %v3int + %uint_1 = OpConstant %uint 1 +%_ptr_Function_v3int = OpTypePointer Function %v3int + %34 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%tint_extract_bits = OpFunction %v3int None %9 + %v = OpFunctionParameter %v3int + %offset = OpFunctionParameter %uint + %count = OpFunctionParameter %uint + %17 = OpLabel + %18 = OpExtInst %uint %19 UMin %offset %uint_32 + %22 = OpIAdd %uint %18 %count + %21 = OpExtInst %uint %19 UMin %uint_32 %22 + %24 = OpISub %uint %21 %18 + %23 = OpBitFieldSExtract %v3int %v %18 %24 + OpReturnValue %23 + OpFunctionEnd +%extractBits_e04f5d = OpFunction %void None %25 + %28 = OpLabel + %res = OpVariable %_ptr_Function_v3int Function %30 + %29 = OpFunctionCall %v3int %tint_extract_bits %30 %uint_1 %uint_1 + OpStore %res %29 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %34 + %36 = OpLabel + %37 = OpFunctionCall %void %extractBits_e04f5d + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %25 + %39 = OpLabel + %40 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %40 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %25 + %43 = OpLabel + %44 = OpFunctionCall %void %extractBits_e04f5d + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %25 + %46 = OpLabel + %47 = OpFunctionCall %void %extractBits_e04f5d + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/extractBits/e04f5d.wgsl.expected.wgsl b/test/tint/builtins/gen/extractBits/e04f5d.wgsl.expected.wgsl new file mode 100644 index 0000000000..49ebb9c89f --- /dev/null +++ b/test/tint/builtins/gen/extractBits/e04f5d.wgsl.expected.wgsl @@ -0,0 +1,19 @@ +fn extractBits_e04f5d() { + var res : vec3 = extractBits(vec3(), 1u, 1u); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + extractBits_e04f5d(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + extractBits_e04f5d(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + extractBits_e04f5d(); +} diff --git a/test/tint/builtins/gen/extractBits/f28f69.wgsl b/test/tint/builtins/gen/extractBits/f28f69.wgsl new file mode 100644 index 0000000000..3d53394878 --- /dev/null +++ b/test/tint/builtins/gen/extractBits/f28f69.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 extractBits(vec<2, u32>, u32, u32) -> vec<2, u32> +fn extractBits_f28f69() { + var res: vec2 = extractBits(vec2(), 1u, 1u); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + extractBits_f28f69(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + extractBits_f28f69(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + extractBits_f28f69(); +} diff --git a/test/tint/builtins/gen/extractBits/f28f69.wgsl.expected.glsl b/test/tint/builtins/gen/extractBits/f28f69.wgsl.expected.glsl new file mode 100644 index 0000000000..1b1d855491 --- /dev/null +++ b/test/tint/builtins/gen/extractBits/f28f69.wgsl.expected.glsl @@ -0,0 +1,66 @@ +#version 310 es + +uvec2 tint_extract_bits(uvec2 v, uint offset, uint count) { + uint s = min(offset, 32u); + uint e = min(32u, (s + count)); + return bitfieldExtract(v, int(s), int((e - s))); +} + +void extractBits_f28f69() { + uvec2 res = tint_extract_bits(uvec2(0u, 0u), 1u, 1u); +} + +vec4 vertex_main() { + extractBits_f28f69(); + 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_extract_bits(uvec2 v, uint offset, uint count) { + uint s = min(offset, 32u); + uint e = min(32u, (s + count)); + return bitfieldExtract(v, int(s), int((e - s))); +} + +void extractBits_f28f69() { + uvec2 res = tint_extract_bits(uvec2(0u, 0u), 1u, 1u); +} + +void fragment_main() { + extractBits_f28f69(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +uvec2 tint_extract_bits(uvec2 v, uint offset, uint count) { + uint s = min(offset, 32u); + uint e = min(32u, (s + count)); + return bitfieldExtract(v, int(s), int((e - s))); +} + +void extractBits_f28f69() { + uvec2 res = tint_extract_bits(uvec2(0u, 0u), 1u, 1u); +} + +void compute_main() { + extractBits_f28f69(); +} + +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/extractBits/f28f69.wgsl.expected.hlsl b/test/tint/builtins/gen/extractBits/f28f69.wgsl.expected.hlsl new file mode 100644 index 0000000000..aa2cc010db --- /dev/null +++ b/test/tint/builtins/gen/extractBits/f28f69.wgsl.expected.hlsl @@ -0,0 +1,38 @@ +uint2 tint_extract_bits(uint2 v, uint offset, uint count) { + const uint s = min(offset, 32u); + const uint e = min(32u, (s + count)); + const uint shl = (32u - e); + const uint shr = (shl + s); + return ((v << uint2((shl).xx)) >> uint2((shr).xx)); +} + +void extractBits_f28f69() { + uint2 res = tint_extract_bits(uint2(0u, 0u), 1u, 1u); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + extractBits_f28f69(); + 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() { + extractBits_f28f69(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + extractBits_f28f69(); + return; +} diff --git a/test/tint/builtins/gen/extractBits/f28f69.wgsl.expected.msl b/test/tint/builtins/gen/extractBits/f28f69.wgsl.expected.msl new file mode 100644 index 0000000000..4f3d529f87 --- /dev/null +++ b/test/tint/builtins/gen/extractBits/f28f69.wgsl.expected.msl @@ -0,0 +1,39 @@ +#include + +using namespace metal; +uint2 tint_extract_bits(uint2 v, uint offset, uint count) { + uint const s = min(offset, 32u); + uint const e = min(32u, (s + count)); + return extract_bits(v, s, (e - s)); +} + +void extractBits_f28f69() { + uint2 res = tint_extract_bits(uint2(), 1u, 1u); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + extractBits_f28f69(); + 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() { + extractBits_f28f69(); + return; +} + +kernel void compute_main() { + extractBits_f28f69(); + return; +} + diff --git a/test/tint/builtins/gen/extractBits/f28f69.wgsl.expected.spvasm b/test/tint/builtins/gen/extractBits/f28f69.wgsl.expected.spvasm new file mode 100644 index 0000000000..060801b95a --- /dev/null +++ b/test/tint/builtins/gen/extractBits/f28f69.wgsl.expected.spvasm @@ -0,0 +1,87 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 47 +; Schema: 0 + OpCapability Shader + %18 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size + OpEntryPoint Fragment %fragment_main "fragment_main" + OpEntryPoint GLCompute %compute_main "compute_main" + OpExecutionMode %fragment_main OriginUpperLeft + OpExecutionMode %compute_main LocalSize 1 1 1 + OpName %value "value" + OpName %vertex_point_size "vertex_point_size" + OpName %tint_extract_bits "tint_extract_bits" + OpName %v "v" + OpName %offset "offset" + OpName %count "count" + OpName %extractBits_f28f69 "extractBits_f28f69" + 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 %uint %uint + %uint_32 = OpConstant %uint 32 + %void = OpTypeVoid + %24 = OpTypeFunction %void + %29 = OpConstantNull %v2uint + %uint_1 = OpConstant %uint 1 +%_ptr_Function_v2uint = OpTypePointer Function %v2uint + %33 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%tint_extract_bits = OpFunction %v2uint None %9 + %v = OpFunctionParameter %v2uint + %offset = OpFunctionParameter %uint + %count = OpFunctionParameter %uint + %16 = OpLabel + %17 = OpExtInst %uint %18 UMin %offset %uint_32 + %21 = OpIAdd %uint %17 %count + %20 = OpExtInst %uint %18 UMin %uint_32 %21 + %23 = OpISub %uint %20 %17 + %22 = OpBitFieldUExtract %v2uint %v %17 %23 + OpReturnValue %22 + OpFunctionEnd +%extractBits_f28f69 = OpFunction %void None %24 + %27 = OpLabel + %res = OpVariable %_ptr_Function_v2uint Function %29 + %28 = OpFunctionCall %v2uint %tint_extract_bits %29 %uint_1 %uint_1 + OpStore %res %28 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %33 + %35 = OpLabel + %36 = OpFunctionCall %void %extractBits_f28f69 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %24 + %38 = OpLabel + %39 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %39 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %24 + %42 = OpLabel + %43 = OpFunctionCall %void %extractBits_f28f69 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %24 + %45 = OpLabel + %46 = OpFunctionCall %void %extractBits_f28f69 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/extractBits/f28f69.wgsl.expected.wgsl b/test/tint/builtins/gen/extractBits/f28f69.wgsl.expected.wgsl new file mode 100644 index 0000000000..ad883f5417 --- /dev/null +++ b/test/tint/builtins/gen/extractBits/f28f69.wgsl.expected.wgsl @@ -0,0 +1,19 @@ +fn extractBits_f28f69() { + var res : vec2 = extractBits(vec2(), 1u, 1u); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + extractBits_f28f69(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + extractBits_f28f69(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + extractBits_f28f69(); +} diff --git a/test/tint/builtins/gen/extractBits/fb850f.wgsl b/test/tint/builtins/gen/extractBits/fb850f.wgsl new file mode 100644 index 0000000000..0654c65735 --- /dev/null +++ b/test/tint/builtins/gen/extractBits/fb850f.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 extractBits(vec<4, i32>, u32, u32) -> vec<4, i32> +fn extractBits_fb850f() { + var res: vec4 = extractBits(vec4(), 1u, 1u); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + extractBits_fb850f(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + extractBits_fb850f(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + extractBits_fb850f(); +} diff --git a/test/tint/builtins/gen/extractBits/fb850f.wgsl.expected.glsl b/test/tint/builtins/gen/extractBits/fb850f.wgsl.expected.glsl new file mode 100644 index 0000000000..ce727f9477 --- /dev/null +++ b/test/tint/builtins/gen/extractBits/fb850f.wgsl.expected.glsl @@ -0,0 +1,66 @@ +#version 310 es + +ivec4 tint_extract_bits(ivec4 v, uint offset, uint count) { + uint s = min(offset, 32u); + uint e = min(32u, (s + count)); + return bitfieldExtract(v, int(s), int((e - s))); +} + +void extractBits_fb850f() { + ivec4 res = tint_extract_bits(ivec4(0, 0, 0, 0), 1u, 1u); +} + +vec4 vertex_main() { + extractBits_fb850f(); + 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_extract_bits(ivec4 v, uint offset, uint count) { + uint s = min(offset, 32u); + uint e = min(32u, (s + count)); + return bitfieldExtract(v, int(s), int((e - s))); +} + +void extractBits_fb850f() { + ivec4 res = tint_extract_bits(ivec4(0, 0, 0, 0), 1u, 1u); +} + +void fragment_main() { + extractBits_fb850f(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +ivec4 tint_extract_bits(ivec4 v, uint offset, uint count) { + uint s = min(offset, 32u); + uint e = min(32u, (s + count)); + return bitfieldExtract(v, int(s), int((e - s))); +} + +void extractBits_fb850f() { + ivec4 res = tint_extract_bits(ivec4(0, 0, 0, 0), 1u, 1u); +} + +void compute_main() { + extractBits_fb850f(); +} + +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/extractBits/fb850f.wgsl.expected.hlsl b/test/tint/builtins/gen/extractBits/fb850f.wgsl.expected.hlsl new file mode 100644 index 0000000000..bc152e4b78 --- /dev/null +++ b/test/tint/builtins/gen/extractBits/fb850f.wgsl.expected.hlsl @@ -0,0 +1,38 @@ +int4 tint_extract_bits(int4 v, uint offset, uint count) { + const uint s = min(offset, 32u); + const uint e = min(32u, (s + count)); + const uint shl = (32u - e); + const uint shr = (shl + s); + return ((v << uint4((shl).xxxx)) >> uint4((shr).xxxx)); +} + +void extractBits_fb850f() { + int4 res = tint_extract_bits(int4(0, 0, 0, 0), 1u, 1u); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + extractBits_fb850f(); + 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() { + extractBits_fb850f(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + extractBits_fb850f(); + return; +} diff --git a/test/tint/builtins/gen/extractBits/fb850f.wgsl.expected.msl b/test/tint/builtins/gen/extractBits/fb850f.wgsl.expected.msl new file mode 100644 index 0000000000..34a9f0ce84 --- /dev/null +++ b/test/tint/builtins/gen/extractBits/fb850f.wgsl.expected.msl @@ -0,0 +1,39 @@ +#include + +using namespace metal; +int4 tint_extract_bits(int4 v, uint offset, uint count) { + uint const s = min(offset, 32u); + uint const e = min(32u, (s + count)); + return extract_bits(v, s, (e - s)); +} + +void extractBits_fb850f() { + int4 res = tint_extract_bits(int4(), 1u, 1u); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + extractBits_fb850f(); + 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() { + extractBits_fb850f(); + return; +} + +kernel void compute_main() { + extractBits_fb850f(); + return; +} + diff --git a/test/tint/builtins/gen/extractBits/fb850f.wgsl.expected.spvasm b/test/tint/builtins/gen/extractBits/fb850f.wgsl.expected.spvasm new file mode 100644 index 0000000000..f904fcbd2e --- /dev/null +++ b/test/tint/builtins/gen/extractBits/fb850f.wgsl.expected.spvasm @@ -0,0 +1,88 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 48 +; Schema: 0 + OpCapability Shader + %19 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size + OpEntryPoint Fragment %fragment_main "fragment_main" + OpEntryPoint GLCompute %compute_main "compute_main" + OpExecutionMode %fragment_main OriginUpperLeft + OpExecutionMode %compute_main LocalSize 1 1 1 + OpName %value "value" + OpName %vertex_point_size "vertex_point_size" + OpName %tint_extract_bits "tint_extract_bits" + OpName %v "v" + OpName %offset "offset" + OpName %count "count" + OpName %extractBits_fb850f "extractBits_fb850f" + 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 + %uint = OpTypeInt 32 0 + %9 = OpTypeFunction %v4int %v4int %uint %uint + %uint_32 = OpConstant %uint 32 + %void = OpTypeVoid + %25 = OpTypeFunction %void + %30 = OpConstantNull %v4int + %uint_1 = OpConstant %uint 1 +%_ptr_Function_v4int = OpTypePointer Function %v4int + %34 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%tint_extract_bits = OpFunction %v4int None %9 + %v = OpFunctionParameter %v4int + %offset = OpFunctionParameter %uint + %count = OpFunctionParameter %uint + %17 = OpLabel + %18 = OpExtInst %uint %19 UMin %offset %uint_32 + %22 = OpIAdd %uint %18 %count + %21 = OpExtInst %uint %19 UMin %uint_32 %22 + %24 = OpISub %uint %21 %18 + %23 = OpBitFieldSExtract %v4int %v %18 %24 + OpReturnValue %23 + OpFunctionEnd +%extractBits_fb850f = OpFunction %void None %25 + %28 = OpLabel + %res = OpVariable %_ptr_Function_v4int Function %30 + %29 = OpFunctionCall %v4int %tint_extract_bits %30 %uint_1 %uint_1 + OpStore %res %29 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %34 + %36 = OpLabel + %37 = OpFunctionCall %void %extractBits_fb850f + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %25 + %39 = OpLabel + %40 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %40 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %25 + %43 = OpLabel + %44 = OpFunctionCall %void %extractBits_fb850f + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %25 + %46 = OpLabel + %47 = OpFunctionCall %void %extractBits_fb850f + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/extractBits/fb850f.wgsl.expected.wgsl b/test/tint/builtins/gen/extractBits/fb850f.wgsl.expected.wgsl new file mode 100644 index 0000000000..2e3e8d125d --- /dev/null +++ b/test/tint/builtins/gen/extractBits/fb850f.wgsl.expected.wgsl @@ -0,0 +1,19 @@ +fn extractBits_fb850f() { + var res : vec4 = extractBits(vec4(), 1u, 1u); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + extractBits_fb850f(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + extractBits_fb850f(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + extractBits_fb850f(); +}