From 8169693136dd5f96926dce3e0a59dc649ca6c64a Mon Sep 17 00:00:00 2001 From: Ben Clayton Date: Wed, 23 Feb 2022 18:20:30 +0000 Subject: [PATCH] builtins: Add firstLeadingBit Currently polyfilled for all backends. HLSL should be able to map this to 'firstbithigh', but there might need to be some special case handling for 0 (undocumented behavior). For now just polyfill. CTS tests: https://github.com/gpuweb/cts/pull/1004 Bug: tint:1367 Bug: tint:1449 Change-Id: I9c9a08ea93d1c4a602e0ab763e95e2eea336fb0d Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/81503 Reviewed-by: David Neto Kokoro: Kokoro Commit-Queue: Ben Clayton --- src/tint/builtin_table.inl | 3817 +++++++++-------- src/tint/builtins.def | 2 + src/tint/program_builder.h | 9 + src/tint/sem/builtin_type.cc | 5 + src/tint/sem/builtin_type.h | 1 + src/tint/transform/builtin_polyfill.cc | 115 +- src/tint/transform/builtin_polyfill.h | 2 + src/tint/transform/builtin_polyfill_test.cc | 154 + src/tint/transform/glsl.cc | 1 + src/tint/writer/hlsl/generator_impl.cc | 1 + src/tint/writer/msl/generator_impl.cc | 1 + src/tint/writer/spirv/builder.cc | 1 + .../builtins/gen/firstLeadingBit/000ff3.wgsl | 45 + .../firstLeadingBit/000ff3.wgsl.expected.glsl | 93 + .../firstLeadingBit/000ff3.wgsl.expected.hlsl | 45 + .../firstLeadingBit/000ff3.wgsl.expected.msl | 48 + .../000ff3.wgsl.expected.spvasm | 142 + .../firstLeadingBit/000ff3.wgsl.expected.wgsl | 19 + .../builtins/gen/firstLeadingBit/35053e.wgsl | 45 + .../firstLeadingBit/35053e.wgsl.expected.glsl | 93 + .../firstLeadingBit/35053e.wgsl.expected.hlsl | 45 + .../firstLeadingBit/35053e.wgsl.expected.msl | 48 + .../35053e.wgsl.expected.spvasm | 154 + .../firstLeadingBit/35053e.wgsl.expected.wgsl | 19 + .../builtins/gen/firstLeadingBit/3fd7d0.wgsl | 45 + .../firstLeadingBit/3fd7d0.wgsl.expected.glsl | 93 + .../firstLeadingBit/3fd7d0.wgsl.expected.hlsl | 45 + .../firstLeadingBit/3fd7d0.wgsl.expected.msl | 48 + .../3fd7d0.wgsl.expected.spvasm | 142 + .../firstLeadingBit/3fd7d0.wgsl.expected.wgsl | 19 + .../builtins/gen/firstLeadingBit/57a1a3.wgsl | 45 + .../firstLeadingBit/57a1a3.wgsl.expected.glsl | 93 + .../firstLeadingBit/57a1a3.wgsl.expected.hlsl | 45 + .../firstLeadingBit/57a1a3.wgsl.expected.msl | 48 + .../57a1a3.wgsl.expected.spvasm | 140 + .../firstLeadingBit/57a1a3.wgsl.expected.wgsl | 19 + .../builtins/gen/firstLeadingBit/6fe804.wgsl | 45 + .../firstLeadingBit/6fe804.wgsl.expected.glsl | 93 + .../firstLeadingBit/6fe804.wgsl.expected.hlsl | 45 + .../firstLeadingBit/6fe804.wgsl.expected.msl | 48 + .../6fe804.wgsl.expected.spvasm | 142 + .../firstLeadingBit/6fe804.wgsl.expected.wgsl | 19 + .../builtins/gen/firstLeadingBit/a622c2.wgsl | 45 + .../firstLeadingBit/a622c2.wgsl.expected.glsl | 93 + .../firstLeadingBit/a622c2.wgsl.expected.hlsl | 45 + .../firstLeadingBit/a622c2.wgsl.expected.msl | 48 + .../a622c2.wgsl.expected.spvasm | 154 + .../firstLeadingBit/a622c2.wgsl.expected.wgsl | 19 + .../builtins/gen/firstLeadingBit/c1f940.wgsl | 45 + .../firstLeadingBit/c1f940.wgsl.expected.glsl | 93 + .../firstLeadingBit/c1f940.wgsl.expected.hlsl | 45 + .../firstLeadingBit/c1f940.wgsl.expected.msl | 48 + .../c1f940.wgsl.expected.spvasm | 154 + .../firstLeadingBit/c1f940.wgsl.expected.wgsl | 19 + .../builtins/gen/firstLeadingBit/f0779d.wgsl | 45 + .../firstLeadingBit/f0779d.wgsl.expected.glsl | 93 + .../firstLeadingBit/f0779d.wgsl.expected.hlsl | 45 + .../firstLeadingBit/f0779d.wgsl.expected.msl | 48 + .../f0779d.wgsl.expected.spvasm | 129 + .../firstLeadingBit/f0779d.wgsl.expected.wgsl | 19 + 60 files changed, 5366 insertions(+), 1900 deletions(-) create mode 100644 test/tint/builtins/gen/firstLeadingBit/000ff3.wgsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/000ff3.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/000ff3.wgsl.expected.hlsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/000ff3.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/firstLeadingBit/000ff3.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/firstLeadingBit/000ff3.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/35053e.wgsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/35053e.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/35053e.wgsl.expected.hlsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/35053e.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/firstLeadingBit/35053e.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/firstLeadingBit/35053e.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/3fd7d0.wgsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/3fd7d0.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/3fd7d0.wgsl.expected.hlsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/3fd7d0.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/firstLeadingBit/3fd7d0.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/firstLeadingBit/3fd7d0.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/57a1a3.wgsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/57a1a3.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/57a1a3.wgsl.expected.hlsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/57a1a3.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/firstLeadingBit/57a1a3.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/firstLeadingBit/57a1a3.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/6fe804.wgsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/6fe804.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/6fe804.wgsl.expected.hlsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/6fe804.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/firstLeadingBit/6fe804.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/firstLeadingBit/6fe804.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/a622c2.wgsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/a622c2.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/a622c2.wgsl.expected.hlsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/a622c2.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/firstLeadingBit/a622c2.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/firstLeadingBit/a622c2.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/c1f940.wgsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/c1f940.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/c1f940.wgsl.expected.hlsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/c1f940.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/firstLeadingBit/c1f940.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/firstLeadingBit/c1f940.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/f0779d.wgsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/f0779d.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/f0779d.wgsl.expected.hlsl create mode 100644 test/tint/builtins/gen/firstLeadingBit/f0779d.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/firstLeadingBit/f0779d.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/firstLeadingBit/f0779d.wgsl.expected.wgsl diff --git a/src/tint/builtin_table.inl b/src/tint/builtin_table.inl index 595866c9ab..9c2f22aa79 100644 --- a/src/tint/builtin_table.inl +++ b/src/tint/builtin_table.inl @@ -1720,14 +1720,14 @@ constexpr MatcherIndex kMatcherIndices[] = { /* [78] */ 8, /* [79] */ 0, /* [80] */ 3, - /* [81] */ 5, + /* [81] */ 7, /* [82] */ 2, - /* [83] */ 5, - /* [84] */ 3, - /* [85] */ 17, + /* [83] */ 17, + /* [84] */ 2, + /* [85] */ 5, /* [86] */ 2, - /* [87] */ 7, - /* [88] */ 2, + /* [87] */ 5, + /* [88] */ 3, /* [89] */ 18, /* [90] */ 2, /* [91] */ 6, @@ -1740,9 +1740,9 @@ constexpr MatcherIndex kMatcherIndices[] = { /* [98] */ 2, /* [99] */ 20, /* [100] */ 2, - /* [101] */ 33, + /* [101] */ 35, /* [102] */ 0, - /* [103] */ 35, + /* [103] */ 33, /* [104] */ 0, /* [105] */ 5, /* [106] */ 0, @@ -1768,11 +1768,11 @@ constexpr MatcherIndex kMatcherIndices[] = { /* [126] */ 0, /* [127] */ 15, /* [128] */ 2, - /* [129] */ 25, + /* [129] */ 24, /* [130] */ 23, - /* [131] */ 14, - /* [132] */ 22, - /* [133] */ 24, + /* [131] */ 25, + /* [132] */ 14, + /* [133] */ 22, /* [134] */ 26, /* [135] */ 13, /* [136] */ 31, @@ -1790,7 +1790,7 @@ constexpr ParameterInfo kParameters[] = { { /* [0] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[83], }, { /* [1] */ @@ -1800,7 +1800,7 @@ constexpr ParameterInfo kParameters[] = { { /* [2] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[85], }, { /* [3] */ @@ -1810,32 +1810,32 @@ constexpr ParameterInfo kParameters[] = { { /* [4] */ /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[85], }, { /* [5] */ /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[85], }, { /* [6] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[83], + /* matcher indices */ &kMatcherIndices[87], }, { /* [7] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[130], }, { /* [8] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* matcher indices */ &kMatcherIndices[132], }, { /* [9] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[85], }, { /* [10] */ @@ -1844,18 +1844,18 @@ constexpr ParameterInfo kParameters[] = { }, { /* [11] */ - /* usage */ ParameterUsage::kBias, + /* usage */ ParameterUsage::kDepthRef, /* matcher indices */ &kMatcherIndices[12], }, { /* [12] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[83], + /* matcher indices */ &kMatcherIndices[87], }, { /* [13] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[130], }, { /* [14] */ @@ -1865,7 +1865,7 @@ constexpr ParameterInfo kParameters[] = { { /* [15] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[85], }, { /* [16] */ @@ -1875,17 +1875,17 @@ constexpr ParameterInfo kParameters[] = { { /* [17] */ /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[55], }, { /* [18] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[83], + /* matcher indices */ &kMatcherIndices[87], }, { /* [19] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[99], + /* matcher indices */ &kMatcherIndices[83], }, { /* [20] */ @@ -1895,7 +1895,7 @@ constexpr ParameterInfo kParameters[] = { { /* [21] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[85], }, { /* [22] */ @@ -1904,13 +1904,13 @@ constexpr ParameterInfo kParameters[] = { }, { /* [23] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kBias, + /* matcher indices */ &kMatcherIndices[12], }, { /* [24] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[87], }, { /* [25] */ @@ -1930,7 +1930,7 @@ constexpr ParameterInfo kParameters[] = { { /* [28] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[85], }, { /* [29] */ @@ -1940,42 +1940,42 @@ constexpr ParameterInfo kParameters[] = { { /* [30] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[83], + /* matcher indices */ &kMatcherIndices[87], }, { /* [31] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[130], }, { /* [32] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* matcher indices */ &kMatcherIndices[132], }, { /* [33] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[85], }, { /* [34] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [35] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], }, { /* [36] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[95], + /* matcher indices */ &kMatcherIndices[87], }, { /* [37] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[99], }, { /* [38] */ @@ -1985,7 +1985,7 @@ constexpr ParameterInfo kParameters[] = { { /* [39] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[91], }, { /* [40] */ @@ -1995,87 +1995,87 @@ constexpr ParameterInfo kParameters[] = { { /* [41] */ /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[91], }, { /* [42] */ /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[91], }, { /* [43] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[89], }, { /* [44] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[135], }, { /* [45] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[91], }, { /* [46] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[91], }, { /* [47] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[91], }, { /* [48] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[83], + /* matcher indices */ &kMatcherIndices[95], }, { /* [49] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[93], + /* matcher indices */ &kMatcherIndices[130], }, { /* [50] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* matcher indices */ &kMatcherIndices[132], }, { /* [51] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[85], }, { /* [52] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[81], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [53] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[81], + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], }, { /* [54] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[83], + /* matcher indices */ &kMatcherIndices[87], }, { /* [55] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[83], }, { /* [56] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[135], }, { /* [57] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[85], }, { /* [58] */ @@ -2084,18 +2084,18 @@ constexpr ParameterInfo kParameters[] = { }, { /* [59] */ - /* usage */ ParameterUsage::kDepthRef, + /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[12], }, { /* [60] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[83], + /* matcher indices */ &kMatcherIndices[87], }, { /* [61] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[83], }, { /* [62] */ @@ -2105,7 +2105,7 @@ constexpr ParameterInfo kParameters[] = { { /* [63] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[85], }, { /* [64] */ @@ -2114,58 +2114,58 @@ constexpr ParameterInfo kParameters[] = { }, { /* [65] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[85], }, { /* [66] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[83], + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[85], }, { /* [67] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[93], }, { /* [68] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[135], }, { /* [69] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[85], }, { /* [70] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[85], }, { /* [71] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[85], }, { /* [72] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[83], + /* matcher indices */ &kMatcherIndices[87], }, { /* [73] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[133], }, { /* [74] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[132], }, { /* [75] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[85], }, { /* [76] */ @@ -2175,7 +2175,7 @@ constexpr ParameterInfo kParameters[] = { { /* [77] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[83], + /* matcher indices */ &kMatcherIndices[87], }, { /* [78] */ @@ -2190,52 +2190,52 @@ constexpr ParameterInfo kParameters[] = { { /* [80] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[85], }, { /* [81] */ - /* usage */ ParameterUsage::kBias, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[85], }, { /* [82] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[83], + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[85], }, { /* [83] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[130], }, { /* [84] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* matcher indices */ &kMatcherIndices[132], }, { /* [85] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[85], }, { /* [86] */ - /* usage */ ParameterUsage::kBias, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [87] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[95], + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], }, { /* [88] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[99], + /* matcher indices */ &kMatcherIndices[131], }, { /* [89] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* matcher indices */ &kMatcherIndices[132], }, { /* [90] */ @@ -2249,33 +2249,33 @@ constexpr ParameterInfo kParameters[] = { }, { /* [92] */ - /* usage */ ParameterUsage::kBias, + /* usage */ ParameterUsage::kDepthRef, /* matcher indices */ &kMatcherIndices[12], }, { /* [93] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[130], }, { /* [94] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[135], }, { /* [95] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[85], }, { /* [96] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [97] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[83], + /* matcher indices */ &kMatcherIndices[87], }, { /* [98] */ @@ -2285,12 +2285,12 @@ constexpr ParameterInfo kParameters[] = { { /* [99] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[132], }, { /* [100] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[85], }, { /* [101] */ @@ -2305,17 +2305,17 @@ constexpr ParameterInfo kParameters[] = { { /* [103] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[131], }, { /* [104] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* matcher indices */ &kMatcherIndices[132], }, { /* [105] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[91], }, { /* [106] */ @@ -2324,38 +2324,38 @@ constexpr ParameterInfo kParameters[] = { }, { /* [107] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[83], - }, - { - /* [108] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [109] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[131], - }, - { - /* [110] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], - }, - { - /* [111] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [112] */ /* usage */ ParameterUsage::kDepthRef, /* matcher indices */ &kMatcherIndices[12], }, + { + /* [108] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[133], + }, + { + /* [109] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[132], + }, + { + /* [110] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[85], + }, + { + /* [111] */ + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [112] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[87], + }, { /* [113] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[130], }, { /* [114] */ @@ -2365,7 +2365,7 @@ constexpr ParameterInfo kParameters[] = { { /* [115] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[85], }, { /* [116] */ @@ -2374,23 +2374,23 @@ constexpr ParameterInfo kParameters[] = { }, { /* [117] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[83], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [118] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[83], }, { /* [119] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[135], }, { /* [120] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[85], }, { /* [121] */ @@ -2399,8 +2399,8 @@ constexpr ParameterInfo kParameters[] = { }, { /* [122] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[87], }, { /* [123] */ @@ -2410,12 +2410,12 @@ constexpr ParameterInfo kParameters[] = { { /* [124] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[132], }, { /* [125] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[85], }, { /* [126] */ @@ -2430,12 +2430,12 @@ constexpr ParameterInfo kParameters[] = { { /* [128] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[89], }, { /* [129] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[135], }, { /* [130] */ @@ -2444,18 +2444,18 @@ constexpr ParameterInfo kParameters[] = { }, { /* [131] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[91], }, { /* [132] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[91], }, { /* [133] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[93], + /* matcher indices */ &kMatcherIndices[83], }, { /* [134] */ @@ -2465,57 +2465,57 @@ constexpr ParameterInfo kParameters[] = { { /* [135] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[85], }, { /* [136] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[81], - }, - { - /* [137] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[81], - }, - { - /* [138] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[129], - }, - { - /* [139] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[131], - }, - { - /* [140] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], - }, - { - /* [141] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[55], }, { - /* [142] */ - /* usage */ ParameterUsage::kDepthRef, + /* [137] */ + /* usage */ ParameterUsage::kBias, /* matcher indices */ &kMatcherIndices[12], }, + { + /* [138] */ + /* usage */ ParameterUsage::kComponent, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [139] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[125], + }, + { + /* [140] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], + }, + { + /* [141] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [142] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], + }, { /* [143] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[133], }, { /* [144] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[132], }, { /* [145] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[85], }, { /* [146] */ @@ -2525,12 +2525,12 @@ constexpr ParameterInfo kParameters[] = { { /* [147] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[83], + /* matcher indices */ &kMatcherIndices[87], }, { /* [148] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[89], }, { /* [149] */ @@ -2540,22 +2540,22 @@ constexpr ParameterInfo kParameters[] = { { /* [150] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[91], }, { /* [151] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kBias, + /* matcher indices */ &kMatcherIndices[12], }, { /* [152] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[83], + /* matcher indices */ &kMatcherIndices[95], }, { /* [153] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[130], }, { /* [154] */ @@ -2565,47 +2565,47 @@ constexpr ParameterInfo kParameters[] = { { /* [155] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[85], }, { /* [156] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[91], - }, - { - /* [157] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[91], - }, - { - /* [158] */ - /* usage */ ParameterUsage::kComponent, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [159] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[125], - }, - { - /* [160] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], - }, - { - /* [161] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], - }, - { - /* [162] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[55], }, + { + /* [157] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[87], + }, + { + /* [158] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[93], + }, + { + /* [159] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], + }, + { + /* [160] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[85], + }, + { + /* [161] */ + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [162] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[87], + }, { /* [163] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[97], + /* matcher indices */ &kMatcherIndices[83], }, { /* [164] */ @@ -2615,17 +2615,17 @@ constexpr ParameterInfo kParameters[] = { { /* [165] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[85], }, { /* [166] */ - /* usage */ ParameterUsage::kDdx, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [167] */ - /* usage */ ParameterUsage::kDdy, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[12], }, { /* [168] */ @@ -2645,7 +2645,7 @@ constexpr ParameterInfo kParameters[] = { { /* [171] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[85], }, { /* [172] */ @@ -2665,78 +2665,78 @@ constexpr ParameterInfo kParameters[] = { { /* [175] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[85], }, { /* [176] */ - /* usage */ ParameterUsage::kLevel, + /* usage */ ParameterUsage::kBias, /* matcher indices */ &kMatcherIndices[12], }, { /* [177] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[83], + /* matcher indices */ &kMatcherIndices[87], }, { /* [178] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[85], - }, - { - /* [179] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], - }, - { - /* [180] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], - }, - { - /* [181] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [182] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [183] */ /* usage */ ParameterUsage::kComponent, /* matcher indices */ &kMatcherIndices[55], }, { - /* [184] */ + /* [179] */ /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[115], }, { - /* [185] */ + /* [180] */ /* usage */ ParameterUsage::kSampler, /* matcher indices */ &kMatcherIndices[135], }, { - /* [186] */ + /* [181] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[85], }, { - /* [187] */ + /* [182] */ /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[83], + /* matcher indices */ &kMatcherIndices[87], }, { - /* [188] */ + /* [183] */ /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[89], }, { - /* [189] */ + /* [184] */ /* usage */ ParameterUsage::kSampler, /* matcher indices */ &kMatcherIndices[135], }, + { + /* [185] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [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, @@ -2744,13 +2744,13 @@ constexpr ParameterInfo kParameters[] = { }, { /* [191] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [192] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[95], + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], }, { /* [193] */ @@ -2780,7 +2780,7 @@ constexpr ParameterInfo kParameters[] = { { /* [198] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[99], }, { /* [199] */ @@ -2790,22 +2790,22 @@ constexpr ParameterInfo kParameters[] = { { /* [200] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[91], }, { /* [201] */ - /* usage */ ParameterUsage::kLevel, + /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[55], }, { /* [202] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[83], + /* usage */ ParameterUsage::kBias, + /* matcher indices */ &kMatcherIndices[12], }, { /* [203] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[131], }, { /* [204] */ @@ -2815,7 +2815,7 @@ constexpr ParameterInfo kParameters[] = { { /* [205] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[91], }, { /* [206] */ @@ -2830,7 +2830,7 @@ constexpr ParameterInfo kParameters[] = { { /* [208] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[133], }, { /* [209] */ @@ -2840,22 +2840,22 @@ constexpr ParameterInfo kParameters[] = { { /* [210] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[85], }, { /* [211] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [212] */ /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[55], }, + { + /* [212] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[87], + }, { /* [213] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[97], }, { /* [214] */ @@ -2865,42 +2865,42 @@ constexpr ParameterInfo kParameters[] = { { /* [215] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[91], }, { /* [216] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kDdx, + /* matcher indices */ &kMatcherIndices[91], }, { /* [217] */ - /* usage */ ParameterUsage::kBias, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kDdy, + /* matcher indices */ &kMatcherIndices[91], }, { /* [218] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* matcher indices */ &kMatcherIndices[130], }, { /* [219] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[135], }, { /* [220] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[85], }, { /* [221] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [222] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[129], }, { /* [223] */ @@ -2914,13 +2914,13 @@ constexpr ParameterInfo kParameters[] = { }, { /* [225] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[95], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [226] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[99], + /* matcher indices */ &kMatcherIndices[133], }, { /* [227] */ @@ -2930,17 +2930,17 @@ constexpr ParameterInfo kParameters[] = { { /* [228] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[85], }, { /* [229] */ - /* usage */ ParameterUsage::kArrayIndex, + /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[55], }, { /* [230] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[97], }, { /* [231] */ @@ -2950,17 +2950,17 @@ constexpr ParameterInfo kParameters[] = { { /* [232] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[91], }, { /* [233] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[83], + /* usage */ ParameterUsage::kBias, + /* matcher indices */ &kMatcherIndices[12], }, { /* [234] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[97], }, { /* [235] */ @@ -2970,37 +2970,37 @@ constexpr ParameterInfo kParameters[] = { { /* [236] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[91], }, { /* [237] */ /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* matcher indices */ &kMatcherIndices[12], }, { /* [238] */ - /* usage */ ParameterUsage::kComponent, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[89], }, { /* [239] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[115], - }, - { - /* [240] */ /* usage */ ParameterUsage::kSampler, /* matcher indices */ &kMatcherIndices[135], }, { - /* [241] */ + /* [240] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [241] */ + /* usage */ ParameterUsage::kBias, + /* matcher indices */ &kMatcherIndices[12], }, { /* [242] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[97], + /* matcher indices */ &kMatcherIndices[89], }, { /* [243] */ @@ -3019,28 +3019,28 @@ constexpr ParameterInfo kParameters[] = { }, { /* [246] */ - /* usage */ ParameterUsage::kComponent, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[69], }, { /* [247] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[123], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[87], }, { /* [248] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [249] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[81], }, { /* [250] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[89], + /* matcher indices */ &kMatcherIndices[93], }, { /* [251] */ @@ -3050,17 +3050,17 @@ constexpr ParameterInfo kParameters[] = { { /* [252] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[85], }, { /* [253] */ - /* usage */ ParameterUsage::kLevel, + /* usage */ ParameterUsage::kBias, /* matcher indices */ &kMatcherIndices[12], }, { /* [254] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[131], }, { /* [255] */ @@ -3070,7 +3070,7 @@ constexpr ParameterInfo kParameters[] = { { /* [256] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[91], }, { /* [257] */ @@ -3080,7 +3080,7 @@ constexpr ParameterInfo kParameters[] = { { /* [258] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[93], }, { /* [259] */ @@ -3090,32 +3090,32 @@ constexpr ParameterInfo kParameters[] = { { /* [260] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[85], }, { /* [261] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[83], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[12], }, { /* [262] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* matcher indices */ &kMatcherIndices[57], }, { /* [263] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[87], }, { /* [264] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [265] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[107], }, { /* [266] */ @@ -3125,42 +3125,42 @@ constexpr ParameterInfo kParameters[] = { { /* [267] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[135], }, { /* [268] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[85], }, { /* [269] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[87], }, { /* [270] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[93], + /* matcher indices */ &kMatcherIndices[129], }, { /* [271] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* matcher indices */ &kMatcherIndices[132], }, { /* [272] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[91], }, { /* [273] */ - /* usage */ ParameterUsage::kLevel, + /* usage */ ParameterUsage::kDepthRef, /* matcher indices */ &kMatcherIndices[12], }, { /* [274] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[93], + /* matcher indices */ &kMatcherIndices[99], }, { /* [275] */ @@ -3170,57 +3170,57 @@ constexpr ParameterInfo kParameters[] = { { /* [276] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[91], }, { /* [277] */ - /* usage */ ParameterUsage::kBias, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [278] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], - }, - { - /* [279] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[83], - }, - { - /* [280] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[55], }, { - /* [281] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [282] */ + /* [278] */ /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[89], }, { - /* [283] */ + /* [279] */ /* usage */ ParameterUsage::kSampler, /* matcher indices */ &kMatcherIndices[135], }, { - /* [284] */ + /* [280] */ /* usage */ ParameterUsage::kCoords, /* matcher indices */ &kMatcherIndices[91], }, + { + /* [281] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[95], + }, + { + /* [282] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[45], + }, + { + /* [283] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[87], + }, + { + /* [284] */ + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], + }, { /* [285] */ - /* usage */ ParameterUsage::kBias, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[109], }, { /* [286] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[83], }, { /* [287] */ @@ -3230,7 +3230,7 @@ constexpr ParameterInfo kParameters[] = { { /* [288] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[85], }, { /* [289] */ @@ -3240,7 +3240,7 @@ constexpr ParameterInfo kParameters[] = { { /* [290] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[93], }, { /* [291] */ @@ -3250,387 +3250,387 @@ constexpr ParameterInfo kParameters[] = { { /* [292] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[85], }, { /* [293] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[87], }, { /* [294] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[57], - }, - { - /* [295] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[83], - }, - { - /* [296] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [297] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[107], - }, - { - /* [298] */ - /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[129], }, { - /* [299] */ + /* [295] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* matcher indices */ &kMatcherIndices[132], }, { - /* [300] */ + /* [296] */ /* usage */ ParameterUsage::kCoords, /* matcher indices */ &kMatcherIndices[91], }, { - /* [301] */ + /* [297] */ + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [298] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[117], + }, + { + /* [299] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[87], + }, + { + /* [300] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[55], }, + { + /* [301] */ + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], + }, { /* [302] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[97], + /* matcher indices */ &kMatcherIndices[133], }, { /* [303] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* matcher indices */ &kMatcherIndices[132], }, { /* [304] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[85], }, { /* [305] */ - /* usage */ ParameterUsage::kBias, + /* usage */ ParameterUsage::kDepthRef, /* matcher indices */ &kMatcherIndices[12], }, { /* [306] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[131], }, { /* [307] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[135], }, { /* [308] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[91], }, { /* [309] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [310] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[45], - }, - { - /* [311] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[83], - }, - { - /* [312] */ /* usage */ ParameterUsage::kArrayIndex, /* matcher indices */ &kMatcherIndices[55], }, + { + /* [310] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[129], + }, + { + /* [311] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[132], + }, + { + /* [312] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], + }, { /* [313] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[109], + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], }, { /* [314] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[85], + /* matcher indices */ &kMatcherIndices[130], }, { /* [315] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[87], }, { /* [316] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [317] */ - /* usage */ ParameterUsage::kArrayIndex, + /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[55], }, { /* [318] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* matcher indices */ &kMatcherIndices[130], }, { /* [319] */ /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[131], + /* matcher indices */ &kMatcherIndices[135], }, { /* [320] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[85], }, { /* [321] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kArrayIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [322] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], + /* usage */ ParameterUsage::kComponent, + /* matcher indices */ &kMatcherIndices[55], }, { /* [323] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[131], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[123], }, { /* [324] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], }, { /* [325] */ - /* usage */ ParameterUsage::kDepthRef, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], }, { /* [326] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[69], + /* matcher indices */ &kMatcherIndices[133], }, { /* [327] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[83], - }, - { - /* [328] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [329] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[87], - }, - { - /* [330] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[117], - }, - { - /* [331] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[83], - }, - { - /* [332] */ - /* usage */ ParameterUsage::kArrayIndex, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [333] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [334] */ - /* usage */ ParameterUsage::kTexture, + /* usage */ ParameterUsage::kSampler, /* matcher indices */ &kMatcherIndices[132], }, { - /* [335] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[131], - }, - { - /* [336] */ + /* [328] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[85], }, { - /* [337] */ + /* [329] */ /* usage */ ParameterUsage::kDepthRef, /* matcher indices */ &kMatcherIndices[12], }, { - /* [338] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[93], - }, - { - /* [339] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], - }, - { - /* [340] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], - }, - { - /* [341] */ - /* usage */ ParameterUsage::kOffset, - /* matcher indices */ &kMatcherIndices[83], - }, - { - /* [342] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[119], - }, - { - /* [343] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[95], - }, - { - /* [344] */ - /* usage */ ParameterUsage::kLevel, + /* [330] */ + /* usage */ ParameterUsage::kComponent, /* matcher indices */ &kMatcherIndices[55], }, { - /* [345] */ + /* [331] */ /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[115], }, { - /* [346] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[83], - }, - { - /* [347] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [348] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [349] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [350] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [351] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[42], - }, - { - /* [352] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[95], - }, - { - /* [353] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[109], - }, - { - /* [354] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[48], - }, - { - /* [355] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[83], - }, - { - /* [356] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[109], - }, - { - /* [357] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], - }, - { - /* [358] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[83], - }, - { - /* [359] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [360] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[51], - }, - { - /* [361] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [362] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[109], - }, - { - /* [363] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], - }, - { - /* [364] */ + /* [332] */ /* usage */ ParameterUsage::kSampler, /* matcher indices */ &kMatcherIndices[135], }, { - /* [365] */ + /* [333] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[85], + }, + { + /* [334] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[133], + }, + { + /* [335] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], + }, + { + /* [336] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[85], + }, + { + /* [337] */ + /* usage */ ParameterUsage::kOffset, + /* matcher indices */ &kMatcherIndices[87], + }, + { + /* [338] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[133], + }, + { + /* [339] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[132], + }, + { + /* [340] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[85], + }, + { + /* [341] */ + /* usage */ ParameterUsage::kDepthRef, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [342] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[39], + }, + { + /* [343] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[39], + }, + { + /* [344] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[39], + }, + { + /* [345] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [346] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [347] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [348] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [349] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [350] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [351] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[136], + }, + { + /* [352] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], + }, + { + /* [353] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[85], + }, + { + /* [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] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], + }, + { + /* [359] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[85], + }, + { + /* [360] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[134], + }, + { + /* [361] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[87], + }, + { + /* [362] */ + /* usage */ ParameterUsage::kSampleIndex, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [363] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [364] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], + }, + { + /* [365] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [366] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[54], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[0], }, { /* [367] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[95], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [368] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[107], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [369] */ @@ -3665,162 +3665,162 @@ constexpr ParameterInfo kParameters[] = { { /* [375] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[121], + /* matcher indices */ &kMatcherIndices[72], }, { /* [376] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[83], + /* matcher indices */ &kMatcherIndices[87], }, { /* [377] */ - /* usage */ ParameterUsage::kSampleIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[81], }, { /* [378] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], - }, - { - /* [379] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [380] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [381] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[60], - }, - { - /* [382] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[83], - }, - { - /* [383] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[107], - }, - { - /* [384] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[63], - }, - { - /* [385] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[55], - }, - { - /* [386] */ - /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[107], - }, - { - /* [387] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], - }, - { - /* [388] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], - }, - { - /* [389] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], - }, - { - /* [390] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [391] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [392] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], - }, - { - /* [393] */ /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[66], }, { - /* [394] */ + /* [379] */ /* usage */ ParameterUsage::kCoords, /* matcher indices */ &kMatcherIndices[95], }, { - /* [395] */ + /* [380] */ /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[81], + }, + { + /* [381] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[133], + }, + { + /* [382] */ + /* usage */ ParameterUsage::kCoords, /* matcher indices */ &kMatcherIndices[87], }, { - /* [396] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[127], + /* [383] */ + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { - /* [397] */ + /* [384] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[129], + }, + { + /* [385] */ /* usage */ ParameterUsage::kSampler, /* matcher indices */ &kMatcherIndices[135], }, { - /* [398] */ + /* [386] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [387] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[63], + }, + { + /* [388] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[55], + }, + { + /* [389] */ + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[107], + }, + { + /* [390] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[60], + }, + { + /* [391] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[87], + }, + { + /* [392] */ + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[107], + }, + { + /* [393] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[129], + }, + { + /* [394] */ + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], + }, + { + /* [395] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[91], + }, + { + /* [396] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[121], + }, + { + /* [397] */ + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[87], + }, + { + /* [398] */ + /* usage */ ParameterUsage::kSampleIndex, + /* matcher indices */ &kMatcherIndices[55], }, { /* [399] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[119], }, { /* [400] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[95], }, { /* [401] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [402] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[39], }, { /* [403] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[39], }, { /* [404] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[24], }, { /* [405] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [406] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [407] */ @@ -3844,38 +3844,38 @@ constexpr ParameterInfo kParameters[] = { }, { /* [411] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [412] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [413] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], }, { /* [414] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[54], }, { /* [415] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[83], + /* matcher indices */ &kMatcherIndices[95], }, { /* [416] */ - /* usage */ ParameterUsage::kSampleIndex, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[107], }, { /* [417] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[133], }, { /* [418] */ @@ -3885,27 +3885,27 @@ constexpr ParameterInfo kParameters[] = { { /* [419] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[85], }, { /* [420] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[72], + /* matcher indices */ &kMatcherIndices[51], }, { /* [421] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[83], + /* matcher indices */ &kMatcherIndices[55], }, { /* [422] */ /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[109], }, { /* [423] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[97], }, { /* [424] */ @@ -3915,27 +3915,27 @@ constexpr ParameterInfo kParameters[] = { { /* [425] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[91], }, { /* [426] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[75], + /* matcher indices */ &kMatcherIndices[48], }, { /* [427] */ /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[55], + /* matcher indices */ &kMatcherIndices[87], }, { /* [428] */ /* usage */ ParameterUsage::kValue, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[109], }, { /* [429] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[97], + /* matcher indices */ &kMatcherIndices[89], }, { /* [430] */ @@ -3950,108 +3950,108 @@ constexpr ParameterInfo kParameters[] = { { /* [432] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[93], + /* matcher indices */ &kMatcherIndices[42], }, { /* [433] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[95], }, { /* [434] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], + /* usage */ ParameterUsage::kValue, + /* matcher indices */ &kMatcherIndices[109], }, { /* [435] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], - }, - { - /* [436] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], - }, - { - /* [437] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[24], - }, - { - /* [438] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[136], - }, - { - /* [439] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], - }, - { - /* [440] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[81], - }, - { - /* [441] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[89], - }, - { - /* [442] */ - /* usage */ ParameterUsage::kSampler, - /* matcher indices */ &kMatcherIndices[135], - }, - { - /* [443] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[91], - }, - { - /* [444] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], - }, - { - /* [445] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], - }, - { - /* [446] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[10], - }, - { - /* [447] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [448] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], - }, - { - /* [449] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[10], - }, - { - /* [450] */ /* usage */ ParameterUsage::kTexture, /* matcher indices */ &kMatcherIndices[111], }, { - /* [451] */ + /* [436] */ /* usage */ ParameterUsage::kCoords, /* matcher indices */ &kMatcherIndices[55], }, { - /* [452] */ + /* [437] */ /* usage */ ParameterUsage::kLevel, /* matcher indices */ &kMatcherIndices[55], }, + { + /* [438] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[39], + }, + { + /* [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], + }, + { + /* [451] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], + }, + { + /* [452] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], + }, { /* [453] */ /* usage */ ParameterUsage::kNone, @@ -4069,38 +4069,38 @@ constexpr ParameterInfo kParameters[] = { }, { /* [456] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[127], }, { /* [457] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* usage */ ParameterUsage::kSampler, + /* matcher indices */ &kMatcherIndices[135], }, { /* [458] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[12], }, { /* [459] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[12], }, { /* [460] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[55], }, { /* [461] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[0], }, { /* [462] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[1], }, { /* [463] */ @@ -4145,7 +4145,7 @@ constexpr ParameterInfo kParameters[] = { { /* [471] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[1], }, { /* [472] */ @@ -4155,92 +4155,92 @@ constexpr ParameterInfo kParameters[] = { { /* [473] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[21], }, { /* [474] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[21], }, { /* [475] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[12], }, { /* [476] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[12], }, { /* [477] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[39], }, { /* [478] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[39], }, { /* [479] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[1], }, { /* [480] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[1], }, { /* [481] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[91], }, { /* [482] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[91], }, { /* [483] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[21], }, { /* [484] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[78], }, { /* [485] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [486] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[78], + /* matcher indices */ &kMatcherIndices[12], }, { /* [487] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[21], }, { /* [488] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[21], }, { /* [489] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[136], }, { /* [490] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kCoords, + /* matcher indices */ &kMatcherIndices[87], }, { /* [491] */ @@ -4250,47 +4250,47 @@ constexpr ParameterInfo kParameters[] = { { /* [492] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[55], + /* matcher indices */ &kMatcherIndices[12], }, { /* [493] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[136], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [494] */ - /* usage */ ParameterUsage::kCoords, - /* matcher indices */ &kMatcherIndices[83], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [495] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[0], }, { /* [496] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[91], + /* matcher indices */ &kMatcherIndices[1], }, { /* [497] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[39], }, { /* [498] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[39], }, { /* [499] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[0], }, { /* [500] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[1], }, { /* [501] */ @@ -4305,12 +4305,12 @@ constexpr ParameterInfo kParameters[] = { { /* [503] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[0], }, { /* [504] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[1], }, { /* [505] */ @@ -4345,7 +4345,7 @@ constexpr ParameterInfo kParameters[] = { { /* [511] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[119], + /* matcher indices */ &kMatcherIndices[131], }, { /* [512] */ @@ -4355,7 +4355,7 @@ constexpr ParameterInfo kParameters[] = { { /* [513] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[117], }, { /* [514] */ @@ -4365,7 +4365,7 @@ constexpr ParameterInfo kParameters[] = { { /* [515] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[133], + /* matcher indices */ &kMatcherIndices[130], }, { /* [516] */ @@ -4375,7 +4375,7 @@ constexpr ParameterInfo kParameters[] = { { /* [517] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[133], }, { /* [518] */ @@ -4385,7 +4385,7 @@ constexpr ParameterInfo kParameters[] = { { /* [519] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[125], }, { /* [520] */ @@ -4394,18 +4394,18 @@ constexpr ParameterInfo kParameters[] = { }, { /* [521] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[111], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[0], }, { /* [522] */ - /* usage */ ParameterUsage::kLevel, - /* matcher indices */ &kMatcherIndices[55], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[1], }, { /* [523] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[125], + /* matcher indices */ &kMatcherIndices[123], }, { /* [524] */ @@ -4415,7 +4415,7 @@ constexpr ParameterInfo kParameters[] = { { /* [525] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[115], + /* matcher indices */ &kMatcherIndices[111], }, { /* [526] */ @@ -4425,7 +4425,7 @@ constexpr ParameterInfo kParameters[] = { { /* [527] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[123], + /* matcher indices */ &kMatcherIndices[119], }, { /* [528] */ @@ -4434,18 +4434,18 @@ constexpr ParameterInfo kParameters[] = { }, { /* [529] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[115], }, { /* [530] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* usage */ ParameterUsage::kLevel, + /* matcher indices */ &kMatcherIndices[55], }, { /* [531] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[117], + /* matcher indices */ &kMatcherIndices[129], }, { /* [532] */ @@ -4454,59 +4454,59 @@ constexpr ParameterInfo kParameters[] = { }, { /* [533] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[119], - }, - { - /* [534] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[123], - }, - { - /* [535] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[117], - }, - { - /* [536] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[125], - }, - { - /* [537] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[115], - }, - { - /* [538] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[121], - }, - { - /* [539] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], - }, - { - /* [540] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[111], - }, - { - /* [541] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], - }, - { - /* [542] */ /* usage */ ParameterUsage::kNone, /* matcher indices */ &kMatcherIndices[39], }, { - /* [543] */ + /* [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], }, + { + /* [542] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[43], + }, + { + /* [543] */ + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[130], + }, { /* [544] */ /* usage */ ParameterUsage::kNone, @@ -4525,82 +4525,82 @@ constexpr ParameterInfo kParameters[] = { { /* [547] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[131], }, { /* [548] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[36], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[43], }, { /* [549] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[33], + /* matcher indices */ &kMatcherIndices[134], }, { /* [550] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[36], }, { /* [551] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[27], + /* matcher indices */ &kMatcherIndices[33], }, { /* [552] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[136], + /* matcher indices */ &kMatcherIndices[30], }, { /* [553] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[43], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[27], }, { /* [554] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[43], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[136], }, { /* [555] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[43], + /* matcher indices */ &kMatcherIndices[21], }, { /* [556] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [557] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[13], }, { /* [558] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[13], + /* matcher indices */ &kMatcherIndices[21], }, { /* [559] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [560] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[21], }, { /* [561] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [562] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[21], }, { /* [563] */ @@ -4629,8 +4629,8 @@ constexpr ParameterInfo kParameters[] = { }, { /* [568] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[117], }, { /* [569] */ @@ -4644,68 +4644,68 @@ constexpr ParameterInfo kParameters[] = { }, { /* [571] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[117], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[21], }, { /* [572] */ - /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[125], + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], }, { /* [573] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[117], }, { /* [574] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[125], }, { /* [575] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[30], + /* matcher indices */ &kMatcherIndices[130], }, { /* [576] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[111], + /* matcher indices */ &kMatcherIndices[131], }, { /* [577] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[115], + /* matcher indices */ &kMatcherIndices[30], }, { /* [578] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[117], + /* matcher indices */ &kMatcherIndices[111], }, { /* [579] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[119], + /* matcher indices */ &kMatcherIndices[115], }, { /* [580] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[123], + /* matcher indices */ &kMatcherIndices[117], }, { /* [581] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[125], + /* matcher indices */ &kMatcherIndices[119], }, { /* [582] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[132], + /* matcher indices */ &kMatcherIndices[123], }, { /* [583] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[130], + /* matcher indices */ &kMatcherIndices[125], }, { /* [584] */ @@ -4715,82 +4715,82 @@ constexpr ParameterInfo kParameters[] = { { /* [585] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[129], + /* matcher indices */ &kMatcherIndices[130], }, { /* [586] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[121], + /* matcher indices */ &kMatcherIndices[129], }, { /* [587] */ /* usage */ ParameterUsage::kTexture, - /* matcher indices */ &kMatcherIndices[134], + /* matcher indices */ &kMatcherIndices[131], }, { /* [588] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[121], }, { /* [589] */ - /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* usage */ ParameterUsage::kTexture, + /* matcher indices */ &kMatcherIndices[134], }, { /* [590] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[1], }, { /* [591] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[39], + /* matcher indices */ &kMatcherIndices[21], }, { /* [592] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[1], + /* matcher indices */ &kMatcherIndices[12], }, { /* [593] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[81], }, { /* [594] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[81], }, { /* [595] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[85], }, { /* [596] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[87], + /* matcher indices */ &kMatcherIndices[85], }, { /* [597] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[85], }, { /* [598] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[21], }, { /* [599] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[81], + /* matcher indices */ &kMatcherIndices[21], }, { /* [600] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[12], }, { /* [601] */ @@ -4935,12 +4935,12 @@ constexpr ParameterInfo kParameters[] = { { /* [629] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[21], + /* matcher indices */ &kMatcherIndices[39], }, { /* [630] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[1], }, { /* [631] */ @@ -5125,17 +5125,17 @@ constexpr ParameterInfo kParameters[] = { { /* [667] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[0], + /* matcher indices */ &kMatcherIndices[12], }, { /* [668] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[12], + /* matcher indices */ &kMatcherIndices[4], }, { /* [669] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[4], + /* matcher indices */ &kMatcherIndices[0], }, { /* [670] */ @@ -5165,6 +5165,16 @@ constexpr ParameterInfo kParameters[] = { { /* [675] */ /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[12], + }, + { + /* [676] */ + /* usage */ ParameterUsage::kNone, + /* matcher indices */ &kMatcherIndices[39], + }, + { + /* [677] */ + /* usage */ ParameterUsage::kNone, /* matcher indices */ &kMatcherIndices[1], }, }; @@ -5233,7 +5243,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[540], + /* parameters */ &kParameters[537], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5245,7 +5255,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[521], + /* parameters */ &kParameters[525], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5257,8 +5267,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[537], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[535], + /* return matcher indices */ &kMatcherIndices[87], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5269,8 +5279,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[525], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[529], + /* return matcher indices */ &kMatcherIndices[87], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5281,8 +5291,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[535], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[568], + /* return matcher indices */ &kMatcherIndices[87], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5293,8 +5303,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[531], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[513], + /* return matcher indices */ &kMatcherIndices[87], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5305,7 +5315,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[533], + /* parameters */ &kParameters[534], /* return matcher indices */ &kMatcherIndices[95], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5317,7 +5327,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[511], + /* parameters */ &kParameters[527], /* return matcher indices */ &kMatcherIndices[95], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5329,8 +5339,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[534], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[536], + /* return matcher indices */ &kMatcherIndices[87], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5341,8 +5351,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[527], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[523], + /* return matcher indices */ &kMatcherIndices[87], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5353,8 +5363,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[536], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[538], + /* return matcher indices */ &kMatcherIndices[87], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5365,8 +5375,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[523], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[519], + /* return matcher indices */ &kMatcherIndices[87], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5377,8 +5387,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[538], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[540], + /* return matcher indices */ &kMatcherIndices[87], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5389,8 +5399,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[539], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[541], + /* return matcher indices */ &kMatcherIndices[87], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5401,8 +5411,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[519], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[517], + /* return matcher indices */ &kMatcherIndices[87], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5413,8 +5423,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[541], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[543], + /* return matcher indices */ &kMatcherIndices[87], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5425,8 +5435,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[517], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[515], + /* return matcher indices */ &kMatcherIndices[87], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5437,8 +5447,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[543], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[545], + /* return matcher indices */ &kMatcherIndices[87], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5449,8 +5459,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[515], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[531], + /* return matcher indices */ &kMatcherIndices[87], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5461,8 +5471,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[545], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[547], + /* return matcher indices */ &kMatcherIndices[87], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5473,8 +5483,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[513], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[511], + /* return matcher indices */ &kMatcherIndices[87], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5485,8 +5495,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[547], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[549], + /* return matcher indices */ &kMatcherIndices[87], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5497,7 +5507,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 2, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[0], - /* parameters */ &kParameters[548], + /* parameters */ &kParameters[550], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5509,8 +5519,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 2, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[0], - /* parameters */ &kParameters[549], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[551], + /* return matcher indices */ &kMatcherIndices[87], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5521,8 +5531,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 2, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[0], - /* parameters */ &kParameters[550], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[552], + /* return matcher indices */ &kMatcherIndices[87], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5533,7 +5543,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 2, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[0], - /* parameters */ &kParameters[551], + /* parameters */ &kParameters[553], /* return matcher indices */ &kMatcherIndices[95], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5545,8 +5555,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[552], - /* return matcher indices */ &kMatcherIndices[83], + /* parameters */ &kParameters[554], + /* return matcher indices */ &kMatcherIndices[87], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5557,8 +5567,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[270], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[258], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5569,8 +5579,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[173], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[158], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5581,8 +5591,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[178], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[163], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5593,8 +5603,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[13], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[55], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5605,8 +5615,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[250], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[242], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5617,8 +5627,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[188], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[183], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5629,8 +5639,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[242], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[234], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5642,7 +5652,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[193], - /* return matcher indices */ &kMatcherIndices[87], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5653,7 +5663,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[234], + /* parameters */ &kParameters[226], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5665,7 +5675,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[198], + /* parameters */ &kParameters[208], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5677,7 +5687,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[203], + /* parameters */ &kParameters[113], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5689,7 +5699,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[61], + /* parameters */ &kParameters[13], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5701,7 +5711,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[262], + /* parameters */ &kParameters[222], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5713,7 +5723,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[208], + /* parameters */ &kParameters[203], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5725,8 +5735,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[438], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[351], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -5737,8 +5747,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[396], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[456], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -5749,8 +5759,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[432], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[447], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -5761,8 +5771,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[338], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[290], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -5773,8 +5783,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[314], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[286], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -5785,8 +5795,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[113], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[118], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -5797,8 +5807,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[441], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[429], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -5809,8 +5819,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[222], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[278], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -5821,8 +5831,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[429], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[423], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -5833,8 +5843,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[226], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[274], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -5845,7 +5855,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[423], + /* parameters */ &kParameters[417], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -5857,7 +5867,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[230], + /* parameters */ &kParameters[266], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -5869,7 +5879,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, @@ -5881,7 +5891,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[103], + /* parameters */ &kParameters[153], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -5893,7 +5903,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[411], + /* parameters */ &kParameters[384], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -5905,7 +5915,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[286], + /* parameters */ &kParameters[254], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -5917,7 +5927,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[238], + /* parameters */ &kParameters[330], /* return matcher indices */ &kMatcherIndices[113], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5929,7 +5939,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[183], + /* parameters */ &kParameters[178], /* return matcher indices */ &kMatcherIndices[113], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5965,7 +5975,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[246], + /* parameters */ &kParameters[322], /* return matcher indices */ &kMatcherIndices[113], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5977,7 +5987,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[158], + /* parameters */ &kParameters[138], /* return matcher indices */ &kMatcherIndices[113], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -5989,8 +5999,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[417], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[357], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6001,8 +6011,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[258], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[334], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6013,8 +6023,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[290], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[318], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6025,8 +6035,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[148], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[93], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6037,8 +6047,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[363], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[393], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6049,8 +6059,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[298], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[306], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6061,119 +6071,119 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[426], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [70] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[420], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [71] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[326], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [72] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[393], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [73] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[384], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [74] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[381], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [75] */ - /* num parameters */ 4, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[294], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [76] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[366], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [77] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[360], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [78] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[354], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, + { + /* [70] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[375], + /* return matcher indices */ nullptr, + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [71] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[246], + /* return matcher indices */ nullptr, + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [72] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[378], + /* return matcher indices */ nullptr, + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [73] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[387], + /* return matcher indices */ nullptr, + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [74] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[390], + /* return matcher indices */ nullptr, + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [75] */ + /* num parameters */ 4, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[262], + /* return matcher indices */ nullptr, + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [76] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[414], + /* return matcher indices */ nullptr, + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [77] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[420], + /* return matcher indices */ nullptr, + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [78] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[426], + /* return matcher indices */ nullptr, + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, { /* [79] */ /* num parameters */ 4, @@ -6181,7 +6191,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[310], + /* parameters */ &kParameters[282], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6193,7 +6203,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[351], + /* parameters */ &kParameters[432], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6205,7 +6215,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[576], + /* parameters */ &kParameters[578], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6217,7 +6227,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[577], + /* parameters */ &kParameters[579], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6229,7 +6239,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[578], + /* parameters */ &kParameters[580], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6241,7 +6251,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[579], + /* parameters */ &kParameters[581], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6253,7 +6263,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[580], + /* parameters */ &kParameters[582], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6265,7 +6275,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[581], + /* parameters */ &kParameters[583], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6277,7 +6287,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[582], + /* parameters */ &kParameters[584], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6289,7 +6299,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[583], + /* parameters */ &kParameters[585], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6301,7 +6311,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[584], + /* parameters */ &kParameters[586], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6313,7 +6323,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[585], + /* parameters */ &kParameters[587], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6325,7 +6335,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[450], + /* parameters */ &kParameters[435], /* return matcher indices */ &kMatcherIndices[113], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6337,7 +6347,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[345], + /* parameters */ &kParameters[444], /* return matcher indices */ &kMatcherIndices[113], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6349,7 +6359,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[330], + /* parameters */ &kParameters[298], /* return matcher indices */ &kMatcherIndices[113], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6361,7 +6371,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[342], + /* parameters */ &kParameters[399], /* return matcher indices */ &kMatcherIndices[113], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6373,7 +6383,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[375], + /* parameters */ &kParameters[396], /* return matcher indices */ &kMatcherIndices[113], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6385,7 +6395,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[357], + /* parameters */ &kParameters[381], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6397,7 +6407,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[278], + /* parameters */ &kParameters[314], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6409,7 +6419,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[414], + /* parameters */ &kParameters[360], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6421,8 +6431,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[493], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[489], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6433,8 +6443,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[133], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[78], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6445,8 +6455,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[49], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[67], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6457,8 +6467,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[37], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[61], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6470,7 +6480,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[0], - /* return matcher indices */ &kMatcherIndices[87], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6481,8 +6491,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[153], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[128], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6493,8 +6503,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[31], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[43], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6505,8 +6515,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[163], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[213], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6517,8 +6527,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[19], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[37], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6529,8 +6539,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[274], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[250], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -6541,8 +6551,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[78], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[173], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -6553,8 +6563,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[213], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[133], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -6565,8 +6575,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[7], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[19], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -6577,8 +6587,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[282], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[238], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -6589,8 +6599,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[83], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[148], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -6601,8 +6611,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[302], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[230], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -6613,8 +6623,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[88], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[198], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, @@ -6625,8 +6635,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[322], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[302], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6638,7 +6648,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[143], - /* return matcher indices */ &kMatcherIndices[87], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6649,8 +6659,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[123], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[83], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6661,8 +6671,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[43], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[7], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6673,8 +6683,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[266], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[294], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6685,8 +6695,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[138], - /* return matcher indices */ &kMatcherIndices[87], + /* parameters */ &kParameters[103], + /* return matcher indices */ &kMatcherIndices[81], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -6697,7 +6707,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[334], + /* parameters */ &kParameters[326], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6721,7 +6731,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[118], + /* parameters */ &kParameters[123], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6733,7 +6743,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[55], + /* parameters */ &kParameters[31], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6745,7 +6755,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[318], + /* parameters */ &kParameters[310], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6757,7 +6767,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[128], + /* parameters */ &kParameters[88], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6769,7 +6779,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[306], + /* parameters */ &kParameters[338], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -6781,7 +6791,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[93], + /* parameters */ &kParameters[108], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -6805,7 +6815,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[67], + /* parameters */ &kParameters[49], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -6817,7 +6827,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[218], + /* parameters */ &kParameters[270], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -6829,7 +6839,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[108], + /* parameters */ &kParameters[188], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, @@ -6841,7 +6851,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[571], + /* parameters */ &kParameters[573], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6853,7 +6863,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[572], + /* parameters */ &kParameters[574], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6865,7 +6875,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[573], + /* parameters */ &kParameters[575], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6877,7 +6887,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[574], + /* parameters */ &kParameters[576], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6889,7 +6899,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 2, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[0], - /* parameters */ &kParameters[575], + /* parameters */ &kParameters[577], /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6901,7 +6911,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[399], + /* parameters */ &kParameters[405], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6913,7 +6923,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[402], + /* parameters */ &kParameters[408], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6925,7 +6935,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[405], + /* parameters */ &kParameters[411], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6937,7 +6947,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[3], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[447], + /* parameters */ &kParameters[441], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6949,7 +6959,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[3], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[444], + /* parameters */ &kParameters[438], /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -6961,7 +6971,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[3], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[435], + /* parameters */ &kParameters[402], /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7045,7 +7055,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[497], + /* parameters */ &kParameters[485], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7057,7 +7067,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[499], + /* parameters */ &kParameters[487], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7329,53 +7339,29 @@ constexpr OverloadInfo kOverloads[] = { { /* [175] */ /* num parameters */ 1, - /* num open types */ 0, + /* num open types */ 1, /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], + /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[630], - /* return matcher indices */ &kMatcherIndices[12], + /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [176] */ /* num parameters */ 1, - /* num open types */ 0, + /* num open types */ 1, /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], + /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[3], /* parameters */ &kParameters[629], - /* return matcher indices */ &kMatcherIndices[21], + /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [177] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[372], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [178] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[369], - /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [179] */ /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, @@ -7387,7 +7373,7 @@ constexpr OverloadInfo kOverloads[] = { /* is_deprecated */ false, }, { - /* [180] */ + /* [178] */ /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 1, @@ -7398,6 +7384,30 @@ constexpr OverloadInfo kOverloads[] = { /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, + { + /* [179] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[345], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [180] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[369], + /* return matcher indices */ &kMatcherIndices[21], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, { /* [181] */ /* num parameters */ 1, @@ -7406,7 +7416,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[626], - /* return matcher indices */ &kMatcherIndices[138], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7418,7 +7428,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], /* parameters */ &kParameters[625], - /* return matcher indices */ &kMatcherIndices[103], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7430,8 +7440,8 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[624], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* return matcher indices */ &kMatcherIndices[138], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { @@ -7442,8 +7452,8 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], /* parameters */ &kParameters[623], - /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), + /* return matcher indices */ &kMatcherIndices[101], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { @@ -7503,7 +7513,7 @@ constexpr OverloadInfo kOverloads[] = { /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[618], /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, { @@ -7515,7 +7525,7 @@ constexpr OverloadInfo kOverloads[] = { /* open numbers */ &kOpenNumbers[3], /* parameters */ &kParameters[617], /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment), /* is_deprecated */ false, }, { @@ -7526,9 +7536,9 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[616], - /* return matcher indices */ &kMatcherIndices[10], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ true, + /* is_deprecated */ false, }, { /* [192] */ @@ -7538,9 +7548,9 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], /* parameters */ &kParameters[615], - /* return matcher indices */ &kMatcherIndices[24], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ true, + /* is_deprecated */ false, }, { /* [193] */ @@ -7616,52 +7626,52 @@ constexpr OverloadInfo kOverloads[] = { }, { /* [199] */ - /* num parameters */ 2, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[491], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [200] */ - /* num parameters */ 2, - /* num open types */ 0, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[485], - /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [201] */ /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[608], - /* return matcher indices */ &kMatcherIndices[12], + /* return matcher indices */ &kMatcherIndices[10], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, + /* is_deprecated */ true, }, { - /* [202] */ + /* [200] */ /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], /* parameters */ &kParameters[607], + /* return matcher indices */ &kMatcherIndices[24], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ true, + }, + { + /* [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, @@ -7682,7 +7692,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], /* parameters */ &kParameters[605], - /* return matcher indices */ &kMatcherIndices[21], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7712,25 +7722,25 @@ constexpr OverloadInfo kOverloads[] = { }, { /* [207] */ - /* 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[481], - /* return matcher indices */ &kMatcherIndices[1], + /* parameters */ &kParameters[602], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [208] */ - /* 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[479], - /* return matcher indices */ &kMatcherIndices[39], + /* parameters */ &kParameters[601], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7741,7 +7751,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[473], + /* parameters */ &kParameters[479], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7753,13 +7763,37 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[0], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[469], + /* parameters */ &kParameters[477], /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [211] */ + /* num parameters */ 2, + /* num open types */ 1, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[471], + /* return matcher indices */ &kMatcherIndices[1], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [212] */ + /* num parameters */ 2, + /* num open types */ 1, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[469], + /* 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 open numbers */ 0, @@ -7771,7 +7805,7 @@ constexpr OverloadInfo kOverloads[] = { /* is_deprecated */ false, }, { - /* [212] */ + /* [214] */ /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 1, @@ -7783,55 +7817,55 @@ constexpr OverloadInfo kOverloads[] = { /* is_deprecated */ false, }, { - /* [213] */ + /* [215] */ /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[602], + /* parameters */ &kParameters[600], /* return matcher indices */ &kMatcherIndices[137], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { - /* [214] */ + /* [216] */ /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[601], - /* return matcher indices */ &kMatcherIndices[101], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [215] */ - /* num parameters */ 3, - /* num open types */ 1, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[0], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[348], - /* return matcher indices */ &kMatcherIndices[1], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [216] */ - /* num parameters */ 3, - /* num open types */ 1, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[0], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[456], - /* return matcher indices */ &kMatcherIndices[39], + /* parameters */ &kParameters[599], + /* return matcher indices */ &kMatcherIndices[103], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [217] */ + /* num parameters */ 3, + /* num open types */ 1, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[450], + /* return matcher indices */ &kMatcherIndices[1], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [218] */ + /* num parameters */ 3, + /* num open types */ 1, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[342], + /* return matcher indices */ &kMatcherIndices[39], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [219] */ /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, @@ -7843,7 +7877,7 @@ constexpr OverloadInfo kOverloads[] = { /* is_deprecated */ false, }, { - /* [218] */ + /* [220] */ /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 1, @@ -7854,30 +7888,6 @@ constexpr OverloadInfo kOverloads[] = { /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, - { - /* [219] */ - /* num parameters */ 1, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[568], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [220] */ - /* num parameters */ 1, - /* num open types */ 0, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[566], - /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, { /* [221] */ /* num parameters */ 1, @@ -7885,7 +7895,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[560], + /* parameters */ &kParameters[565], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7897,7 +7907,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[559], + /* parameters */ &kParameters[564], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7905,12 +7915,12 @@ constexpr OverloadInfo kOverloads[] = { { /* [223] */ /* 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[586], - /* return matcher indices */ &kMatcherIndices[55], + /* parameters */ &kParameters[559], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7918,35 +7928,35 @@ constexpr OverloadInfo kOverloads[] = { /* [224] */ /* 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[587], - /* return matcher indices */ &kMatcherIndices[55], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[558], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [225] */ - /* 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[483], - /* return matcher indices */ &kMatcherIndices[12], + /* parameters */ &kParameters[588], + /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [226] */ - /* 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[461], - /* return matcher indices */ &kMatcherIndices[21], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[589], + /* return matcher indices */ &kMatcherIndices[55], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -7957,7 +7967,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[467], + /* parameters */ &kParameters[475], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -7969,31 +7979,31 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[465], + /* parameters */ &kParameters[473], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [229] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[594], + /* parameters */ &kParameters[467], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [230] */ - /* num parameters */ 1, + /* num parameters */ 2, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[593], + /* parameters */ &kParameters[465], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8005,7 +8015,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[665], + /* parameters */ &kParameters[592], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8017,7 +8027,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[664], + /* parameters */ &kParameters[591], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8029,7 +8039,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[668], + /* parameters */ &kParameters[665], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8041,7 +8051,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[666], + /* parameters */ &kParameters[664], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8049,48 +8059,48 @@ constexpr OverloadInfo kOverloads[] = { { /* [235] */ /* 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[592], - /* return matcher indices */ &kMatcherIndices[1], + /* parameters */ &kParameters[667], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [236] */ /* 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[591], - /* return matcher indices */ &kMatcherIndices[39], + /* parameters */ &kParameters[666], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [237] */ /* 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[567], - /* return matcher indices */ &kMatcherIndices[12], + /* parameters */ &kParameters[590], + /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [238] */ /* 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[590], - /* return matcher indices */ &kMatcherIndices[21], + /* parameters */ &kParameters[533], + /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -8101,13 +8111,37 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[572], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [240] */ + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[571], + /* return matcher indices */ &kMatcherIndices[21], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [241] */ + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[671], /* return matcher indices */ &kMatcherIndices[10], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { - /* [240] */ + /* [242] */ /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 1, @@ -8118,30 +8152,6 @@ constexpr OverloadInfo kOverloads[] = { /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, - { - /* [241] */ - /* num parameters */ 1, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[589], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [242] */ - /* num parameters */ 1, - /* num open types */ 0, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[588], - /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, { /* [243] */ /* num parameters */ 1, @@ -8173,13 +8183,37 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[567], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [246] */ + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[566], + /* return matcher indices */ &kMatcherIndices[21], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [247] */ + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[673], /* return matcher indices */ &kMatcherIndices[10], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { - /* [246] */ + /* [248] */ /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 1, @@ -8190,80 +8224,32 @@ constexpr OverloadInfo kOverloads[] = { /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, - { - /* [247] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[390], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [248] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[387], - /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, { /* [249] */ - /* num parameters */ 1, + /* num parameters */ 3, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[565], + /* parameters */ &kParameters[372], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [250] */ - /* num parameters */ 1, + /* num parameters */ 3, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[564], + /* parameters */ &kParameters[363], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [251] */ - /* num parameters */ 2, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[487], - /* return matcher indices */ &kMatcherIndices[12], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [252] */ - /* num parameters */ 2, - /* num open types */ 0, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[489], - /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [253] */ /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, @@ -8275,13 +8261,37 @@ constexpr OverloadInfo kOverloads[] = { /* is_deprecated */ false, }, { - /* [254] */ + /* [252] */ /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[674], + /* parameters */ &kParameters[562], + /* return matcher indices */ &kMatcherIndices[21], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [253] */ + /* num parameters */ 2, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[491], + /* return matcher indices */ &kMatcherIndices[12], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [254] */ + /* num parameters */ 2, + /* num open types */ 0, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[493], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8293,7 +8303,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[562], + /* parameters */ &kParameters[675], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8305,7 +8315,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[561], + /* parameters */ &kParameters[674], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8317,7 +8327,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[557], + /* parameters */ &kParameters[561], /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8329,7 +8339,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[556], + /* parameters */ &kParameters[560], /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8337,48 +8347,48 @@ constexpr OverloadInfo kOverloads[] = { { /* [259] */ /* 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[675], - /* return matcher indices */ &kMatcherIndices[1], + /* parameters */ &kParameters[556], + /* return matcher indices */ &kMatcherIndices[12], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [260] */ /* 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[542], - /* return matcher indices */ &kMatcherIndices[39], + /* parameters */ &kParameters[555], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [261] */ /* num parameters */ 1, - /* num open types */ 0, - /* num open numbers */ 2, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[2], - /* parameters */ &kParameters[558], - /* return matcher indices */ &kMatcherIndices[9], + /* num open types */ 1, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[677], + /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [262] */ /* num parameters */ 1, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[555], - /* return matcher indices */ &kMatcherIndices[81], + /* num open types */ 1, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[0], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[676], + /* return matcher indices */ &kMatcherIndices[39], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -8386,11 +8396,11 @@ constexpr OverloadInfo kOverloads[] = { /* [263] */ /* 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[554], - /* return matcher indices */ &kMatcherIndices[81], + /* open numbers */ &kOpenNumbers[2], + /* parameters */ &kParameters[557], + /* return matcher indices */ &kMatcherIndices[9], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -8401,8 +8411,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[553], - /* return matcher indices */ &kMatcherIndices[81], + /* parameters */ &kParameters[548], + /* return matcher indices */ &kMatcherIndices[85], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -8414,7 +8424,7 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[546], - /* return matcher indices */ &kMatcherIndices[87], + /* return matcher indices */ &kMatcherIndices[85], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -8426,84 +8436,60 @@ constexpr OverloadInfo kOverloads[] = { /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], /* parameters */ &kParameters[544], - /* return matcher indices */ &kMatcherIndices[87], + /* return matcher indices */ &kMatcherIndices[85], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [267] */ - /* num parameters */ 0, + /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[676], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kCompute), + /* parameters */ &kParameters[542], + /* return matcher indices */ &kMatcherIndices[81], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [268] */ + /* num parameters */ 1, + /* num open types */ 0, + /* num open numbers */ 0, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[539], + /* 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[676], + /* parameters */ &kParameters[678], /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kCompute), /* is_deprecated */ false, }, { - /* [269] */ - /* num parameters */ 1, + /* [270] */ + /* num parameters */ 0, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[598], - /* return matcher indices */ &kMatcherIndices[43], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [270] */ - /* num parameters */ 3, - /* num open types */ 0, - /* num open numbers */ 1, - /* 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), + /* parameters */ &kParameters[678], + /* return matcher indices */ nullptr, + /* supported_stages */ PipelineStageSet(PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [271] */ - /* num parameters */ 2, - /* num open types */ 0, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[3], - /* parameters */ &kParameters[463], - /* return matcher indices */ &kMatcherIndices[21], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [272] */ - /* num parameters */ 1, - /* num open types */ 0, - /* num open numbers */ 0, - /* open types */ &kOpenTypes[4], - /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[595], - /* return matcher indices */ &kMatcherIndices[43], - /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [273] */ /* num parameters */ 1, /* num open types */ 0, /* num open numbers */ 0, @@ -8514,6 +8500,30 @@ constexpr OverloadInfo kOverloads[] = { /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, + { + /* [272] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 1, + /* 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), + /* is_deprecated */ false, + }, + { + /* [273] */ + /* num parameters */ 2, + /* num open types */ 0, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[463], + /* return matcher indices */ &kMatcherIndices[21], + /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, { /* [274] */ /* num parameters */ 1, @@ -8521,7 +8531,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[597], + /* parameters */ &kParameters[593], /* return matcher indices */ &kMatcherIndices[43], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8533,7 +8543,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[599], + /* parameters */ &kParameters[594], /* return matcher indices */ &kMatcherIndices[43], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8542,40 +8552,64 @@ constexpr OverloadInfo kOverloads[] = { /* [276] */ /* 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[600], - /* return matcher indices */ &kMatcherIndices[21], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[595], + /* return matcher indices */ &kMatcherIndices[43], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [277] */ - /* 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[408], - /* return matcher indices */ &kMatcherIndices[21], + /* open numbers */ &kOpenNumbers[6], + /* parameters */ &kParameters[597], + /* return matcher indices */ &kMatcherIndices[43], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [278] */ - /* 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[503], - /* return matcher indices */ &kMatcherIndices[1], + /* parameters */ &kParameters[598], + /* return matcher indices */ &kMatcherIndices[21], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { /* [279] */ + /* num parameters */ 3, + /* num open types */ 0, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[4], + /* open numbers */ &kOpenNumbers[3], + /* parameters */ &kParameters[348], + /* return matcher indices */ &kMatcherIndices[21], + /* 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, @@ -8587,61 +8621,37 @@ constexpr OverloadInfo kOverloads[] = { /* is_deprecated */ false, }, { - /* [280] */ + /* [282] */ /* num parameters */ 2, /* num open types */ 0, /* num open numbers */ 0, /* open types */ &kOpenTypes[4], /* open numbers */ &kOpenNumbers[6], - /* parameters */ &kParameters[495], + /* parameters */ &kParameters[481], /* return matcher indices */ &kMatcherIndices[91], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { - /* [281] */ + /* [283] */ /* num parameters */ 1, /* num open types */ 1, /* num open numbers */ 1, /* open types */ &kOpenTypes[2], /* open numbers */ &kOpenNumbers[4], - /* parameters */ &kParameters[669], + /* parameters */ &kParameters[668], /* return matcher indices */ &kMatcherIndices[43], /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, { - /* [282] */ + /* [284] */ /* num parameters */ 1, /* num open types */ 1, /* num open numbers */ 1, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[667], - /* return matcher indices */ &kMatcherIndices[1], - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [283] */ - /* num parameters */ 2, - /* num open types */ 1, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[1], - /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[529], - /* return matcher indices */ nullptr, - /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), - /* is_deprecated */ false, - }, - { - /* [284] */ - /* num parameters */ 2, - /* num open types */ 1, - /* num open numbers */ 1, - /* open types */ &kOpenTypes[1], - /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[471], + /* parameters */ &kParameters[669], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8653,8 +8663,8 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[475], - /* return matcher indices */ &kMatcherIndices[1], + /* parameters */ &kParameters[495], + /* return matcher indices */ nullptr, /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, }, @@ -8665,7 +8675,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[477], + /* parameters */ &kParameters[499], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8677,7 +8687,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[459], + /* parameters */ &kParameters[501], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8689,7 +8699,7 @@ constexpr OverloadInfo kOverloads[] = { /* num open numbers */ 1, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[501], + /* parameters */ &kParameters[503], /* return matcher indices */ &kMatcherIndices[1], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8732,12 +8742,36 @@ constexpr OverloadInfo kOverloads[] = { }, { /* [292] */ + /* num parameters */ 2, + /* num open types */ 1, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[1], + /* open numbers */ &kOpenNumbers[5], + /* parameters */ &kParameters[521], + /* return matcher indices */ &kMatcherIndices[1], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [293] */ + /* num parameters */ 2, + /* num open types */ 1, + /* num open numbers */ 1, + /* open types */ &kOpenTypes[1], + /* open numbers */ &kOpenNumbers[5], + /* parameters */ &kParameters[461], + /* return matcher indices */ &kMatcherIndices[1], + /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), + /* is_deprecated */ false, + }, + { + /* [294] */ /* num parameters */ 3, /* num open types */ 1, /* num open numbers */ 1, /* open types */ &kOpenTypes[1], /* open numbers */ &kOpenNumbers[5], - /* parameters */ &kParameters[378], + /* parameters */ &kParameters[366], /* return matcher indices */ &kMatcherIndices[105], /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute), /* is_deprecated */ false, @@ -8750,76 +8784,76 @@ constexpr BuiltinInfo kBuiltins[] = { /* fn abs(T) -> T */ /* fn abs(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[259], + /* overloads */ &kOverloads[261], }, { /* [1] */ /* fn acos(f32) -> f32 */ /* fn acos(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[253], + /* overloads */ &kOverloads[255], }, { /* [2] */ /* fn all(bool) -> bool */ /* fn all(vec) -> bool */ /* num overloads */ 2, - /* overloads */ &kOverloads[245], + /* overloads */ &kOverloads[247], }, { /* [3] */ /* fn any(bool) -> bool */ /* fn any(vec) -> bool */ /* num overloads */ 2, - /* overloads */ &kOverloads[239], + /* overloads */ &kOverloads[241], }, { /* [4] */ /* fn arrayLength(ptr, A>) -> u32 */ /* num overloads */ 1, - /* overloads */ &kOverloads[281], + /* overloads */ &kOverloads[283], }, { /* [5] */ /* fn asin(f32) -> f32 */ /* fn asin(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[233], + /* overloads */ &kOverloads[235], }, { /* [6] */ /* fn atan(f32) -> f32 */ /* fn atan(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[231], + /* overloads */ &kOverloads[233], }, { /* [7] */ /* fn atan2(f32, f32) -> f32 */ /* fn atan2(vec, vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[225], + /* overloads */ &kOverloads[227], }, { /* [8] */ /* fn ceil(f32) -> f32 */ /* fn ceil(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[217], + /* overloads */ &kOverloads[219], }, { /* [9] */ /* fn clamp(T, T, T) -> T */ /* fn clamp(vec, vec, vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[215], + /* overloads */ &kOverloads[217], }, { /* [10] */ /* fn cos(f32) -> f32 */ /* fn cos(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[211], + /* overloads */ &kOverloads[213], }, { /* [11] */ @@ -8853,7 +8887,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* [15] */ /* fn cross(vec3, vec3) -> vec3 */ /* num overloads */ 1, - /* overloads */ &kOverloads[280], + /* overloads */ &kOverloads[282], }, { /* [16] */ @@ -8866,7 +8900,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* [17] */ /* fn determinant(mat) -> f32 */ /* num overloads */ 1, - /* overloads */ &kOverloads[279], + /* overloads */ &kOverloads[281], }, { /* [18] */ @@ -8879,7 +8913,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* [19] */ /* fn dot(vec, vec) -> T */ /* num overloads */ 1, - /* overloads */ &kOverloads[278], + /* overloads */ &kOverloads[280], }, { /* [20] */ @@ -8941,143 +8975,150 @@ constexpr BuiltinInfo kBuiltins[] = { /* [28] */ /* fn faceForward(vec, vec, vec) -> vec */ /* num overloads */ 1, - /* overloads */ &kOverloads[277], + /* overloads */ &kOverloads[279], }, { /* [29] */ - /* fn firstTrailingBit(T) -> T */ - /* fn firstTrailingBit(vec) -> vec */ + /* fn firstLeadingBit(T) -> T */ + /* fn firstLeadingBit(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[173], }, { /* [30] */ - /* fn floor(f32) -> f32 */ - /* fn floor(vec) -> vec */ + /* fn firstTrailingBit(T) -> T */ + /* fn firstTrailingBit(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[175], }, { /* [31] */ - /* 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[177], }, { /* [32] */ - /* 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[179], }, { /* [33] */ - /* fn frexp(f32) -> __frexp_result */ - /* fn frexp(vec) -> __frexp_result_vec */ + /* fn fract(f32) -> f32 */ + /* fn fract(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[181], }, { /* [34] */ - /* fn fwidth(f32) -> f32 */ - /* fn fwidth(vec) -> vec */ + /* fn frexp(f32) -> __frexp_result */ + /* fn frexp(vec) -> __frexp_result_vec */ /* num overloads */ 2, /* overloads */ &kOverloads[183], }, { /* [35] */ - /* fn fwidthCoarse(f32) -> f32 */ - /* fn fwidthCoarse(vec) -> vec */ + /* fn fwidth(f32) -> f32 */ + /* fn fwidth(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[185], }, { /* [36] */ - /* fn fwidthFine(f32) -> f32 */ - /* fn fwidthFine(vec) -> vec */ + /* fn fwidthCoarse(f32) -> f32 */ + /* fn fwidthCoarse(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[145], }, { /* [37] */ - /* fn inverseSqrt(f32) -> f32 */ - /* fn inverseSqrt(vec) -> vec */ + /* fn fwidthFine(f32) -> f32 */ + /* fn fwidthFine(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[189], }, { /* [38] */ - /* fn isFinite(f32) -> bool */ - /* fn isFinite(vec) -> vec */ + /* fn inverseSqrt(f32) -> f32 */ + /* fn inverseSqrt(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[191], }, { /* [39] */ - /* fn isInf(f32) -> bool */ - /* fn isInf(vec) -> vec */ + /* fn isFinite(f32) -> bool */ + /* fn isFinite(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[193], }, { /* [40] */ - /* fn isNan(f32) -> bool */ - /* fn isNan(vec) -> vec */ + /* fn isInf(f32) -> bool */ + /* fn isInf(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[195], }, { /* [41] */ - /* fn isNormal(f32) -> bool */ - /* fn isNormal(vec) -> vec */ + /* fn isNan(f32) -> bool */ + /* fn isNan(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[197], }, { /* [42] */ - /* fn ldexp(f32, i32) -> f32 */ - /* fn ldexp(vec, vec) -> vec */ + /* fn isNormal(f32) -> bool */ + /* fn isNormal(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[199], }, { /* [43] */ - /* fn length(f32) -> f32 */ - /* fn length(vec) -> f32 */ + /* fn ldexp(f32, i32) -> f32 */ + /* fn ldexp(vec, vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[201], }, { /* [44] */ - /* fn log(f32) -> f32 */ - /* fn log(vec) -> vec */ + /* fn length(f32) -> f32 */ + /* fn length(vec) -> f32 */ /* num overloads */ 2, /* overloads */ &kOverloads[203], }, { /* [45] */ - /* fn log2(f32) -> f32 */ - /* fn log2(vec) -> vec */ + /* fn log(f32) -> f32 */ + /* fn log(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[205], }, { /* [46] */ - /* fn max(T, T) -> T */ - /* fn max(vec, vec) -> vec */ + /* fn log2(f32) -> f32 */ + /* fn log2(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[207], }, { /* [47] */ - /* 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[209], }, { /* [48] */ + /* fn min(T, T) -> T */ + /* fn min(vec, vec) -> vec */ + /* num overloads */ 2, + /* overloads */ &kOverloads[211], + }, + { + /* [49] */ /* fn mix(f32, f32, f32) -> f32 */ /* fn mix(vec, vec, vec) -> vec */ /* fn mix(vec, vec, f32) -> vec */ @@ -9085,90 +9126,90 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[139], }, { - /* [49] */ + /* [50] */ /* fn modf(f32) -> __modf_result */ /* fn modf(vec) -> __modf_result_vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[213], + /* overloads */ &kOverloads[215], }, { - /* [50] */ + /* [51] */ /* fn normalize(vec) -> vec */ /* num overloads */ 1, + /* overloads */ &kOverloads[278], + }, + { + /* [52] */ + /* fn pack2x16float(vec2) -> u32 */ + /* num overloads */ 1, + /* overloads */ &kOverloads[277], + }, + { + /* [53] */ + /* fn pack2x16snorm(vec2) -> u32 */ + /* num overloads */ 1, + /* overloads */ &kOverloads[271], + }, + { + /* [54] */ + /* fn pack2x16unorm(vec2) -> u32 */ + /* num overloads */ 1, /* overloads */ &kOverloads[276], }, { - /* [51] */ - /* fn pack2x16float(vec2) -> u32 */ + /* [55] */ + /* fn pack4x8snorm(vec4) -> u32 */ /* num overloads */ 1, /* overloads */ &kOverloads[275], }, { - /* [52] */ - /* fn pack2x16snorm(vec2) -> u32 */ - /* num overloads */ 1, - /* overloads */ &kOverloads[269], - }, - { - /* [53] */ - /* fn pack2x16unorm(vec2) -> u32 */ + /* [56] */ + /* fn pack4x8unorm(vec4) -> u32 */ /* num overloads */ 1, /* overloads */ &kOverloads[274], }, { - /* [54] */ - /* fn pack4x8snorm(vec4) -> u32 */ - /* num overloads */ 1, - /* overloads */ &kOverloads[273], - }, - { - /* [55] */ - /* fn pack4x8unorm(vec4) -> u32 */ - /* num overloads */ 1, - /* overloads */ &kOverloads[272], - }, - { - /* [56] */ + /* [57] */ /* fn pow(f32, f32) -> f32 */ /* fn pow(vec, vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[227], - }, - { - /* [57] */ - /* fn radians(f32) -> f32 */ - /* fn radians(vec) -> vec */ - /* num overloads */ 2, /* overloads */ &kOverloads[229], }, { /* [58] */ - /* fn reflect(vec, vec) -> vec */ - /* num overloads */ 1, - /* overloads */ &kOverloads[271], + /* fn radians(f32) -> f32 */ + /* fn radians(vec) -> vec */ + /* num overloads */ 2, + /* overloads */ &kOverloads[231], }, { /* [59] */ - /* fn refract(vec, vec, f32) -> vec */ + /* fn reflect(vec, vec) -> vec */ /* num overloads */ 1, - /* overloads */ &kOverloads[270], + /* overloads */ &kOverloads[273], }, { /* [60] */ - /* fn reverseBits(T) -> T */ - /* fn reverseBits(vec) -> vec */ - /* num overloads */ 2, - /* overloads */ &kOverloads[235], + /* fn refract(vec, vec, f32) -> vec */ + /* num overloads */ 1, + /* overloads */ &kOverloads[272], }, { /* [61] */ - /* fn round(f32) -> f32 */ - /* fn round(vec) -> vec */ + /* fn reverseBits(T) -> T */ + /* fn reverseBits(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[237], }, { /* [62] */ + /* fn round(f32) -> f32 */ + /* fn round(vec) -> vec */ + /* num overloads */ 2, + /* overloads */ &kOverloads[239], + }, + { + /* [63] */ /* fn select(T, T, bool) -> T */ /* fn select(vec, vec, bool) -> vec */ /* fn select(vec, vec, vec) -> vec */ @@ -9176,118 +9217,118 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[142], }, { - /* [63] */ + /* [64] */ /* fn sign(f32) -> f32 */ /* fn sign(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[241], - }, - { - /* [64] */ - /* fn sin(f32) -> f32 */ - /* fn sin(vec) -> vec */ - /* num overloads */ 2, /* overloads */ &kOverloads[243], }, { /* [65] */ - /* fn sinh(f32) -> f32 */ - /* fn sinh(vec) -> vec */ + /* fn sin(f32) -> f32 */ + /* fn sin(vec) -> vec */ /* num overloads */ 2, - /* overloads */ &kOverloads[219], + /* overloads */ &kOverloads[245], }, { /* [66] */ - /* 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[247], + /* overloads */ &kOverloads[221], }, { /* [67] */ - /* 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[249], }, { /* [68] */ - /* fn step(f32, f32) -> f32 */ - /* fn step(vec, vec) -> vec */ + /* fn sqrt(f32) -> f32 */ + /* fn sqrt(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[251], }, { /* [69] */ - /* fn storageBarrier() */ - /* num overloads */ 1, - /* overloads */ &kOverloads[268], + /* fn step(f32, f32) -> f32 */ + /* fn step(vec, vec) -> vec */ + /* num overloads */ 2, + /* overloads */ &kOverloads[253], }, { /* [70] */ - /* fn tan(f32) -> f32 */ - /* fn tan(vec) -> vec */ - /* num overloads */ 2, - /* overloads */ &kOverloads[255], + /* fn storageBarrier() */ + /* num overloads */ 1, + /* overloads */ &kOverloads[270], }, { /* [71] */ - /* fn tanh(f32) -> f32 */ - /* fn tanh(vec) -> vec */ - /* num overloads */ 2, - /* overloads */ &kOverloads[221], - }, - { - /* [72] */ - /* fn transpose(mat) -> mat */ - /* num overloads */ 1, - /* overloads */ &kOverloads[261], - }, - { - /* [73] */ - /* fn trunc(f32) -> f32 */ - /* fn trunc(vec) -> vec */ + /* fn tan(f32) -> f32 */ + /* fn tan(vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[257], }, { - /* [74] */ - /* fn unpack2x16float(u32) -> vec2 */ - /* num overloads */ 1, - /* overloads */ &kOverloads[262], + /* [72] */ + /* fn tanh(f32) -> f32 */ + /* fn tanh(vec) -> vec */ + /* num overloads */ 2, + /* overloads */ &kOverloads[223], }, { - /* [75] */ - /* fn unpack2x16snorm(u32) -> vec2 */ + /* [73] */ + /* fn transpose(mat) -> mat */ /* num overloads */ 1, /* overloads */ &kOverloads[263], }, { - /* [76] */ - /* fn unpack2x16unorm(u32) -> vec2 */ + /* [74] */ + /* fn trunc(f32) -> f32 */ + /* fn trunc(vec) -> vec */ + /* num overloads */ 2, + /* overloads */ &kOverloads[259], + }, + { + /* [75] */ + /* fn unpack2x16float(u32) -> vec2 */ /* num overloads */ 1, /* overloads */ &kOverloads[264], }, { - /* [77] */ - /* fn unpack4x8snorm(u32) -> vec4 */ + /* [76] */ + /* fn unpack2x16snorm(u32) -> vec2 */ /* num overloads */ 1, /* overloads */ &kOverloads[265], }, { - /* [78] */ - /* fn unpack4x8unorm(u32) -> vec4 */ + /* [77] */ + /* fn unpack2x16unorm(u32) -> vec2 */ /* num overloads */ 1, /* overloads */ &kOverloads[266], }, { - /* [79] */ - /* fn workgroupBarrier() */ + /* [78] */ + /* fn unpack4x8snorm(u32) -> vec4 */ /* num overloads */ 1, /* overloads */ &kOverloads[267], }, + { + /* [79] */ + /* fn unpack4x8unorm(u32) -> vec4 */ + /* num overloads */ 1, + /* overloads */ &kOverloads[268], + }, { /* [80] */ + /* fn workgroupBarrier() */ + /* num overloads */ 1, + /* overloads */ &kOverloads[269], + }, + { + /* [81] */ /* fn textureDimensions(texture: texture_1d) -> i32 */ /* fn textureDimensions(texture: texture_1d, level: i32) -> i32 */ /* fn textureDimensions(texture: texture_2d) -> vec2 */ @@ -9319,7 +9360,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[0], }, { - /* [81] */ + /* [82] */ /* 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 */ @@ -9336,7 +9377,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[57], }, { - /* [82] */ + /* [83] */ /* 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 */ @@ -9347,7 +9388,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[116], }, { - /* [83] */ + /* [84] */ /* fn textureNumLayers(texture: texture_2d_array) -> i32 */ /* fn textureNumLayers(texture: texture_cube_array) -> i32 */ /* fn textureNumLayers(texture: texture_depth_2d_array) -> i32 */ @@ -9357,7 +9398,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[134], }, { - /* [84] */ + /* [85] */ /* fn textureNumLevels(texture: texture_1d) -> i32 */ /* fn textureNumLevels(texture: texture_2d) -> i32 */ /* fn textureNumLevels(texture: texture_2d_array) -> i32 */ @@ -9372,14 +9413,14 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[81], }, { - /* [85] */ + /* [86] */ /* fn textureNumSamples(texture: texture_multisampled_2d) -> i32 */ /* fn textureNumSamples(texture: texture_depth_multisampled_2d) -> i32 */ /* num overloads */ 2, - /* overloads */ &kOverloads[223], + /* overloads */ &kOverloads[225], }, { - /* [86] */ + /* [87] */ /* 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 */ @@ -9399,7 +9440,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[42], }, { - /* [87] */ + /* [88] */ /* 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 */ @@ -9412,7 +9453,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[108], }, { - /* [88] */ + /* [89] */ /* 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 */ @@ -9423,7 +9464,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[128], }, { - /* [89] */ + /* [90] */ /* 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 */ @@ -9434,7 +9475,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[122], }, { - /* [90] */ + /* [91] */ /* 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 */ @@ -9447,7 +9488,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[100], }, { - /* [91] */ + /* [92] */ /* 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 */ @@ -9467,7 +9508,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[27], }, { - /* [92] */ + /* [93] */ /* 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) */ @@ -9484,7 +9525,7 @@ constexpr BuiltinInfo kBuiltins[] = { /* overloads */ &kOverloads[69], }, { - /* [93] */ + /* [94] */ /* 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 */ @@ -9497,72 +9538,72 @@ constexpr BuiltinInfo kBuiltins[] = { /* num overloads */ 9, /* overloads */ &kOverloads[91], }, - { - /* [94] */ - /* fn atomicLoad(ptr, read_write>) -> T */ - /* num overloads */ 1, - /* overloads */ &kOverloads[282], - }, { /* [95] */ - /* fn atomicStore(ptr, read_write>, T) */ - /* num overloads */ 1, - /* overloads */ &kOverloads[283], - }, - { - /* [96] */ - /* fn atomicAdd(ptr, read_write>, T) -> T */ + /* fn atomicLoad(ptr, read_write>) -> T */ /* num overloads */ 1, /* overloads */ &kOverloads[284], }, { - /* [97] */ - /* fn atomicSub(ptr, read_write>, T) -> T */ + /* [96] */ + /* fn atomicStore(ptr, read_write>, T) */ /* num overloads */ 1, /* overloads */ &kOverloads[285], }, { - /* [98] */ - /* fn atomicMax(ptr, read_write>, T) -> T */ + /* [97] */ + /* fn atomicAdd(ptr, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ &kOverloads[286], }, { - /* [99] */ - /* fn atomicMin(ptr, read_write>, T) -> T */ + /* [98] */ + /* fn atomicSub(ptr, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ &kOverloads[287], }, { - /* [100] */ - /* fn atomicAnd(ptr, read_write>, T) -> T */ + /* [99] */ + /* fn atomicMax(ptr, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ &kOverloads[288], }, { - /* [101] */ - /* fn atomicOr(ptr, read_write>, T) -> T */ + /* [100] */ + /* fn atomicMin(ptr, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ &kOverloads[289], }, { - /* [102] */ - /* fn atomicXor(ptr, read_write>, T) -> T */ + /* [101] */ + /* fn atomicAnd(ptr, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ &kOverloads[290], }, { - /* [103] */ - /* fn atomicExchange(ptr, read_write>, T) -> T */ + /* [102] */ + /* fn atomicOr(ptr, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ &kOverloads[291], }, { - /* [104] */ - /* fn atomicCompareExchangeWeak(ptr, read_write>, T, T) -> vec2 */ + /* [103] */ + /* fn atomicXor(ptr, read_write>, T) -> T */ /* num overloads */ 1, /* overloads */ &kOverloads[292], }, + { + /* [104] */ + /* fn atomicExchange(ptr, read_write>, T) -> T */ + /* num overloads */ 1, + /* overloads */ &kOverloads[293], + }, + { + /* [105] */ + /* fn atomicCompareExchangeWeak(ptr, read_write>, T, T) -> vec2 */ + /* num overloads */ 1, + /* overloads */ &kOverloads[294], + }, }; // clang-format on diff --git a/src/tint/builtins.def b/src/tint/builtins.def index 9b2dd71271..feb7f7adef 100644 --- a/src/tint/builtins.def +++ b/src/tint/builtins.def @@ -316,6 +316,8 @@ fn exp(vec) -> vec fn exp2(f32) -> f32 fn exp2(vec) -> vec fn faceForward(vec, vec, vec) -> vec +fn firstLeadingBit(T) -> T +fn firstLeadingBit(vec) -> vec fn firstTrailingBit(T) -> T fn firstTrailingBit(vec) -> vec fn floor(f32) -> f32 diff --git a/src/tint/program_builder.h b/src/tint/program_builder.h index 1647b06217..dc79eeac4b 100644 --- a/src/tint/program_builder.h +++ b/src/tint/program_builder.h @@ -1596,6 +1596,15 @@ class ProgramBuilder { Expr(std::forward(expr))); } + /// @param expr the expression to perform a unary complement on + /// @return an ast::UnaryOpExpression that is the unary complement of the + /// input expression + template + const ast::UnaryOpExpression* Complement(EXPR&& expr) { + return create(ast::UnaryOp::kComplement, + Expr(std::forward(expr))); + } + /// @param source the source information /// @param func the function name /// @param args the function call arguments diff --git a/src/tint/sem/builtin_type.cc b/src/tint/sem/builtin_type.cc index c19434d4b2..bd60a8f45f 100644 --- a/src/tint/sem/builtin_type.cc +++ b/src/tint/sem/builtin_type.cc @@ -117,6 +117,9 @@ BuiltinType ParseBuiltinType(const std::string& name) { if (name == "faceForward") { return BuiltinType::kFaceForward; } + if (name == "firstLeadingBit") { + return BuiltinType::kFirstLeadingBit; + } if (name == "firstTrailingBit") { return BuiltinType::kFirstTrailingBit; } @@ -410,6 +413,8 @@ const char* str(BuiltinType i) { return "exp2"; case BuiltinType::kFaceForward: return "faceForward"; + case BuiltinType::kFirstLeadingBit: + return "firstLeadingBit"; case BuiltinType::kFirstTrailingBit: return "firstTrailingBit"; case BuiltinType::kFloor: diff --git a/src/tint/sem/builtin_type.h b/src/tint/sem/builtin_type.h index 1a5d7e7d0a..a52bc1d24d 100644 --- a/src/tint/sem/builtin_type.h +++ b/src/tint/sem/builtin_type.h @@ -63,6 +63,7 @@ enum class BuiltinType { kExp, kExp2, kFaceForward, + kFirstLeadingBit, kFirstTrailingBit, kFloor, kFma, diff --git a/src/tint/transform/builtin_polyfill.cc b/src/tint/transform/builtin_polyfill.cc index 45e8995d84..3bc3af1fb0 100644 --- a/src/tint/transform/builtin_polyfill.cc +++ b/src/tint/transform/builtin_polyfill.cc @@ -55,10 +55,7 @@ struct BuiltinPolyfill::State { return b.ty.vec(width); }; auto V = [&](uint32_t value) -> const ast::Expression* { - if (width == 1) { - return b.Expr(value); - } - return b.Construct(b.ty.vec(width), value); + return ScalarOrVector(width, value); }; b.Func( name, {b.Param("v", T(ty))}, T(ty), @@ -120,10 +117,7 @@ struct BuiltinPolyfill::State { return b.ty.vec(width); }; auto V = [&](uint32_t value) -> const ast::Expression* { - if (width == 1) { - return b.Expr(value); - } - return b.Construct(b.ty.vec(width), value); + return ScalarOrVector(width, value); }; auto B = [&](const ast::Expression* value) -> const ast::Expression* { if (width == 1) { @@ -176,6 +170,87 @@ struct BuiltinPolyfill::State { 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 + Symbol firstLeadingBit(const sem::Type* ty) { + auto name = b.Symbols().New("tint_first_leading_bit"); + uint32_t width = WidthOf(ty); + + // Returns either u32 or vecN + auto U = [&]() -> const ast::Type* { + if (width == 1) { + return b.ty.u32(); + } + return b.ty.vec(width); + }; + auto V = [&](uint32_t value) -> const ast::Expression* { + return ScalarOrVector(width, value); + }; + auto B = [&](const ast::Expression* value) -> const ast::Expression* { + if (width == 1) { + return b.Construct(value); + } + return b.Construct(b.ty.vec(width), value); + }; + + const ast::Expression* x = nullptr; + if (ty->is_unsigned_scalar_or_vector()) { + x = b.Expr("v"); + } else { + // If ty is signed, then the value is inverted if the sign is negative + x = b.Call("select", // + b.Construct(U(), "v"), // + b.Construct(U(), b.Complement("v")), // + b.LessThan("v", ScalarOrVector(width, 0))); + } + + b.Func(name, {b.Param("v", T(ty))}, T(ty), + { + // var x = v; (unsigned) + // var x = select(U(v), ~U(v), v < 0); (signed) + b.Decl(b.Var("x", nullptr, x)), + // let b16 = select(0, 16, bool(x & 0xffff0000)); + b.Decl(b.Const("b16", nullptr, + b.Call("select", V(0), V(16), + B(b.And("x", V(0xffff0000)))))), + // x = x >> b16; + b.Assign("x", b.Shr("x", "b16")), + // let b8 = select(0, 8, bool(x & 0x0000ff00)); + b.Decl(b.Const( + "b8", nullptr, + b.Call("select", V(0), V(8), B(b.And("x", V(0x0000ff00)))))), + // x = x >> b8; + b.Assign("x", b.Shr("x", "b8")), + // let b4 = select(0, 4, bool(x & 0x000000f0)); + b.Decl(b.Const( + "b4", nullptr, + b.Call("select", V(0), V(4), B(b.And("x", V(0x000000f0)))))), + // x = x >> b4; + b.Assign("x", b.Shr("x", "b4")), + // let b2 = select(0, 2, bool(x & 0x0000000c)); + b.Decl(b.Const( + "b2", nullptr, + b.Call("select", V(0), V(2), B(b.And("x", V(0x0000000c)))))), + // x = x >> b2; + b.Assign("x", b.Shr("x", "b2")), + // let b1 = select(0, 1, bool(x & 0x00000002)); + b.Decl(b.Const( + "b1", nullptr, + b.Call("select", V(0), V(1), B(b.And("x", V(0x00000002)))))), + // let is_zero = select(0, 0xffffffff, x == 0); + b.Decl(b.Const("is_zero", nullptr, + b.Call("select", V(0), V(0xffffffff), + b.Equal("x", V(0))))), + // return R(b16 | b8 | b4 | b2 | b1 | zero); + b.Return(b.Construct( + T(ty), + b.Or(b.Or(b.Or(b.Or(b.Or("b16", "b8"), "b4"), "b2"), "b1"), + "is_zero"))), + }); + return name; + } + /// Builds the polyfill function for the `firstTrailingBit` builtin /// @param ty the parameter and return type for the function /// @return the polyfill function name @@ -191,10 +266,7 @@ struct BuiltinPolyfill::State { return b.ty.vec(width); }; auto V = [&](uint32_t value) -> const ast::Expression* { - if (width == 1) { - return b.Expr(value); - } - return b.Construct(b.ty.vec(width), value); + return ScalarOrVector(width, value); }; auto B = [&](const ast::Expression* value) -> const ast::Expression* { if (width == 1) { @@ -257,6 +329,13 @@ struct BuiltinPolyfill::State { } return 1; } + template + const ast::Expression* ScalarOrVector(uint32_t width, T value) const { + if (width == 1) { + return b.Expr(value); + } + return b.Construct(b.ty.vec(width), value); + } }; BuiltinPolyfill::BuiltinPolyfill() = default; @@ -282,6 +361,11 @@ bool BuiltinPolyfill::ShouldRun(const Program* program, return true; } break; + case sem::BuiltinType::kFirstLeadingBit: + if (builtins.first_leading_bit) { + return true; + } + break; case sem::BuiltinType::kFirstTrailingBit: if (builtins.first_trailing_bit) { return true; @@ -330,6 +414,13 @@ void BuiltinPolyfill::Run(CloneContext& ctx, }); } break; + case sem::BuiltinType::kFirstLeadingBit: + if (builtins.first_leading_bit) { + polyfill = utils::GetOrCreate(polyfills, builtin, [&] { + return s.firstLeadingBit(builtin->ReturnType()); + }); + } + break; case sem::BuiltinType::kFirstTrailingBit: if (builtins.first_trailing_bit) { polyfill = utils::GetOrCreate(polyfills, builtin, [&] { diff --git a/src/tint/transform/builtin_polyfill.h b/src/tint/transform/builtin_polyfill.h index b86e0e623e..ab3ee258b3 100644 --- a/src/tint/transform/builtin_polyfill.h +++ b/src/tint/transform/builtin_polyfill.h @@ -34,6 +34,8 @@ class BuiltinPolyfill : public Castable { bool count_leading_zeros = false; /// Should `countTrailingZeros()` be polyfilled? bool count_trailing_zeros = false; + /// Should `firstLeadingBit()` be polyfilled? + bool first_leading_bit = false; /// Should `firstTrailingBit()` be polyfilled? bool first_trailing_bit = false; }; diff --git a/src/tint/transform/builtin_polyfill_test.cc b/src/tint/transform/builtin_polyfill_test.cc index 155e6d693e..081c5b87bb 100644 --- a/src/tint/transform/builtin_polyfill_test.cc +++ b/src/tint/transform/builtin_polyfill_test.cc @@ -348,6 +348,160 @@ fn f() { EXPECT_EQ(expect, str(got)); } +//////////////////////////////////////////////////////////////////////////////// +// firstLeadingBit +//////////////////////////////////////////////////////////////////////////////// +DataMap polyfillFirstLeadingBit() { + BuiltinPolyfill::Builtins builtins; + builtins.first_leading_bit = true; + DataMap data; + data.Add(builtins); + return data; +} + +TEST_F(BuiltinPolyfillTest, ShouldRunFirstLeadingBit) { + auto* src = R"( +fn f() { + firstLeadingBit(0xf); +} +)"; + + EXPECT_FALSE(ShouldRun(src)); + EXPECT_TRUE(ShouldRun(src, polyfillFirstLeadingBit())); +} + +TEST_F(BuiltinPolyfillTest, FirstLeadingBit_i32) { + auto* src = R"( +fn f() { + let r : i32 = firstLeadingBit(15); +} +)"; + + auto* expect = R"( +fn tint_first_leading_bit(v : i32) -> i32 { + var x = select(u32(v), u32(~(v)), (v < 0)); + let b16 = select(0u, 16u, bool((x & 4294901760u))); + x = (x >> b16); + let b8 = select(0u, 8u, bool((x & 65280u))); + x = (x >> b8); + let b4 = select(0u, 4u, bool((x & 240u))); + x = (x >> b4); + let b2 = select(0u, 2u, bool((x & 12u))); + x = (x >> b2); + let b1 = select(0u, 1u, bool((x & 2u))); + let is_zero = select(0u, 4294967295u, (x == 0u)); + return i32((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +fn f() { + let r : i32 = tint_first_leading_bit(15); +} +)"; + + auto got = Run(src, polyfillFirstLeadingBit()); + + EXPECT_EQ(expect, str(got)); +} + +TEST_F(BuiltinPolyfillTest, FirstLeadingBit_u32) { + auto* src = R"( +fn f() { + let r : u32 = firstLeadingBit(15u); +} +)"; + + auto* expect = R"( +fn tint_first_leading_bit(v : u32) -> u32 { + var x = v; + let b16 = select(0u, 16u, bool((x & 4294901760u))); + x = (x >> b16); + let b8 = select(0u, 8u, bool((x & 65280u))); + x = (x >> b8); + let b4 = select(0u, 4u, bool((x & 240u))); + x = (x >> b4); + let b2 = select(0u, 2u, bool((x & 12u))); + x = (x >> b2); + let b1 = select(0u, 1u, bool((x & 2u))); + let is_zero = select(0u, 4294967295u, (x == 0u)); + return u32((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +fn f() { + let r : u32 = tint_first_leading_bit(15u); +} +)"; + + auto got = Run(src, polyfillFirstLeadingBit()); + + EXPECT_EQ(expect, str(got)); +} + +TEST_F(BuiltinPolyfillTest, FirstLeadingBit_vec3_i32) { + auto* src = R"( +fn f() { + let r : vec3 = firstLeadingBit(vec3(15)); +} +)"; + + auto* expect = R"( +fn tint_first_leading_bit(v : vec3) -> vec3 { + var x = select(vec3(v), vec3(~(v)), (v < vec3(0))); + let b16 = select(vec3(0u), vec3(16u), vec3((x & vec3(4294901760u)))); + x = (x >> b16); + let b8 = select(vec3(0u), vec3(8u), vec3((x & vec3(65280u)))); + x = (x >> b8); + let b4 = select(vec3(0u), vec3(4u), vec3((x & vec3(240u)))); + x = (x >> b4); + let b2 = select(vec3(0u), vec3(2u), vec3((x & vec3(12u)))); + x = (x >> b2); + let b1 = select(vec3(0u), vec3(1u), vec3((x & vec3(2u)))); + let is_zero = select(vec3(0u), vec3(4294967295u), (x == vec3(0u))); + return vec3((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +fn f() { + let r : vec3 = tint_first_leading_bit(vec3(15)); +} +)"; + + auto got = Run(src, polyfillFirstLeadingBit()); + + EXPECT_EQ(expect, str(got)); +} + +TEST_F(BuiltinPolyfillTest, FirstLeadingBit_vec3_u32) { + auto* src = R"( +fn f() { + let r : vec3 = firstLeadingBit(vec3(15u)); +} +)"; + + auto* expect = R"( +fn tint_first_leading_bit(v : vec3) -> vec3 { + var x = v; + let b16 = select(vec3(0u), vec3(16u), vec3((x & vec3(4294901760u)))); + x = (x >> b16); + let b8 = select(vec3(0u), vec3(8u), vec3((x & vec3(65280u)))); + x = (x >> b8); + let b4 = select(vec3(0u), vec3(4u), vec3((x & vec3(240u)))); + x = (x >> b4); + let b2 = select(vec3(0u), vec3(2u), vec3((x & vec3(12u)))); + x = (x >> b2); + let b1 = select(vec3(0u), vec3(1u), vec3((x & vec3(2u)))); + let is_zero = select(vec3(0u), vec3(4294967295u), (x == vec3(0u))); + return vec3((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +fn f() { + let r : vec3 = tint_first_leading_bit(vec3(15u)); +} +)"; + + auto got = Run(src, polyfillFirstLeadingBit()); + + EXPECT_EQ(expect, str(got)); +} + //////////////////////////////////////////////////////////////////////////////// // firstTrailingBit //////////////////////////////////////////////////////////////////////////////// diff --git a/src/tint/transform/glsl.cc b/src/tint/transform/glsl.cc index fb4d230f9e..e7d79f19d4 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.first_leading_bit = true; polyfills.first_trailing_bit = true; data.Add(polyfills); manager.Add(); diff --git a/src/tint/writer/hlsl/generator_impl.cc b/src/tint/writer/hlsl/generator_impl.cc index d84082d6c4..7fa1efdab7 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.first_leading_bit = true; polyfills.first_trailing_bit = true; data.Add(polyfills); manager.Add(); diff --git a/src/tint/writer/msl/generator_impl.cc b/src/tint/writer/msl/generator_impl.cc index 2f79eb5165..e56c23fbc8 100644 --- a/src/tint/writer/msl/generator_impl.cc +++ b/src/tint/writer/msl/generator_impl.cc @@ -130,6 +130,7 @@ SanitizedResult Sanitize( { // Builtin polyfills transform::BuiltinPolyfill::Builtins polyfills; + polyfills.first_leading_bit = true; polyfills.first_trailing_bit = true; data.Add(polyfills); manager.Add(); diff --git a/src/tint/writer/spirv/builder.cc b/src/tint/writer/spirv/builder.cc index e8dbe8ed76..29ef10e968 100644 --- a/src/tint/writer/spirv/builder.cc +++ b/src/tint/writer/spirv/builder.cc @@ -263,6 +263,7 @@ SanitizedResult Sanitize(const Program* in, transform::BuiltinPolyfill::Builtins polyfills; polyfills.count_leading_zeros = true; polyfills.count_trailing_zeros = true; + polyfills.first_leading_bit = true; polyfills.first_trailing_bit = true; data.Add(polyfills); manager.Add(); diff --git a/test/tint/builtins/gen/firstLeadingBit/000ff3.wgsl b/test/tint/builtins/gen/firstLeadingBit/000ff3.wgsl new file mode 100644 index 0000000000..f8756c404e --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/000ff3.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 firstLeadingBit(vec<4, u32>) -> vec<4, u32> +fn firstLeadingBit_000ff3() { + var res: vec4 = firstLeadingBit(vec4()); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + firstLeadingBit_000ff3(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + firstLeadingBit_000ff3(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + firstLeadingBit_000ff3(); +} diff --git a/test/tint/builtins/gen/firstLeadingBit/000ff3.wgsl.expected.glsl b/test/tint/builtins/gen/firstLeadingBit/000ff3.wgsl.expected.glsl new file mode 100644 index 0000000000..468de36a1b --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/000ff3.wgsl.expected.glsl @@ -0,0 +1,93 @@ +#version 310 es + +uvec4 tint_first_leading_bit(uvec4 v) { + uvec4 x = v; + uvec4 b16 = mix(uvec4(0u), uvec4(16u), bvec4((x & uvec4(4294901760u)))); + x = (x >> b16); + uvec4 b8 = mix(uvec4(0u), uvec4(8u), bvec4((x & uvec4(65280u)))); + x = (x >> b8); + uvec4 b4 = mix(uvec4(0u), uvec4(4u), bvec4((x & uvec4(240u)))); + x = (x >> b4); + uvec4 b2 = mix(uvec4(0u), uvec4(2u), bvec4((x & uvec4(12u)))); + x = (x >> b2); + uvec4 b1 = mix(uvec4(0u), uvec4(1u), bvec4((x & uvec4(2u)))); + uvec4 is_zero = mix(uvec4(0u), uvec4(4294967295u), equal(x, uvec4(0u))); + return uvec4((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_000ff3() { + uvec4 res = tint_first_leading_bit(uvec4(0u, 0u, 0u, 0u)); +} + +vec4 vertex_main() { + firstLeadingBit_000ff3(); + 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_first_leading_bit(uvec4 v) { + uvec4 x = v; + uvec4 b16 = mix(uvec4(0u), uvec4(16u), bvec4((x & uvec4(4294901760u)))); + x = (x >> b16); + uvec4 b8 = mix(uvec4(0u), uvec4(8u), bvec4((x & uvec4(65280u)))); + x = (x >> b8); + uvec4 b4 = mix(uvec4(0u), uvec4(4u), bvec4((x & uvec4(240u)))); + x = (x >> b4); + uvec4 b2 = mix(uvec4(0u), uvec4(2u), bvec4((x & uvec4(12u)))); + x = (x >> b2); + uvec4 b1 = mix(uvec4(0u), uvec4(1u), bvec4((x & uvec4(2u)))); + uvec4 is_zero = mix(uvec4(0u), uvec4(4294967295u), equal(x, uvec4(0u))); + return uvec4((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_000ff3() { + uvec4 res = tint_first_leading_bit(uvec4(0u, 0u, 0u, 0u)); +} + +void fragment_main() { + firstLeadingBit_000ff3(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +uvec4 tint_first_leading_bit(uvec4 v) { + uvec4 x = v; + uvec4 b16 = mix(uvec4(0u), uvec4(16u), bvec4((x & uvec4(4294901760u)))); + x = (x >> b16); + uvec4 b8 = mix(uvec4(0u), uvec4(8u), bvec4((x & uvec4(65280u)))); + x = (x >> b8); + uvec4 b4 = mix(uvec4(0u), uvec4(4u), bvec4((x & uvec4(240u)))); + x = (x >> b4); + uvec4 b2 = mix(uvec4(0u), uvec4(2u), bvec4((x & uvec4(12u)))); + x = (x >> b2); + uvec4 b1 = mix(uvec4(0u), uvec4(1u), bvec4((x & uvec4(2u)))); + uvec4 is_zero = mix(uvec4(0u), uvec4(4294967295u), equal(x, uvec4(0u))); + return uvec4((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_000ff3() { + uvec4 res = tint_first_leading_bit(uvec4(0u, 0u, 0u, 0u)); +} + +void compute_main() { + firstLeadingBit_000ff3(); +} + +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/firstLeadingBit/000ff3.wgsl.expected.hlsl b/test/tint/builtins/gen/firstLeadingBit/000ff3.wgsl.expected.hlsl new file mode 100644 index 0000000000..19e18a64a6 --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/000ff3.wgsl.expected.hlsl @@ -0,0 +1,45 @@ +uint4 tint_first_leading_bit(uint4 v) { + uint4 x = v; + const uint4 b16 = (bool4((x & uint4((4294901760u).xxxx))) ? uint4((16u).xxxx) : uint4((0u).xxxx)); + x = (x >> b16); + const uint4 b8 = (bool4((x & uint4((65280u).xxxx))) ? uint4((8u).xxxx) : uint4((0u).xxxx)); + x = (x >> b8); + const uint4 b4 = (bool4((x & uint4((240u).xxxx))) ? uint4((4u).xxxx) : uint4((0u).xxxx)); + x = (x >> b4); + const uint4 b2 = (bool4((x & uint4((12u).xxxx))) ? uint4((2u).xxxx) : uint4((0u).xxxx)); + x = (x >> b2); + const uint4 b1 = (bool4((x & uint4((2u).xxxx))) ? uint4((1u).xxxx) : uint4((0u).xxxx)); + const uint4 is_zero = ((x == uint4((0u).xxxx)) ? uint4((4294967295u).xxxx) : uint4((0u).xxxx)); + return uint4((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_000ff3() { + uint4 res = tint_first_leading_bit(uint4(0u, 0u, 0u, 0u)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + firstLeadingBit_000ff3(); + 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() { + firstLeadingBit_000ff3(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + firstLeadingBit_000ff3(); + return; +} diff --git a/test/tint/builtins/gen/firstLeadingBit/000ff3.wgsl.expected.msl b/test/tint/builtins/gen/firstLeadingBit/000ff3.wgsl.expected.msl new file mode 100644 index 0000000000..93ad61bc7d --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/000ff3.wgsl.expected.msl @@ -0,0 +1,48 @@ +#include + +using namespace metal; +uint4 tint_first_leading_bit(uint4 v) { + uint4 x = v; + uint4 const b16 = select(uint4(0u), uint4(16u), bool4((x & uint4(4294901760u)))); + x = (x >> b16); + uint4 const b8 = select(uint4(0u), uint4(8u), bool4((x & uint4(65280u)))); + x = (x >> b8); + uint4 const b4 = select(uint4(0u), uint4(4u), bool4((x & uint4(240u)))); + x = (x >> b4); + uint4 const b2 = select(uint4(0u), uint4(2u), bool4((x & uint4(12u)))); + x = (x >> b2); + uint4 const b1 = select(uint4(0u), uint4(1u), bool4((x & uint4(2u)))); + uint4 const is_zero = select(uint4(0u), uint4(4294967295u), (x == uint4(0u))); + return uint4((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_000ff3() { + uint4 res = tint_first_leading_bit(uint4()); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + firstLeadingBit_000ff3(); + 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() { + firstLeadingBit_000ff3(); + return; +} + +kernel void compute_main() { + firstLeadingBit_000ff3(); + return; +} + diff --git a/test/tint/builtins/gen/firstLeadingBit/000ff3.wgsl.expected.spvasm b/test/tint/builtins/gen/firstLeadingBit/000ff3.wgsl.expected.spvasm new file mode 100644 index 0000000000..a7000b08af --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/000ff3.wgsl.expected.spvasm @@ -0,0 +1,142 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 99 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size + OpEntryPoint Fragment %fragment_main "fragment_main" + OpEntryPoint GLCompute %compute_main "compute_main" + OpExecutionMode %fragment_main OriginUpperLeft + OpExecutionMode %compute_main LocalSize 1 1 1 + OpName %value "value" + OpName %vertex_point_size "vertex_point_size" + OpName %tint_first_leading_bit "tint_first_leading_bit" + OpName %v "v" + OpName %x "x" + OpName %firstLeadingBit_000ff3 "firstLeadingBit_000ff3" + OpName %res "res" + OpName %vertex_main_inner "vertex_main_inner" + OpName %vertex_main "vertex_main" + OpName %fragment_main "fragment_main" + OpName %compute_main "compute_main" + OpDecorate %value BuiltIn Position + OpDecorate %vertex_point_size BuiltIn PointSize + %float = OpTypeFloat 32 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %5 = OpConstantNull %v4float + %value = OpVariable %_ptr_Output_v4float Output %5 +%_ptr_Output_float = OpTypePointer Output %float + %8 = OpConstantNull %float +%vertex_point_size = OpVariable %_ptr_Output_float Output %8 + %uint = OpTypeInt 32 0 + %v4uint = OpTypeVector %uint 4 + %9 = OpTypeFunction %v4uint %v4uint +%_ptr_Function_v4uint = OpTypePointer Function %v4uint + %17 = OpConstantNull %v4uint + %bool = OpTypeBool + %v4bool = OpTypeVector %bool 4 +%uint_4294901760 = OpConstant %uint 4294901760 + %24 = OpConstantComposite %v4uint %uint_4294901760 %uint_4294901760 %uint_4294901760 %uint_4294901760 + %uint_16 = OpConstant %uint 16 + %27 = OpConstantComposite %v4uint %uint_16 %uint_16 %uint_16 %uint_16 + %uint_0 = OpConstant %uint 0 + %29 = OpConstantComposite %v4uint %uint_0 %uint_0 %uint_0 %uint_0 + %uint_65280 = OpConstant %uint 65280 + %36 = OpConstantComposite %v4uint %uint_65280 %uint_65280 %uint_65280 %uint_65280 + %uint_8 = OpConstant %uint 8 + %39 = OpConstantComposite %v4uint %uint_8 %uint_8 %uint_8 %uint_8 + %uint_240 = OpConstant %uint 240 + %46 = OpConstantComposite %v4uint %uint_240 %uint_240 %uint_240 %uint_240 + %uint_4 = OpConstant %uint 4 + %49 = OpConstantComposite %v4uint %uint_4 %uint_4 %uint_4 %uint_4 + %uint_12 = OpConstant %uint 12 + %56 = OpConstantComposite %v4uint %uint_12 %uint_12 %uint_12 %uint_12 + %uint_2 = OpConstant %uint 2 + %59 = OpConstantComposite %v4uint %uint_2 %uint_2 %uint_2 %uint_2 + %uint_1 = OpConstant %uint 1 + %67 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1 +%uint_4294967295 = OpConstant %uint 4294967295 + %72 = OpConstantComposite %v4uint %uint_4294967295 %uint_4294967295 %uint_4294967295 %uint_4294967295 + %void = OpTypeVoid + %79 = OpTypeFunction %void + %85 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%tint_first_leading_bit = OpFunction %v4uint None %9 + %v = OpFunctionParameter %v4uint + %14 = OpLabel + %x = OpVariable %_ptr_Function_v4uint Function %17 + OpStore %x %v + %22 = OpLoad %v4uint %x + %25 = OpBitwiseAnd %v4uint %22 %24 + %19 = OpINotEqual %v4bool %25 %17 + %18 = OpSelect %v4uint %19 %27 %29 + %30 = OpLoad %v4uint %x + %31 = OpShiftRightLogical %v4uint %30 %18 + OpStore %x %31 + %34 = OpLoad %v4uint %x + %37 = OpBitwiseAnd %v4uint %34 %36 + %33 = OpINotEqual %v4bool %37 %17 + %32 = OpSelect %v4uint %33 %39 %29 + %40 = OpLoad %v4uint %x + %41 = OpShiftRightLogical %v4uint %40 %32 + OpStore %x %41 + %44 = OpLoad %v4uint %x + %47 = OpBitwiseAnd %v4uint %44 %46 + %43 = OpINotEqual %v4bool %47 %17 + %42 = OpSelect %v4uint %43 %49 %29 + %50 = OpLoad %v4uint %x + %51 = OpShiftRightLogical %v4uint %50 %42 + OpStore %x %51 + %54 = OpLoad %v4uint %x + %57 = OpBitwiseAnd %v4uint %54 %56 + %53 = OpINotEqual %v4bool %57 %17 + %52 = OpSelect %v4uint %53 %59 %29 + %60 = OpLoad %v4uint %x + %61 = OpShiftRightLogical %v4uint %60 %52 + OpStore %x %61 + %64 = OpLoad %v4uint %x + %65 = OpBitwiseAnd %v4uint %64 %59 + %63 = OpINotEqual %v4bool %65 %17 + %62 = OpSelect %v4uint %63 %67 %29 + %69 = OpLoad %v4uint %x + %70 = OpIEqual %v4bool %69 %29 + %68 = OpSelect %v4uint %70 %72 %29 + %74 = OpBitwiseOr %v4uint %18 %32 + %75 = OpBitwiseOr %v4uint %74 %42 + %76 = OpBitwiseOr %v4uint %75 %52 + %77 = OpBitwiseOr %v4uint %76 %62 + %78 = OpBitwiseOr %v4uint %77 %68 + OpReturnValue %78 + OpFunctionEnd +%firstLeadingBit_000ff3 = OpFunction %void None %79 + %82 = OpLabel + %res = OpVariable %_ptr_Function_v4uint Function %17 + %83 = OpFunctionCall %v4uint %tint_first_leading_bit %17 + OpStore %res %83 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %85 + %87 = OpLabel + %88 = OpFunctionCall %void %firstLeadingBit_000ff3 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %79 + %90 = OpLabel + %91 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %91 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %79 + %94 = OpLabel + %95 = OpFunctionCall %void %firstLeadingBit_000ff3 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %79 + %97 = OpLabel + %98 = OpFunctionCall %void %firstLeadingBit_000ff3 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/firstLeadingBit/000ff3.wgsl.expected.wgsl b/test/tint/builtins/gen/firstLeadingBit/000ff3.wgsl.expected.wgsl new file mode 100644 index 0000000000..bf0529c5d0 --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/000ff3.wgsl.expected.wgsl @@ -0,0 +1,19 @@ +fn firstLeadingBit_000ff3() { + var res : vec4 = firstLeadingBit(vec4()); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + firstLeadingBit_000ff3(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + firstLeadingBit_000ff3(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + firstLeadingBit_000ff3(); +} diff --git a/test/tint/builtins/gen/firstLeadingBit/35053e.wgsl b/test/tint/builtins/gen/firstLeadingBit/35053e.wgsl new file mode 100644 index 0000000000..f5f6ae0eba --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/35053e.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 firstLeadingBit(vec<3, i32>) -> vec<3, i32> +fn firstLeadingBit_35053e() { + var res: vec3 = firstLeadingBit(vec3()); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + firstLeadingBit_35053e(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + firstLeadingBit_35053e(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + firstLeadingBit_35053e(); +} diff --git a/test/tint/builtins/gen/firstLeadingBit/35053e.wgsl.expected.glsl b/test/tint/builtins/gen/firstLeadingBit/35053e.wgsl.expected.glsl new file mode 100644 index 0000000000..1a63d7a4e7 --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/35053e.wgsl.expected.glsl @@ -0,0 +1,93 @@ +#version 310 es + +ivec3 tint_first_leading_bit(ivec3 v) { + uvec3 x = mix(uvec3(v), uvec3(~(v)), lessThan(v, ivec3(0))); + uvec3 b16 = mix(uvec3(0u), uvec3(16u), bvec3((x & uvec3(4294901760u)))); + x = (x >> b16); + uvec3 b8 = mix(uvec3(0u), uvec3(8u), bvec3((x & uvec3(65280u)))); + x = (x >> b8); + uvec3 b4 = mix(uvec3(0u), uvec3(4u), bvec3((x & uvec3(240u)))); + x = (x >> b4); + uvec3 b2 = mix(uvec3(0u), uvec3(2u), bvec3((x & uvec3(12u)))); + x = (x >> b2); + uvec3 b1 = mix(uvec3(0u), uvec3(1u), bvec3((x & uvec3(2u)))); + uvec3 is_zero = mix(uvec3(0u), uvec3(4294967295u), equal(x, uvec3(0u))); + return ivec3((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_35053e() { + ivec3 res = tint_first_leading_bit(ivec3(0, 0, 0)); +} + +vec4 vertex_main() { + firstLeadingBit_35053e(); + 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_first_leading_bit(ivec3 v) { + uvec3 x = mix(uvec3(v), uvec3(~(v)), lessThan(v, ivec3(0))); + uvec3 b16 = mix(uvec3(0u), uvec3(16u), bvec3((x & uvec3(4294901760u)))); + x = (x >> b16); + uvec3 b8 = mix(uvec3(0u), uvec3(8u), bvec3((x & uvec3(65280u)))); + x = (x >> b8); + uvec3 b4 = mix(uvec3(0u), uvec3(4u), bvec3((x & uvec3(240u)))); + x = (x >> b4); + uvec3 b2 = mix(uvec3(0u), uvec3(2u), bvec3((x & uvec3(12u)))); + x = (x >> b2); + uvec3 b1 = mix(uvec3(0u), uvec3(1u), bvec3((x & uvec3(2u)))); + uvec3 is_zero = mix(uvec3(0u), uvec3(4294967295u), equal(x, uvec3(0u))); + return ivec3((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_35053e() { + ivec3 res = tint_first_leading_bit(ivec3(0, 0, 0)); +} + +void fragment_main() { + firstLeadingBit_35053e(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +ivec3 tint_first_leading_bit(ivec3 v) { + uvec3 x = mix(uvec3(v), uvec3(~(v)), lessThan(v, ivec3(0))); + uvec3 b16 = mix(uvec3(0u), uvec3(16u), bvec3((x & uvec3(4294901760u)))); + x = (x >> b16); + uvec3 b8 = mix(uvec3(0u), uvec3(8u), bvec3((x & uvec3(65280u)))); + x = (x >> b8); + uvec3 b4 = mix(uvec3(0u), uvec3(4u), bvec3((x & uvec3(240u)))); + x = (x >> b4); + uvec3 b2 = mix(uvec3(0u), uvec3(2u), bvec3((x & uvec3(12u)))); + x = (x >> b2); + uvec3 b1 = mix(uvec3(0u), uvec3(1u), bvec3((x & uvec3(2u)))); + uvec3 is_zero = mix(uvec3(0u), uvec3(4294967295u), equal(x, uvec3(0u))); + return ivec3((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_35053e() { + ivec3 res = tint_first_leading_bit(ivec3(0, 0, 0)); +} + +void compute_main() { + firstLeadingBit_35053e(); +} + +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/firstLeadingBit/35053e.wgsl.expected.hlsl b/test/tint/builtins/gen/firstLeadingBit/35053e.wgsl.expected.hlsl new file mode 100644 index 0000000000..bf1d41d870 --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/35053e.wgsl.expected.hlsl @@ -0,0 +1,45 @@ +int3 tint_first_leading_bit(int3 v) { + uint3 x = ((v < int3((0).xxx)) ? uint3(~(v)) : uint3(v)); + const uint3 b16 = (bool3((x & uint3((4294901760u).xxx))) ? uint3((16u).xxx) : uint3((0u).xxx)); + x = (x >> b16); + const uint3 b8 = (bool3((x & uint3((65280u).xxx))) ? uint3((8u).xxx) : uint3((0u).xxx)); + x = (x >> b8); + const uint3 b4 = (bool3((x & uint3((240u).xxx))) ? uint3((4u).xxx) : uint3((0u).xxx)); + x = (x >> b4); + const uint3 b2 = (bool3((x & uint3((12u).xxx))) ? uint3((2u).xxx) : uint3((0u).xxx)); + x = (x >> b2); + const uint3 b1 = (bool3((x & uint3((2u).xxx))) ? uint3((1u).xxx) : uint3((0u).xxx)); + const uint3 is_zero = ((x == uint3((0u).xxx)) ? uint3((4294967295u).xxx) : uint3((0u).xxx)); + return int3((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_35053e() { + int3 res = tint_first_leading_bit(int3(0, 0, 0)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + firstLeadingBit_35053e(); + 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() { + firstLeadingBit_35053e(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + firstLeadingBit_35053e(); + return; +} diff --git a/test/tint/builtins/gen/firstLeadingBit/35053e.wgsl.expected.msl b/test/tint/builtins/gen/firstLeadingBit/35053e.wgsl.expected.msl new file mode 100644 index 0000000000..820fea3d58 --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/35053e.wgsl.expected.msl @@ -0,0 +1,48 @@ +#include + +using namespace metal; +int3 tint_first_leading_bit(int3 v) { + uint3 x = select(uint3(v), uint3(~(v)), (v < int3(0))); + uint3 const b16 = select(uint3(0u), uint3(16u), bool3((x & uint3(4294901760u)))); + x = (x >> b16); + uint3 const b8 = select(uint3(0u), uint3(8u), bool3((x & uint3(65280u)))); + x = (x >> b8); + uint3 const b4 = select(uint3(0u), uint3(4u), bool3((x & uint3(240u)))); + x = (x >> b4); + uint3 const b2 = select(uint3(0u), uint3(2u), bool3((x & uint3(12u)))); + x = (x >> b2); + uint3 const b1 = select(uint3(0u), uint3(1u), bool3((x & uint3(2u)))); + uint3 const is_zero = select(uint3(0u), uint3(4294967295u), (x == uint3(0u))); + return int3((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_35053e() { + int3 res = tint_first_leading_bit(int3()); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + firstLeadingBit_35053e(); + 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() { + firstLeadingBit_35053e(); + return; +} + +kernel void compute_main() { + firstLeadingBit_35053e(); + return; +} + diff --git a/test/tint/builtins/gen/firstLeadingBit/35053e.wgsl.expected.spvasm b/test/tint/builtins/gen/firstLeadingBit/35053e.wgsl.expected.spvasm new file mode 100644 index 0000000000..f35960a9f5 --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/35053e.wgsl.expected.spvasm @@ -0,0 +1,154 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 110 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size + OpEntryPoint Fragment %fragment_main "fragment_main" + OpEntryPoint GLCompute %compute_main "compute_main" + OpExecutionMode %fragment_main OriginUpperLeft + OpExecutionMode %compute_main LocalSize 1 1 1 + OpName %value "value" + OpName %vertex_point_size "vertex_point_size" + OpName %tint_first_leading_bit "tint_first_leading_bit" + OpName %v "v" + OpName %x "x" + OpName %firstLeadingBit_35053e "firstLeadingBit_35053e" + OpName %res "res" + OpName %vertex_main_inner "vertex_main_inner" + OpName %vertex_main "vertex_main" + OpName %fragment_main "fragment_main" + OpName %compute_main "compute_main" + OpDecorate %value BuiltIn Position + OpDecorate %vertex_point_size BuiltIn PointSize + %float = OpTypeFloat 32 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %5 = OpConstantNull %v4float + %value = OpVariable %_ptr_Output_v4float Output %5 +%_ptr_Output_float = OpTypePointer Output %float + %8 = OpConstantNull %float +%vertex_point_size = OpVariable %_ptr_Output_float Output %8 + %int = OpTypeInt 32 1 + %v3int = OpTypeVector %int 3 + %9 = OpTypeFunction %v3int %v3int + %uint = OpTypeInt 32 0 + %v3uint = OpTypeVector %uint 3 + %int_0 = OpConstant %int 0 + %19 = OpConstantComposite %v3int %int_0 %int_0 %int_0 + %bool = OpTypeBool + %v3bool = OpTypeVector %bool 3 +%_ptr_Function_v3uint = OpTypePointer Function %v3uint + %28 = OpConstantNull %v3uint +%uint_4294901760 = OpConstant %uint 4294901760 + %33 = OpConstantComposite %v3uint %uint_4294901760 %uint_4294901760 %uint_4294901760 + %uint_16 = OpConstant %uint 16 + %36 = OpConstantComposite %v3uint %uint_16 %uint_16 %uint_16 + %uint_0 = OpConstant %uint 0 + %38 = OpConstantComposite %v3uint %uint_0 %uint_0 %uint_0 + %uint_65280 = OpConstant %uint 65280 + %45 = OpConstantComposite %v3uint %uint_65280 %uint_65280 %uint_65280 + %uint_8 = OpConstant %uint 8 + %48 = OpConstantComposite %v3uint %uint_8 %uint_8 %uint_8 + %uint_240 = OpConstant %uint 240 + %55 = OpConstantComposite %v3uint %uint_240 %uint_240 %uint_240 + %uint_4 = OpConstant %uint 4 + %58 = OpConstantComposite %v3uint %uint_4 %uint_4 %uint_4 + %uint_12 = OpConstant %uint 12 + %65 = OpConstantComposite %v3uint %uint_12 %uint_12 %uint_12 + %uint_2 = OpConstant %uint 2 + %68 = OpConstantComposite %v3uint %uint_2 %uint_2 %uint_2 + %uint_1 = OpConstant %uint 1 + %76 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1 +%uint_4294967295 = OpConstant %uint 4294967295 + %81 = OpConstantComposite %v3uint %uint_4294967295 %uint_4294967295 %uint_4294967295 + %void = OpTypeVoid + %88 = OpTypeFunction %void + %93 = OpConstantNull %v3int +%_ptr_Function_v3int = OpTypePointer Function %v3int + %96 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%tint_first_leading_bit = OpFunction %v3int None %9 + %v = OpFunctionParameter %v3int + %14 = OpLabel + %x = OpVariable %_ptr_Function_v3uint Function %28 + %20 = OpSLessThan %v3bool %v %19 + %24 = OpNot %v3int %v + %23 = OpBitcast %v3uint %24 + %25 = OpBitcast %v3uint %v + %15 = OpSelect %v3uint %20 %23 %25 + OpStore %x %15 + %31 = OpLoad %v3uint %x + %34 = OpBitwiseAnd %v3uint %31 %33 + %30 = OpINotEqual %v3bool %34 %28 + %29 = OpSelect %v3uint %30 %36 %38 + %39 = OpLoad %v3uint %x + %40 = OpShiftRightLogical %v3uint %39 %29 + OpStore %x %40 + %43 = OpLoad %v3uint %x + %46 = OpBitwiseAnd %v3uint %43 %45 + %42 = OpINotEqual %v3bool %46 %28 + %41 = OpSelect %v3uint %42 %48 %38 + %49 = OpLoad %v3uint %x + %50 = OpShiftRightLogical %v3uint %49 %41 + OpStore %x %50 + %53 = OpLoad %v3uint %x + %56 = OpBitwiseAnd %v3uint %53 %55 + %52 = OpINotEqual %v3bool %56 %28 + %51 = OpSelect %v3uint %52 %58 %38 + %59 = OpLoad %v3uint %x + %60 = OpShiftRightLogical %v3uint %59 %51 + OpStore %x %60 + %63 = OpLoad %v3uint %x + %66 = OpBitwiseAnd %v3uint %63 %65 + %62 = OpINotEqual %v3bool %66 %28 + %61 = OpSelect %v3uint %62 %68 %38 + %69 = OpLoad %v3uint %x + %70 = OpShiftRightLogical %v3uint %69 %61 + OpStore %x %70 + %73 = OpLoad %v3uint %x + %74 = OpBitwiseAnd %v3uint %73 %68 + %72 = OpINotEqual %v3bool %74 %28 + %71 = OpSelect %v3uint %72 %76 %38 + %78 = OpLoad %v3uint %x + %79 = OpIEqual %v3bool %78 %38 + %77 = OpSelect %v3uint %79 %81 %38 + %83 = OpBitwiseOr %v3uint %29 %41 + %84 = OpBitwiseOr %v3uint %83 %51 + %85 = OpBitwiseOr %v3uint %84 %61 + %86 = OpBitwiseOr %v3uint %85 %71 + %87 = OpBitwiseOr %v3uint %86 %77 + %82 = OpBitcast %v3int %87 + OpReturnValue %82 + OpFunctionEnd +%firstLeadingBit_35053e = OpFunction %void None %88 + %91 = OpLabel + %res = OpVariable %_ptr_Function_v3int Function %93 + %92 = OpFunctionCall %v3int %tint_first_leading_bit %93 + OpStore %res %92 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %96 + %98 = OpLabel + %99 = OpFunctionCall %void %firstLeadingBit_35053e + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %88 + %101 = OpLabel + %102 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %102 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %88 + %105 = OpLabel + %106 = OpFunctionCall %void %firstLeadingBit_35053e + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %88 + %108 = OpLabel + %109 = OpFunctionCall %void %firstLeadingBit_35053e + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/firstLeadingBit/35053e.wgsl.expected.wgsl b/test/tint/builtins/gen/firstLeadingBit/35053e.wgsl.expected.wgsl new file mode 100644 index 0000000000..cbf0a6b542 --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/35053e.wgsl.expected.wgsl @@ -0,0 +1,19 @@ +fn firstLeadingBit_35053e() { + var res : vec3 = firstLeadingBit(vec3()); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + firstLeadingBit_35053e(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + firstLeadingBit_35053e(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + firstLeadingBit_35053e(); +} diff --git a/test/tint/builtins/gen/firstLeadingBit/3fd7d0.wgsl b/test/tint/builtins/gen/firstLeadingBit/3fd7d0.wgsl new file mode 100644 index 0000000000..cf3c903f57 --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/3fd7d0.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 firstLeadingBit(vec<3, u32>) -> vec<3, u32> +fn firstLeadingBit_3fd7d0() { + var res: vec3 = firstLeadingBit(vec3()); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + firstLeadingBit_3fd7d0(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + firstLeadingBit_3fd7d0(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + firstLeadingBit_3fd7d0(); +} diff --git a/test/tint/builtins/gen/firstLeadingBit/3fd7d0.wgsl.expected.glsl b/test/tint/builtins/gen/firstLeadingBit/3fd7d0.wgsl.expected.glsl new file mode 100644 index 0000000000..9cbb7168f7 --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/3fd7d0.wgsl.expected.glsl @@ -0,0 +1,93 @@ +#version 310 es + +uvec3 tint_first_leading_bit(uvec3 v) { + uvec3 x = v; + uvec3 b16 = mix(uvec3(0u), uvec3(16u), bvec3((x & uvec3(4294901760u)))); + x = (x >> b16); + uvec3 b8 = mix(uvec3(0u), uvec3(8u), bvec3((x & uvec3(65280u)))); + x = (x >> b8); + uvec3 b4 = mix(uvec3(0u), uvec3(4u), bvec3((x & uvec3(240u)))); + x = (x >> b4); + uvec3 b2 = mix(uvec3(0u), uvec3(2u), bvec3((x & uvec3(12u)))); + x = (x >> b2); + uvec3 b1 = mix(uvec3(0u), uvec3(1u), bvec3((x & uvec3(2u)))); + uvec3 is_zero = mix(uvec3(0u), uvec3(4294967295u), equal(x, uvec3(0u))); + return uvec3((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_3fd7d0() { + uvec3 res = tint_first_leading_bit(uvec3(0u, 0u, 0u)); +} + +vec4 vertex_main() { + firstLeadingBit_3fd7d0(); + 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_first_leading_bit(uvec3 v) { + uvec3 x = v; + uvec3 b16 = mix(uvec3(0u), uvec3(16u), bvec3((x & uvec3(4294901760u)))); + x = (x >> b16); + uvec3 b8 = mix(uvec3(0u), uvec3(8u), bvec3((x & uvec3(65280u)))); + x = (x >> b8); + uvec3 b4 = mix(uvec3(0u), uvec3(4u), bvec3((x & uvec3(240u)))); + x = (x >> b4); + uvec3 b2 = mix(uvec3(0u), uvec3(2u), bvec3((x & uvec3(12u)))); + x = (x >> b2); + uvec3 b1 = mix(uvec3(0u), uvec3(1u), bvec3((x & uvec3(2u)))); + uvec3 is_zero = mix(uvec3(0u), uvec3(4294967295u), equal(x, uvec3(0u))); + return uvec3((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_3fd7d0() { + uvec3 res = tint_first_leading_bit(uvec3(0u, 0u, 0u)); +} + +void fragment_main() { + firstLeadingBit_3fd7d0(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +uvec3 tint_first_leading_bit(uvec3 v) { + uvec3 x = v; + uvec3 b16 = mix(uvec3(0u), uvec3(16u), bvec3((x & uvec3(4294901760u)))); + x = (x >> b16); + uvec3 b8 = mix(uvec3(0u), uvec3(8u), bvec3((x & uvec3(65280u)))); + x = (x >> b8); + uvec3 b4 = mix(uvec3(0u), uvec3(4u), bvec3((x & uvec3(240u)))); + x = (x >> b4); + uvec3 b2 = mix(uvec3(0u), uvec3(2u), bvec3((x & uvec3(12u)))); + x = (x >> b2); + uvec3 b1 = mix(uvec3(0u), uvec3(1u), bvec3((x & uvec3(2u)))); + uvec3 is_zero = mix(uvec3(0u), uvec3(4294967295u), equal(x, uvec3(0u))); + return uvec3((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_3fd7d0() { + uvec3 res = tint_first_leading_bit(uvec3(0u, 0u, 0u)); +} + +void compute_main() { + firstLeadingBit_3fd7d0(); +} + +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/firstLeadingBit/3fd7d0.wgsl.expected.hlsl b/test/tint/builtins/gen/firstLeadingBit/3fd7d0.wgsl.expected.hlsl new file mode 100644 index 0000000000..0dff82ebd7 --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/3fd7d0.wgsl.expected.hlsl @@ -0,0 +1,45 @@ +uint3 tint_first_leading_bit(uint3 v) { + uint3 x = v; + const uint3 b16 = (bool3((x & uint3((4294901760u).xxx))) ? uint3((16u).xxx) : uint3((0u).xxx)); + x = (x >> b16); + const uint3 b8 = (bool3((x & uint3((65280u).xxx))) ? uint3((8u).xxx) : uint3((0u).xxx)); + x = (x >> b8); + const uint3 b4 = (bool3((x & uint3((240u).xxx))) ? uint3((4u).xxx) : uint3((0u).xxx)); + x = (x >> b4); + const uint3 b2 = (bool3((x & uint3((12u).xxx))) ? uint3((2u).xxx) : uint3((0u).xxx)); + x = (x >> b2); + const uint3 b1 = (bool3((x & uint3((2u).xxx))) ? uint3((1u).xxx) : uint3((0u).xxx)); + const uint3 is_zero = ((x == uint3((0u).xxx)) ? uint3((4294967295u).xxx) : uint3((0u).xxx)); + return uint3((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_3fd7d0() { + uint3 res = tint_first_leading_bit(uint3(0u, 0u, 0u)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + firstLeadingBit_3fd7d0(); + 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() { + firstLeadingBit_3fd7d0(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + firstLeadingBit_3fd7d0(); + return; +} diff --git a/test/tint/builtins/gen/firstLeadingBit/3fd7d0.wgsl.expected.msl b/test/tint/builtins/gen/firstLeadingBit/3fd7d0.wgsl.expected.msl new file mode 100644 index 0000000000..2e4d23cd71 --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/3fd7d0.wgsl.expected.msl @@ -0,0 +1,48 @@ +#include + +using namespace metal; +uint3 tint_first_leading_bit(uint3 v) { + uint3 x = v; + uint3 const b16 = select(uint3(0u), uint3(16u), bool3((x & uint3(4294901760u)))); + x = (x >> b16); + uint3 const b8 = select(uint3(0u), uint3(8u), bool3((x & uint3(65280u)))); + x = (x >> b8); + uint3 const b4 = select(uint3(0u), uint3(4u), bool3((x & uint3(240u)))); + x = (x >> b4); + uint3 const b2 = select(uint3(0u), uint3(2u), bool3((x & uint3(12u)))); + x = (x >> b2); + uint3 const b1 = select(uint3(0u), uint3(1u), bool3((x & uint3(2u)))); + uint3 const is_zero = select(uint3(0u), uint3(4294967295u), (x == uint3(0u))); + return uint3((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_3fd7d0() { + uint3 res = tint_first_leading_bit(uint3()); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + firstLeadingBit_3fd7d0(); + 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() { + firstLeadingBit_3fd7d0(); + return; +} + +kernel void compute_main() { + firstLeadingBit_3fd7d0(); + return; +} + diff --git a/test/tint/builtins/gen/firstLeadingBit/3fd7d0.wgsl.expected.spvasm b/test/tint/builtins/gen/firstLeadingBit/3fd7d0.wgsl.expected.spvasm new file mode 100644 index 0000000000..28097dd28b --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/3fd7d0.wgsl.expected.spvasm @@ -0,0 +1,142 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 99 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size + OpEntryPoint Fragment %fragment_main "fragment_main" + OpEntryPoint GLCompute %compute_main "compute_main" + OpExecutionMode %fragment_main OriginUpperLeft + OpExecutionMode %compute_main LocalSize 1 1 1 + OpName %value "value" + OpName %vertex_point_size "vertex_point_size" + OpName %tint_first_leading_bit "tint_first_leading_bit" + OpName %v "v" + OpName %x "x" + OpName %firstLeadingBit_3fd7d0 "firstLeadingBit_3fd7d0" + OpName %res "res" + OpName %vertex_main_inner "vertex_main_inner" + OpName %vertex_main "vertex_main" + OpName %fragment_main "fragment_main" + OpName %compute_main "compute_main" + OpDecorate %value BuiltIn Position + OpDecorate %vertex_point_size BuiltIn PointSize + %float = OpTypeFloat 32 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %5 = OpConstantNull %v4float + %value = OpVariable %_ptr_Output_v4float Output %5 +%_ptr_Output_float = OpTypePointer Output %float + %8 = OpConstantNull %float +%vertex_point_size = OpVariable %_ptr_Output_float Output %8 + %uint = OpTypeInt 32 0 + %v3uint = OpTypeVector %uint 3 + %9 = OpTypeFunction %v3uint %v3uint +%_ptr_Function_v3uint = OpTypePointer Function %v3uint + %17 = OpConstantNull %v3uint + %bool = OpTypeBool + %v3bool = OpTypeVector %bool 3 +%uint_4294901760 = OpConstant %uint 4294901760 + %24 = OpConstantComposite %v3uint %uint_4294901760 %uint_4294901760 %uint_4294901760 + %uint_16 = OpConstant %uint 16 + %27 = OpConstantComposite %v3uint %uint_16 %uint_16 %uint_16 + %uint_0 = OpConstant %uint 0 + %29 = OpConstantComposite %v3uint %uint_0 %uint_0 %uint_0 + %uint_65280 = OpConstant %uint 65280 + %36 = OpConstantComposite %v3uint %uint_65280 %uint_65280 %uint_65280 + %uint_8 = OpConstant %uint 8 + %39 = OpConstantComposite %v3uint %uint_8 %uint_8 %uint_8 + %uint_240 = OpConstant %uint 240 + %46 = OpConstantComposite %v3uint %uint_240 %uint_240 %uint_240 + %uint_4 = OpConstant %uint 4 + %49 = OpConstantComposite %v3uint %uint_4 %uint_4 %uint_4 + %uint_12 = OpConstant %uint 12 + %56 = OpConstantComposite %v3uint %uint_12 %uint_12 %uint_12 + %uint_2 = OpConstant %uint 2 + %59 = OpConstantComposite %v3uint %uint_2 %uint_2 %uint_2 + %uint_1 = OpConstant %uint 1 + %67 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1 +%uint_4294967295 = OpConstant %uint 4294967295 + %72 = OpConstantComposite %v3uint %uint_4294967295 %uint_4294967295 %uint_4294967295 + %void = OpTypeVoid + %79 = OpTypeFunction %void + %85 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%tint_first_leading_bit = OpFunction %v3uint None %9 + %v = OpFunctionParameter %v3uint + %14 = OpLabel + %x = OpVariable %_ptr_Function_v3uint Function %17 + OpStore %x %v + %22 = OpLoad %v3uint %x + %25 = OpBitwiseAnd %v3uint %22 %24 + %19 = OpINotEqual %v3bool %25 %17 + %18 = OpSelect %v3uint %19 %27 %29 + %30 = OpLoad %v3uint %x + %31 = OpShiftRightLogical %v3uint %30 %18 + OpStore %x %31 + %34 = OpLoad %v3uint %x + %37 = OpBitwiseAnd %v3uint %34 %36 + %33 = OpINotEqual %v3bool %37 %17 + %32 = OpSelect %v3uint %33 %39 %29 + %40 = OpLoad %v3uint %x + %41 = OpShiftRightLogical %v3uint %40 %32 + OpStore %x %41 + %44 = OpLoad %v3uint %x + %47 = OpBitwiseAnd %v3uint %44 %46 + %43 = OpINotEqual %v3bool %47 %17 + %42 = OpSelect %v3uint %43 %49 %29 + %50 = OpLoad %v3uint %x + %51 = OpShiftRightLogical %v3uint %50 %42 + OpStore %x %51 + %54 = OpLoad %v3uint %x + %57 = OpBitwiseAnd %v3uint %54 %56 + %53 = OpINotEqual %v3bool %57 %17 + %52 = OpSelect %v3uint %53 %59 %29 + %60 = OpLoad %v3uint %x + %61 = OpShiftRightLogical %v3uint %60 %52 + OpStore %x %61 + %64 = OpLoad %v3uint %x + %65 = OpBitwiseAnd %v3uint %64 %59 + %63 = OpINotEqual %v3bool %65 %17 + %62 = OpSelect %v3uint %63 %67 %29 + %69 = OpLoad %v3uint %x + %70 = OpIEqual %v3bool %69 %29 + %68 = OpSelect %v3uint %70 %72 %29 + %74 = OpBitwiseOr %v3uint %18 %32 + %75 = OpBitwiseOr %v3uint %74 %42 + %76 = OpBitwiseOr %v3uint %75 %52 + %77 = OpBitwiseOr %v3uint %76 %62 + %78 = OpBitwiseOr %v3uint %77 %68 + OpReturnValue %78 + OpFunctionEnd +%firstLeadingBit_3fd7d0 = OpFunction %void None %79 + %82 = OpLabel + %res = OpVariable %_ptr_Function_v3uint Function %17 + %83 = OpFunctionCall %v3uint %tint_first_leading_bit %17 + OpStore %res %83 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %85 + %87 = OpLabel + %88 = OpFunctionCall %void %firstLeadingBit_3fd7d0 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %79 + %90 = OpLabel + %91 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %91 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %79 + %94 = OpLabel + %95 = OpFunctionCall %void %firstLeadingBit_3fd7d0 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %79 + %97 = OpLabel + %98 = OpFunctionCall %void %firstLeadingBit_3fd7d0 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/firstLeadingBit/3fd7d0.wgsl.expected.wgsl b/test/tint/builtins/gen/firstLeadingBit/3fd7d0.wgsl.expected.wgsl new file mode 100644 index 0000000000..4537a4a008 --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/3fd7d0.wgsl.expected.wgsl @@ -0,0 +1,19 @@ +fn firstLeadingBit_3fd7d0() { + var res : vec3 = firstLeadingBit(vec3()); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + firstLeadingBit_3fd7d0(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + firstLeadingBit_3fd7d0(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + firstLeadingBit_3fd7d0(); +} diff --git a/test/tint/builtins/gen/firstLeadingBit/57a1a3.wgsl b/test/tint/builtins/gen/firstLeadingBit/57a1a3.wgsl new file mode 100644 index 0000000000..fd9559f0d8 --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/57a1a3.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 firstLeadingBit(i32) -> i32 +fn firstLeadingBit_57a1a3() { + var res: i32 = firstLeadingBit(1); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + firstLeadingBit_57a1a3(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + firstLeadingBit_57a1a3(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + firstLeadingBit_57a1a3(); +} diff --git a/test/tint/builtins/gen/firstLeadingBit/57a1a3.wgsl.expected.glsl b/test/tint/builtins/gen/firstLeadingBit/57a1a3.wgsl.expected.glsl new file mode 100644 index 0000000000..410c075cc0 --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/57a1a3.wgsl.expected.glsl @@ -0,0 +1,93 @@ +#version 310 es + +int tint_first_leading_bit(int v) { + uint x = ((v < 0) ? uint(~(v)) : uint(v)); + uint b16 = (bool((x & 4294901760u)) ? 16u : 0u); + x = (x >> b16); + uint b8 = (bool((x & 65280u)) ? 8u : 0u); + x = (x >> b8); + uint b4 = (bool((x & 240u)) ? 4u : 0u); + x = (x >> b4); + uint b2 = (bool((x & 12u)) ? 2u : 0u); + x = (x >> b2); + uint b1 = (bool((x & 2u)) ? 1u : 0u); + uint is_zero = ((x == 0u) ? 4294967295u : 0u); + return int((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_57a1a3() { + int res = tint_first_leading_bit(1); +} + +vec4 vertex_main() { + firstLeadingBit_57a1a3(); + 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_first_leading_bit(int v) { + uint x = ((v < 0) ? uint(~(v)) : uint(v)); + uint b16 = (bool((x & 4294901760u)) ? 16u : 0u); + x = (x >> b16); + uint b8 = (bool((x & 65280u)) ? 8u : 0u); + x = (x >> b8); + uint b4 = (bool((x & 240u)) ? 4u : 0u); + x = (x >> b4); + uint b2 = (bool((x & 12u)) ? 2u : 0u); + x = (x >> b2); + uint b1 = (bool((x & 2u)) ? 1u : 0u); + uint is_zero = ((x == 0u) ? 4294967295u : 0u); + return int((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_57a1a3() { + int res = tint_first_leading_bit(1); +} + +void fragment_main() { + firstLeadingBit_57a1a3(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +int tint_first_leading_bit(int v) { + uint x = ((v < 0) ? uint(~(v)) : uint(v)); + uint b16 = (bool((x & 4294901760u)) ? 16u : 0u); + x = (x >> b16); + uint b8 = (bool((x & 65280u)) ? 8u : 0u); + x = (x >> b8); + uint b4 = (bool((x & 240u)) ? 4u : 0u); + x = (x >> b4); + uint b2 = (bool((x & 12u)) ? 2u : 0u); + x = (x >> b2); + uint b1 = (bool((x & 2u)) ? 1u : 0u); + uint is_zero = ((x == 0u) ? 4294967295u : 0u); + return int((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_57a1a3() { + int res = tint_first_leading_bit(1); +} + +void compute_main() { + firstLeadingBit_57a1a3(); +} + +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/firstLeadingBit/57a1a3.wgsl.expected.hlsl b/test/tint/builtins/gen/firstLeadingBit/57a1a3.wgsl.expected.hlsl new file mode 100644 index 0000000000..59d3bb4991 --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/57a1a3.wgsl.expected.hlsl @@ -0,0 +1,45 @@ +int tint_first_leading_bit(int v) { + uint x = ((v < 0) ? uint(~(v)) : uint(v)); + const uint b16 = (bool((x & 4294901760u)) ? 16u : 0u); + x = (x >> b16); + const uint b8 = (bool((x & 65280u)) ? 8u : 0u); + x = (x >> b8); + const uint b4 = (bool((x & 240u)) ? 4u : 0u); + x = (x >> b4); + const uint b2 = (bool((x & 12u)) ? 2u : 0u); + x = (x >> b2); + const uint b1 = (bool((x & 2u)) ? 1u : 0u); + const uint is_zero = ((x == 0u) ? 4294967295u : 0u); + return int((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_57a1a3() { + int res = tint_first_leading_bit(1); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + firstLeadingBit_57a1a3(); + 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() { + firstLeadingBit_57a1a3(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + firstLeadingBit_57a1a3(); + return; +} diff --git a/test/tint/builtins/gen/firstLeadingBit/57a1a3.wgsl.expected.msl b/test/tint/builtins/gen/firstLeadingBit/57a1a3.wgsl.expected.msl new file mode 100644 index 0000000000..0fe7af8d4a --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/57a1a3.wgsl.expected.msl @@ -0,0 +1,48 @@ +#include + +using namespace metal; +int tint_first_leading_bit(int v) { + uint x = select(uint(v), uint(~(v)), (v < 0)); + uint const b16 = select(0u, 16u, bool((x & 4294901760u))); + x = (x >> b16); + uint const b8 = select(0u, 8u, bool((x & 65280u))); + x = (x >> b8); + uint const b4 = select(0u, 4u, bool((x & 240u))); + x = (x >> b4); + uint const b2 = select(0u, 2u, bool((x & 12u))); + x = (x >> b2); + uint const b1 = select(0u, 1u, bool((x & 2u))); + uint const is_zero = select(0u, 4294967295u, (x == 0u)); + return int((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_57a1a3() { + int res = tint_first_leading_bit(1); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + firstLeadingBit_57a1a3(); + 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() { + firstLeadingBit_57a1a3(); + return; +} + +kernel void compute_main() { + firstLeadingBit_57a1a3(); + return; +} + diff --git a/test/tint/builtins/gen/firstLeadingBit/57a1a3.wgsl.expected.spvasm b/test/tint/builtins/gen/firstLeadingBit/57a1a3.wgsl.expected.spvasm new file mode 100644 index 0000000000..bea47c79ed --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/57a1a3.wgsl.expected.spvasm @@ -0,0 +1,140 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 96 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size + OpEntryPoint Fragment %fragment_main "fragment_main" + OpEntryPoint GLCompute %compute_main "compute_main" + OpExecutionMode %fragment_main OriginUpperLeft + OpExecutionMode %compute_main LocalSize 1 1 1 + OpName %value "value" + OpName %vertex_point_size "vertex_point_size" + OpName %tint_first_leading_bit "tint_first_leading_bit" + OpName %v "v" + OpName %x "x" + OpName %firstLeadingBit_57a1a3 "firstLeadingBit_57a1a3" + OpName %res "res" + OpName %vertex_main_inner "vertex_main_inner" + OpName %vertex_main "vertex_main" + OpName %fragment_main "fragment_main" + OpName %compute_main "compute_main" + OpDecorate %value BuiltIn Position + OpDecorate %vertex_point_size BuiltIn PointSize + %float = OpTypeFloat 32 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %5 = OpConstantNull %v4float + %value = OpVariable %_ptr_Output_v4float Output %5 +%_ptr_Output_float = OpTypePointer Output %float + %8 = OpConstantNull %float +%vertex_point_size = OpVariable %_ptr_Output_float Output %8 + %int = OpTypeInt 32 1 + %9 = OpTypeFunction %int %int + %uint = OpTypeInt 32 0 + %int_0 = OpConstant %int 0 + %bool = OpTypeBool +%_ptr_Function_uint = OpTypePointer Function %uint + %24 = OpConstantNull %uint +%uint_4294901760 = OpConstant %uint 4294901760 + %uint_16 = OpConstant %uint 16 + %uint_0 = OpConstant %uint 0 + %uint_65280 = OpConstant %uint 65280 + %uint_8 = OpConstant %uint 8 + %uint_240 = OpConstant %uint 240 + %uint_4 = OpConstant %uint 4 + %uint_12 = OpConstant %uint 12 + %uint_2 = OpConstant %uint 2 + %uint_1 = OpConstant %uint 1 +%uint_4294967295 = OpConstant %uint 4294967295 + %void = OpTypeVoid + %73 = OpTypeFunction %void + %int_1 = OpConstant %int 1 +%_ptr_Function_int = OpTypePointer Function %int + %81 = OpConstantNull %int + %82 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%tint_first_leading_bit = OpFunction %int None %9 + %v = OpFunctionParameter %int + %13 = OpLabel + %x = OpVariable %_ptr_Function_uint Function %24 + %17 = OpSLessThan %bool %v %int_0 + %20 = OpNot %int %v + %19 = OpBitcast %uint %20 + %21 = OpBitcast %uint %v + %14 = OpSelect %uint %17 %19 %21 + OpStore %x %14 + %27 = OpLoad %uint %x + %29 = OpBitwiseAnd %uint %27 %uint_4294901760 + %26 = OpINotEqual %bool %29 %24 + %25 = OpSelect %uint %26 %uint_16 %uint_0 + %32 = OpLoad %uint %x + %33 = OpShiftRightLogical %uint %32 %25 + OpStore %x %33 + %36 = OpLoad %uint %x + %38 = OpBitwiseAnd %uint %36 %uint_65280 + %35 = OpINotEqual %bool %38 %24 + %34 = OpSelect %uint %35 %uint_8 %uint_0 + %40 = OpLoad %uint %x + %41 = OpShiftRightLogical %uint %40 %34 + OpStore %x %41 + %44 = OpLoad %uint %x + %46 = OpBitwiseAnd %uint %44 %uint_240 + %43 = OpINotEqual %bool %46 %24 + %42 = OpSelect %uint %43 %uint_4 %uint_0 + %48 = OpLoad %uint %x + %49 = OpShiftRightLogical %uint %48 %42 + OpStore %x %49 + %52 = OpLoad %uint %x + %54 = OpBitwiseAnd %uint %52 %uint_12 + %51 = OpINotEqual %bool %54 %24 + %50 = OpSelect %uint %51 %uint_2 %uint_0 + %56 = OpLoad %uint %x + %57 = OpShiftRightLogical %uint %56 %50 + OpStore %x %57 + %60 = OpLoad %uint %x + %61 = OpBitwiseAnd %uint %60 %uint_2 + %59 = OpINotEqual %bool %61 %24 + %58 = OpSelect %uint %59 %uint_1 %uint_0 + %64 = OpLoad %uint %x + %65 = OpIEqual %bool %64 %uint_0 + %63 = OpSelect %uint %65 %uint_4294967295 %uint_0 + %68 = OpBitwiseOr %uint %25 %34 + %69 = OpBitwiseOr %uint %68 %42 + %70 = OpBitwiseOr %uint %69 %50 + %71 = OpBitwiseOr %uint %70 %58 + %72 = OpBitwiseOr %uint %71 %63 + %67 = OpBitcast %int %72 + OpReturnValue %67 + OpFunctionEnd +%firstLeadingBit_57a1a3 = OpFunction %void None %73 + %76 = OpLabel + %res = OpVariable %_ptr_Function_int Function %81 + %77 = OpFunctionCall %int %tint_first_leading_bit %int_1 + OpStore %res %77 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %82 + %84 = OpLabel + %85 = OpFunctionCall %void %firstLeadingBit_57a1a3 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %73 + %87 = OpLabel + %88 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %88 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %73 + %91 = OpLabel + %92 = OpFunctionCall %void %firstLeadingBit_57a1a3 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %73 + %94 = OpLabel + %95 = OpFunctionCall %void %firstLeadingBit_57a1a3 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/firstLeadingBit/57a1a3.wgsl.expected.wgsl b/test/tint/builtins/gen/firstLeadingBit/57a1a3.wgsl.expected.wgsl new file mode 100644 index 0000000000..ff32238d1b --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/57a1a3.wgsl.expected.wgsl @@ -0,0 +1,19 @@ +fn firstLeadingBit_57a1a3() { + var res : i32 = firstLeadingBit(1); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + firstLeadingBit_57a1a3(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + firstLeadingBit_57a1a3(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + firstLeadingBit_57a1a3(); +} diff --git a/test/tint/builtins/gen/firstLeadingBit/6fe804.wgsl b/test/tint/builtins/gen/firstLeadingBit/6fe804.wgsl new file mode 100644 index 0000000000..bf6b11c00b --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/6fe804.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 firstLeadingBit(vec<2, u32>) -> vec<2, u32> +fn firstLeadingBit_6fe804() { + var res: vec2 = firstLeadingBit(vec2()); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + firstLeadingBit_6fe804(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + firstLeadingBit_6fe804(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + firstLeadingBit_6fe804(); +} diff --git a/test/tint/builtins/gen/firstLeadingBit/6fe804.wgsl.expected.glsl b/test/tint/builtins/gen/firstLeadingBit/6fe804.wgsl.expected.glsl new file mode 100644 index 0000000000..d1639b4580 --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/6fe804.wgsl.expected.glsl @@ -0,0 +1,93 @@ +#version 310 es + +uvec2 tint_first_leading_bit(uvec2 v) { + uvec2 x = v; + uvec2 b16 = mix(uvec2(0u), uvec2(16u), bvec2((x & uvec2(4294901760u)))); + x = (x >> b16); + uvec2 b8 = mix(uvec2(0u), uvec2(8u), bvec2((x & uvec2(65280u)))); + x = (x >> b8); + uvec2 b4 = mix(uvec2(0u), uvec2(4u), bvec2((x & uvec2(240u)))); + x = (x >> b4); + uvec2 b2 = mix(uvec2(0u), uvec2(2u), bvec2((x & uvec2(12u)))); + x = (x >> b2); + uvec2 b1 = mix(uvec2(0u), uvec2(1u), bvec2((x & uvec2(2u)))); + uvec2 is_zero = mix(uvec2(0u), uvec2(4294967295u), equal(x, uvec2(0u))); + return uvec2((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_6fe804() { + uvec2 res = tint_first_leading_bit(uvec2(0u, 0u)); +} + +vec4 vertex_main() { + firstLeadingBit_6fe804(); + 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_first_leading_bit(uvec2 v) { + uvec2 x = v; + uvec2 b16 = mix(uvec2(0u), uvec2(16u), bvec2((x & uvec2(4294901760u)))); + x = (x >> b16); + uvec2 b8 = mix(uvec2(0u), uvec2(8u), bvec2((x & uvec2(65280u)))); + x = (x >> b8); + uvec2 b4 = mix(uvec2(0u), uvec2(4u), bvec2((x & uvec2(240u)))); + x = (x >> b4); + uvec2 b2 = mix(uvec2(0u), uvec2(2u), bvec2((x & uvec2(12u)))); + x = (x >> b2); + uvec2 b1 = mix(uvec2(0u), uvec2(1u), bvec2((x & uvec2(2u)))); + uvec2 is_zero = mix(uvec2(0u), uvec2(4294967295u), equal(x, uvec2(0u))); + return uvec2((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_6fe804() { + uvec2 res = tint_first_leading_bit(uvec2(0u, 0u)); +} + +void fragment_main() { + firstLeadingBit_6fe804(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +uvec2 tint_first_leading_bit(uvec2 v) { + uvec2 x = v; + uvec2 b16 = mix(uvec2(0u), uvec2(16u), bvec2((x & uvec2(4294901760u)))); + x = (x >> b16); + uvec2 b8 = mix(uvec2(0u), uvec2(8u), bvec2((x & uvec2(65280u)))); + x = (x >> b8); + uvec2 b4 = mix(uvec2(0u), uvec2(4u), bvec2((x & uvec2(240u)))); + x = (x >> b4); + uvec2 b2 = mix(uvec2(0u), uvec2(2u), bvec2((x & uvec2(12u)))); + x = (x >> b2); + uvec2 b1 = mix(uvec2(0u), uvec2(1u), bvec2((x & uvec2(2u)))); + uvec2 is_zero = mix(uvec2(0u), uvec2(4294967295u), equal(x, uvec2(0u))); + return uvec2((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_6fe804() { + uvec2 res = tint_first_leading_bit(uvec2(0u, 0u)); +} + +void compute_main() { + firstLeadingBit_6fe804(); +} + +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/firstLeadingBit/6fe804.wgsl.expected.hlsl b/test/tint/builtins/gen/firstLeadingBit/6fe804.wgsl.expected.hlsl new file mode 100644 index 0000000000..374977ab1c --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/6fe804.wgsl.expected.hlsl @@ -0,0 +1,45 @@ +uint2 tint_first_leading_bit(uint2 v) { + uint2 x = v; + const uint2 b16 = (bool2((x & uint2((4294901760u).xx))) ? uint2((16u).xx) : uint2((0u).xx)); + x = (x >> b16); + const uint2 b8 = (bool2((x & uint2((65280u).xx))) ? uint2((8u).xx) : uint2((0u).xx)); + x = (x >> b8); + const uint2 b4 = (bool2((x & uint2((240u).xx))) ? uint2((4u).xx) : uint2((0u).xx)); + x = (x >> b4); + const uint2 b2 = (bool2((x & uint2((12u).xx))) ? uint2((2u).xx) : uint2((0u).xx)); + x = (x >> b2); + const uint2 b1 = (bool2((x & uint2((2u).xx))) ? uint2((1u).xx) : uint2((0u).xx)); + const uint2 is_zero = ((x == uint2((0u).xx)) ? uint2((4294967295u).xx) : uint2((0u).xx)); + return uint2((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_6fe804() { + uint2 res = tint_first_leading_bit(uint2(0u, 0u)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + firstLeadingBit_6fe804(); + 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() { + firstLeadingBit_6fe804(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + firstLeadingBit_6fe804(); + return; +} diff --git a/test/tint/builtins/gen/firstLeadingBit/6fe804.wgsl.expected.msl b/test/tint/builtins/gen/firstLeadingBit/6fe804.wgsl.expected.msl new file mode 100644 index 0000000000..6a5203bf4c --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/6fe804.wgsl.expected.msl @@ -0,0 +1,48 @@ +#include + +using namespace metal; +uint2 tint_first_leading_bit(uint2 v) { + uint2 x = v; + uint2 const b16 = select(uint2(0u), uint2(16u), bool2((x & uint2(4294901760u)))); + x = (x >> b16); + uint2 const b8 = select(uint2(0u), uint2(8u), bool2((x & uint2(65280u)))); + x = (x >> b8); + uint2 const b4 = select(uint2(0u), uint2(4u), bool2((x & uint2(240u)))); + x = (x >> b4); + uint2 const b2 = select(uint2(0u), uint2(2u), bool2((x & uint2(12u)))); + x = (x >> b2); + uint2 const b1 = select(uint2(0u), uint2(1u), bool2((x & uint2(2u)))); + uint2 const is_zero = select(uint2(0u), uint2(4294967295u), (x == uint2(0u))); + return uint2((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_6fe804() { + uint2 res = tint_first_leading_bit(uint2()); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + firstLeadingBit_6fe804(); + 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() { + firstLeadingBit_6fe804(); + return; +} + +kernel void compute_main() { + firstLeadingBit_6fe804(); + return; +} + diff --git a/test/tint/builtins/gen/firstLeadingBit/6fe804.wgsl.expected.spvasm b/test/tint/builtins/gen/firstLeadingBit/6fe804.wgsl.expected.spvasm new file mode 100644 index 0000000000..399a3d1969 --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/6fe804.wgsl.expected.spvasm @@ -0,0 +1,142 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 99 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size + OpEntryPoint Fragment %fragment_main "fragment_main" + OpEntryPoint GLCompute %compute_main "compute_main" + OpExecutionMode %fragment_main OriginUpperLeft + OpExecutionMode %compute_main LocalSize 1 1 1 + OpName %value "value" + OpName %vertex_point_size "vertex_point_size" + OpName %tint_first_leading_bit "tint_first_leading_bit" + OpName %v "v" + OpName %x "x" + OpName %firstLeadingBit_6fe804 "firstLeadingBit_6fe804" + OpName %res "res" + OpName %vertex_main_inner "vertex_main_inner" + OpName %vertex_main "vertex_main" + OpName %fragment_main "fragment_main" + OpName %compute_main "compute_main" + OpDecorate %value BuiltIn Position + OpDecorate %vertex_point_size BuiltIn PointSize + %float = OpTypeFloat 32 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %5 = OpConstantNull %v4float + %value = OpVariable %_ptr_Output_v4float Output %5 +%_ptr_Output_float = OpTypePointer Output %float + %8 = OpConstantNull %float +%vertex_point_size = OpVariable %_ptr_Output_float Output %8 + %uint = OpTypeInt 32 0 + %v2uint = OpTypeVector %uint 2 + %9 = OpTypeFunction %v2uint %v2uint +%_ptr_Function_v2uint = OpTypePointer Function %v2uint + %17 = OpConstantNull %v2uint + %bool = OpTypeBool + %v2bool = OpTypeVector %bool 2 +%uint_4294901760 = OpConstant %uint 4294901760 + %24 = OpConstantComposite %v2uint %uint_4294901760 %uint_4294901760 + %uint_16 = OpConstant %uint 16 + %27 = OpConstantComposite %v2uint %uint_16 %uint_16 + %uint_0 = OpConstant %uint 0 + %29 = OpConstantComposite %v2uint %uint_0 %uint_0 + %uint_65280 = OpConstant %uint 65280 + %36 = OpConstantComposite %v2uint %uint_65280 %uint_65280 + %uint_8 = OpConstant %uint 8 + %39 = OpConstantComposite %v2uint %uint_8 %uint_8 + %uint_240 = OpConstant %uint 240 + %46 = OpConstantComposite %v2uint %uint_240 %uint_240 + %uint_4 = OpConstant %uint 4 + %49 = OpConstantComposite %v2uint %uint_4 %uint_4 + %uint_12 = OpConstant %uint 12 + %56 = OpConstantComposite %v2uint %uint_12 %uint_12 + %uint_2 = OpConstant %uint 2 + %59 = OpConstantComposite %v2uint %uint_2 %uint_2 + %uint_1 = OpConstant %uint 1 + %67 = OpConstantComposite %v2uint %uint_1 %uint_1 +%uint_4294967295 = OpConstant %uint 4294967295 + %72 = OpConstantComposite %v2uint %uint_4294967295 %uint_4294967295 + %void = OpTypeVoid + %79 = OpTypeFunction %void + %85 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%tint_first_leading_bit = OpFunction %v2uint None %9 + %v = OpFunctionParameter %v2uint + %14 = OpLabel + %x = OpVariable %_ptr_Function_v2uint Function %17 + OpStore %x %v + %22 = OpLoad %v2uint %x + %25 = OpBitwiseAnd %v2uint %22 %24 + %19 = OpINotEqual %v2bool %25 %17 + %18 = OpSelect %v2uint %19 %27 %29 + %30 = OpLoad %v2uint %x + %31 = OpShiftRightLogical %v2uint %30 %18 + OpStore %x %31 + %34 = OpLoad %v2uint %x + %37 = OpBitwiseAnd %v2uint %34 %36 + %33 = OpINotEqual %v2bool %37 %17 + %32 = OpSelect %v2uint %33 %39 %29 + %40 = OpLoad %v2uint %x + %41 = OpShiftRightLogical %v2uint %40 %32 + OpStore %x %41 + %44 = OpLoad %v2uint %x + %47 = OpBitwiseAnd %v2uint %44 %46 + %43 = OpINotEqual %v2bool %47 %17 + %42 = OpSelect %v2uint %43 %49 %29 + %50 = OpLoad %v2uint %x + %51 = OpShiftRightLogical %v2uint %50 %42 + OpStore %x %51 + %54 = OpLoad %v2uint %x + %57 = OpBitwiseAnd %v2uint %54 %56 + %53 = OpINotEqual %v2bool %57 %17 + %52 = OpSelect %v2uint %53 %59 %29 + %60 = OpLoad %v2uint %x + %61 = OpShiftRightLogical %v2uint %60 %52 + OpStore %x %61 + %64 = OpLoad %v2uint %x + %65 = OpBitwiseAnd %v2uint %64 %59 + %63 = OpINotEqual %v2bool %65 %17 + %62 = OpSelect %v2uint %63 %67 %29 + %69 = OpLoad %v2uint %x + %70 = OpIEqual %v2bool %69 %29 + %68 = OpSelect %v2uint %70 %72 %29 + %74 = OpBitwiseOr %v2uint %18 %32 + %75 = OpBitwiseOr %v2uint %74 %42 + %76 = OpBitwiseOr %v2uint %75 %52 + %77 = OpBitwiseOr %v2uint %76 %62 + %78 = OpBitwiseOr %v2uint %77 %68 + OpReturnValue %78 + OpFunctionEnd +%firstLeadingBit_6fe804 = OpFunction %void None %79 + %82 = OpLabel + %res = OpVariable %_ptr_Function_v2uint Function %17 + %83 = OpFunctionCall %v2uint %tint_first_leading_bit %17 + OpStore %res %83 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %85 + %87 = OpLabel + %88 = OpFunctionCall %void %firstLeadingBit_6fe804 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %79 + %90 = OpLabel + %91 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %91 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %79 + %94 = OpLabel + %95 = OpFunctionCall %void %firstLeadingBit_6fe804 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %79 + %97 = OpLabel + %98 = OpFunctionCall %void %firstLeadingBit_6fe804 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/firstLeadingBit/6fe804.wgsl.expected.wgsl b/test/tint/builtins/gen/firstLeadingBit/6fe804.wgsl.expected.wgsl new file mode 100644 index 0000000000..8eefa88ebc --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/6fe804.wgsl.expected.wgsl @@ -0,0 +1,19 @@ +fn firstLeadingBit_6fe804() { + var res : vec2 = firstLeadingBit(vec2()); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + firstLeadingBit_6fe804(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + firstLeadingBit_6fe804(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + firstLeadingBit_6fe804(); +} diff --git a/test/tint/builtins/gen/firstLeadingBit/a622c2.wgsl b/test/tint/builtins/gen/firstLeadingBit/a622c2.wgsl new file mode 100644 index 0000000000..737392eb84 --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/a622c2.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 firstLeadingBit(vec<2, i32>) -> vec<2, i32> +fn firstLeadingBit_a622c2() { + var res: vec2 = firstLeadingBit(vec2()); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + firstLeadingBit_a622c2(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + firstLeadingBit_a622c2(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + firstLeadingBit_a622c2(); +} diff --git a/test/tint/builtins/gen/firstLeadingBit/a622c2.wgsl.expected.glsl b/test/tint/builtins/gen/firstLeadingBit/a622c2.wgsl.expected.glsl new file mode 100644 index 0000000000..40a31ff373 --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/a622c2.wgsl.expected.glsl @@ -0,0 +1,93 @@ +#version 310 es + +ivec2 tint_first_leading_bit(ivec2 v) { + uvec2 x = mix(uvec2(v), uvec2(~(v)), lessThan(v, ivec2(0))); + uvec2 b16 = mix(uvec2(0u), uvec2(16u), bvec2((x & uvec2(4294901760u)))); + x = (x >> b16); + uvec2 b8 = mix(uvec2(0u), uvec2(8u), bvec2((x & uvec2(65280u)))); + x = (x >> b8); + uvec2 b4 = mix(uvec2(0u), uvec2(4u), bvec2((x & uvec2(240u)))); + x = (x >> b4); + uvec2 b2 = mix(uvec2(0u), uvec2(2u), bvec2((x & uvec2(12u)))); + x = (x >> b2); + uvec2 b1 = mix(uvec2(0u), uvec2(1u), bvec2((x & uvec2(2u)))); + uvec2 is_zero = mix(uvec2(0u), uvec2(4294967295u), equal(x, uvec2(0u))); + return ivec2((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_a622c2() { + ivec2 res = tint_first_leading_bit(ivec2(0, 0)); +} + +vec4 vertex_main() { + firstLeadingBit_a622c2(); + 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_first_leading_bit(ivec2 v) { + uvec2 x = mix(uvec2(v), uvec2(~(v)), lessThan(v, ivec2(0))); + uvec2 b16 = mix(uvec2(0u), uvec2(16u), bvec2((x & uvec2(4294901760u)))); + x = (x >> b16); + uvec2 b8 = mix(uvec2(0u), uvec2(8u), bvec2((x & uvec2(65280u)))); + x = (x >> b8); + uvec2 b4 = mix(uvec2(0u), uvec2(4u), bvec2((x & uvec2(240u)))); + x = (x >> b4); + uvec2 b2 = mix(uvec2(0u), uvec2(2u), bvec2((x & uvec2(12u)))); + x = (x >> b2); + uvec2 b1 = mix(uvec2(0u), uvec2(1u), bvec2((x & uvec2(2u)))); + uvec2 is_zero = mix(uvec2(0u), uvec2(4294967295u), equal(x, uvec2(0u))); + return ivec2((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_a622c2() { + ivec2 res = tint_first_leading_bit(ivec2(0, 0)); +} + +void fragment_main() { + firstLeadingBit_a622c2(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +ivec2 tint_first_leading_bit(ivec2 v) { + uvec2 x = mix(uvec2(v), uvec2(~(v)), lessThan(v, ivec2(0))); + uvec2 b16 = mix(uvec2(0u), uvec2(16u), bvec2((x & uvec2(4294901760u)))); + x = (x >> b16); + uvec2 b8 = mix(uvec2(0u), uvec2(8u), bvec2((x & uvec2(65280u)))); + x = (x >> b8); + uvec2 b4 = mix(uvec2(0u), uvec2(4u), bvec2((x & uvec2(240u)))); + x = (x >> b4); + uvec2 b2 = mix(uvec2(0u), uvec2(2u), bvec2((x & uvec2(12u)))); + x = (x >> b2); + uvec2 b1 = mix(uvec2(0u), uvec2(1u), bvec2((x & uvec2(2u)))); + uvec2 is_zero = mix(uvec2(0u), uvec2(4294967295u), equal(x, uvec2(0u))); + return ivec2((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_a622c2() { + ivec2 res = tint_first_leading_bit(ivec2(0, 0)); +} + +void compute_main() { + firstLeadingBit_a622c2(); +} + +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/firstLeadingBit/a622c2.wgsl.expected.hlsl b/test/tint/builtins/gen/firstLeadingBit/a622c2.wgsl.expected.hlsl new file mode 100644 index 0000000000..c660637cd5 --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/a622c2.wgsl.expected.hlsl @@ -0,0 +1,45 @@ +int2 tint_first_leading_bit(int2 v) { + uint2 x = ((v < int2((0).xx)) ? uint2(~(v)) : uint2(v)); + const uint2 b16 = (bool2((x & uint2((4294901760u).xx))) ? uint2((16u).xx) : uint2((0u).xx)); + x = (x >> b16); + const uint2 b8 = (bool2((x & uint2((65280u).xx))) ? uint2((8u).xx) : uint2((0u).xx)); + x = (x >> b8); + const uint2 b4 = (bool2((x & uint2((240u).xx))) ? uint2((4u).xx) : uint2((0u).xx)); + x = (x >> b4); + const uint2 b2 = (bool2((x & uint2((12u).xx))) ? uint2((2u).xx) : uint2((0u).xx)); + x = (x >> b2); + const uint2 b1 = (bool2((x & uint2((2u).xx))) ? uint2((1u).xx) : uint2((0u).xx)); + const uint2 is_zero = ((x == uint2((0u).xx)) ? uint2((4294967295u).xx) : uint2((0u).xx)); + return int2((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_a622c2() { + int2 res = tint_first_leading_bit(int2(0, 0)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + firstLeadingBit_a622c2(); + 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() { + firstLeadingBit_a622c2(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + firstLeadingBit_a622c2(); + return; +} diff --git a/test/tint/builtins/gen/firstLeadingBit/a622c2.wgsl.expected.msl b/test/tint/builtins/gen/firstLeadingBit/a622c2.wgsl.expected.msl new file mode 100644 index 0000000000..c4bebbb450 --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/a622c2.wgsl.expected.msl @@ -0,0 +1,48 @@ +#include + +using namespace metal; +int2 tint_first_leading_bit(int2 v) { + uint2 x = select(uint2(v), uint2(~(v)), (v < int2(0))); + uint2 const b16 = select(uint2(0u), uint2(16u), bool2((x & uint2(4294901760u)))); + x = (x >> b16); + uint2 const b8 = select(uint2(0u), uint2(8u), bool2((x & uint2(65280u)))); + x = (x >> b8); + uint2 const b4 = select(uint2(0u), uint2(4u), bool2((x & uint2(240u)))); + x = (x >> b4); + uint2 const b2 = select(uint2(0u), uint2(2u), bool2((x & uint2(12u)))); + x = (x >> b2); + uint2 const b1 = select(uint2(0u), uint2(1u), bool2((x & uint2(2u)))); + uint2 const is_zero = select(uint2(0u), uint2(4294967295u), (x == uint2(0u))); + return int2((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_a622c2() { + int2 res = tint_first_leading_bit(int2()); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + firstLeadingBit_a622c2(); + 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() { + firstLeadingBit_a622c2(); + return; +} + +kernel void compute_main() { + firstLeadingBit_a622c2(); + return; +} + diff --git a/test/tint/builtins/gen/firstLeadingBit/a622c2.wgsl.expected.spvasm b/test/tint/builtins/gen/firstLeadingBit/a622c2.wgsl.expected.spvasm new file mode 100644 index 0000000000..3f27c360ca --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/a622c2.wgsl.expected.spvasm @@ -0,0 +1,154 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 110 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size + OpEntryPoint Fragment %fragment_main "fragment_main" + OpEntryPoint GLCompute %compute_main "compute_main" + OpExecutionMode %fragment_main OriginUpperLeft + OpExecutionMode %compute_main LocalSize 1 1 1 + OpName %value "value" + OpName %vertex_point_size "vertex_point_size" + OpName %tint_first_leading_bit "tint_first_leading_bit" + OpName %v "v" + OpName %x "x" + OpName %firstLeadingBit_a622c2 "firstLeadingBit_a622c2" + OpName %res "res" + OpName %vertex_main_inner "vertex_main_inner" + OpName %vertex_main "vertex_main" + OpName %fragment_main "fragment_main" + OpName %compute_main "compute_main" + OpDecorate %value BuiltIn Position + OpDecorate %vertex_point_size BuiltIn PointSize + %float = OpTypeFloat 32 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %5 = OpConstantNull %v4float + %value = OpVariable %_ptr_Output_v4float Output %5 +%_ptr_Output_float = OpTypePointer Output %float + %8 = OpConstantNull %float +%vertex_point_size = OpVariable %_ptr_Output_float Output %8 + %int = OpTypeInt 32 1 + %v2int = OpTypeVector %int 2 + %9 = OpTypeFunction %v2int %v2int + %uint = OpTypeInt 32 0 + %v2uint = OpTypeVector %uint 2 + %int_0 = OpConstant %int 0 + %19 = OpConstantComposite %v2int %int_0 %int_0 + %bool = OpTypeBool + %v2bool = OpTypeVector %bool 2 +%_ptr_Function_v2uint = OpTypePointer Function %v2uint + %28 = OpConstantNull %v2uint +%uint_4294901760 = OpConstant %uint 4294901760 + %33 = OpConstantComposite %v2uint %uint_4294901760 %uint_4294901760 + %uint_16 = OpConstant %uint 16 + %36 = OpConstantComposite %v2uint %uint_16 %uint_16 + %uint_0 = OpConstant %uint 0 + %38 = OpConstantComposite %v2uint %uint_0 %uint_0 + %uint_65280 = OpConstant %uint 65280 + %45 = OpConstantComposite %v2uint %uint_65280 %uint_65280 + %uint_8 = OpConstant %uint 8 + %48 = OpConstantComposite %v2uint %uint_8 %uint_8 + %uint_240 = OpConstant %uint 240 + %55 = OpConstantComposite %v2uint %uint_240 %uint_240 + %uint_4 = OpConstant %uint 4 + %58 = OpConstantComposite %v2uint %uint_4 %uint_4 + %uint_12 = OpConstant %uint 12 + %65 = OpConstantComposite %v2uint %uint_12 %uint_12 + %uint_2 = OpConstant %uint 2 + %68 = OpConstantComposite %v2uint %uint_2 %uint_2 + %uint_1 = OpConstant %uint 1 + %76 = OpConstantComposite %v2uint %uint_1 %uint_1 +%uint_4294967295 = OpConstant %uint 4294967295 + %81 = OpConstantComposite %v2uint %uint_4294967295 %uint_4294967295 + %void = OpTypeVoid + %88 = OpTypeFunction %void + %93 = OpConstantNull %v2int +%_ptr_Function_v2int = OpTypePointer Function %v2int + %96 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%tint_first_leading_bit = OpFunction %v2int None %9 + %v = OpFunctionParameter %v2int + %14 = OpLabel + %x = OpVariable %_ptr_Function_v2uint Function %28 + %20 = OpSLessThan %v2bool %v %19 + %24 = OpNot %v2int %v + %23 = OpBitcast %v2uint %24 + %25 = OpBitcast %v2uint %v + %15 = OpSelect %v2uint %20 %23 %25 + OpStore %x %15 + %31 = OpLoad %v2uint %x + %34 = OpBitwiseAnd %v2uint %31 %33 + %30 = OpINotEqual %v2bool %34 %28 + %29 = OpSelect %v2uint %30 %36 %38 + %39 = OpLoad %v2uint %x + %40 = OpShiftRightLogical %v2uint %39 %29 + OpStore %x %40 + %43 = OpLoad %v2uint %x + %46 = OpBitwiseAnd %v2uint %43 %45 + %42 = OpINotEqual %v2bool %46 %28 + %41 = OpSelect %v2uint %42 %48 %38 + %49 = OpLoad %v2uint %x + %50 = OpShiftRightLogical %v2uint %49 %41 + OpStore %x %50 + %53 = OpLoad %v2uint %x + %56 = OpBitwiseAnd %v2uint %53 %55 + %52 = OpINotEqual %v2bool %56 %28 + %51 = OpSelect %v2uint %52 %58 %38 + %59 = OpLoad %v2uint %x + %60 = OpShiftRightLogical %v2uint %59 %51 + OpStore %x %60 + %63 = OpLoad %v2uint %x + %66 = OpBitwiseAnd %v2uint %63 %65 + %62 = OpINotEqual %v2bool %66 %28 + %61 = OpSelect %v2uint %62 %68 %38 + %69 = OpLoad %v2uint %x + %70 = OpShiftRightLogical %v2uint %69 %61 + OpStore %x %70 + %73 = OpLoad %v2uint %x + %74 = OpBitwiseAnd %v2uint %73 %68 + %72 = OpINotEqual %v2bool %74 %28 + %71 = OpSelect %v2uint %72 %76 %38 + %78 = OpLoad %v2uint %x + %79 = OpIEqual %v2bool %78 %38 + %77 = OpSelect %v2uint %79 %81 %38 + %83 = OpBitwiseOr %v2uint %29 %41 + %84 = OpBitwiseOr %v2uint %83 %51 + %85 = OpBitwiseOr %v2uint %84 %61 + %86 = OpBitwiseOr %v2uint %85 %71 + %87 = OpBitwiseOr %v2uint %86 %77 + %82 = OpBitcast %v2int %87 + OpReturnValue %82 + OpFunctionEnd +%firstLeadingBit_a622c2 = OpFunction %void None %88 + %91 = OpLabel + %res = OpVariable %_ptr_Function_v2int Function %93 + %92 = OpFunctionCall %v2int %tint_first_leading_bit %93 + OpStore %res %92 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %96 + %98 = OpLabel + %99 = OpFunctionCall %void %firstLeadingBit_a622c2 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %88 + %101 = OpLabel + %102 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %102 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %88 + %105 = OpLabel + %106 = OpFunctionCall %void %firstLeadingBit_a622c2 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %88 + %108 = OpLabel + %109 = OpFunctionCall %void %firstLeadingBit_a622c2 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/firstLeadingBit/a622c2.wgsl.expected.wgsl b/test/tint/builtins/gen/firstLeadingBit/a622c2.wgsl.expected.wgsl new file mode 100644 index 0000000000..e7fb9d12b4 --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/a622c2.wgsl.expected.wgsl @@ -0,0 +1,19 @@ +fn firstLeadingBit_a622c2() { + var res : vec2 = firstLeadingBit(vec2()); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + firstLeadingBit_a622c2(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + firstLeadingBit_a622c2(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + firstLeadingBit_a622c2(); +} diff --git a/test/tint/builtins/gen/firstLeadingBit/c1f940.wgsl b/test/tint/builtins/gen/firstLeadingBit/c1f940.wgsl new file mode 100644 index 0000000000..b085fdf752 --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/c1f940.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 firstLeadingBit(vec<4, i32>) -> vec<4, i32> +fn firstLeadingBit_c1f940() { + var res: vec4 = firstLeadingBit(vec4()); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + firstLeadingBit_c1f940(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + firstLeadingBit_c1f940(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + firstLeadingBit_c1f940(); +} diff --git a/test/tint/builtins/gen/firstLeadingBit/c1f940.wgsl.expected.glsl b/test/tint/builtins/gen/firstLeadingBit/c1f940.wgsl.expected.glsl new file mode 100644 index 0000000000..c73d7a80f5 --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/c1f940.wgsl.expected.glsl @@ -0,0 +1,93 @@ +#version 310 es + +ivec4 tint_first_leading_bit(ivec4 v) { + uvec4 x = mix(uvec4(v), uvec4(~(v)), lessThan(v, ivec4(0))); + uvec4 b16 = mix(uvec4(0u), uvec4(16u), bvec4((x & uvec4(4294901760u)))); + x = (x >> b16); + uvec4 b8 = mix(uvec4(0u), uvec4(8u), bvec4((x & uvec4(65280u)))); + x = (x >> b8); + uvec4 b4 = mix(uvec4(0u), uvec4(4u), bvec4((x & uvec4(240u)))); + x = (x >> b4); + uvec4 b2 = mix(uvec4(0u), uvec4(2u), bvec4((x & uvec4(12u)))); + x = (x >> b2); + uvec4 b1 = mix(uvec4(0u), uvec4(1u), bvec4((x & uvec4(2u)))); + uvec4 is_zero = mix(uvec4(0u), uvec4(4294967295u), equal(x, uvec4(0u))); + return ivec4((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_c1f940() { + ivec4 res = tint_first_leading_bit(ivec4(0, 0, 0, 0)); +} + +vec4 vertex_main() { + firstLeadingBit_c1f940(); + 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_first_leading_bit(ivec4 v) { + uvec4 x = mix(uvec4(v), uvec4(~(v)), lessThan(v, ivec4(0))); + uvec4 b16 = mix(uvec4(0u), uvec4(16u), bvec4((x & uvec4(4294901760u)))); + x = (x >> b16); + uvec4 b8 = mix(uvec4(0u), uvec4(8u), bvec4((x & uvec4(65280u)))); + x = (x >> b8); + uvec4 b4 = mix(uvec4(0u), uvec4(4u), bvec4((x & uvec4(240u)))); + x = (x >> b4); + uvec4 b2 = mix(uvec4(0u), uvec4(2u), bvec4((x & uvec4(12u)))); + x = (x >> b2); + uvec4 b1 = mix(uvec4(0u), uvec4(1u), bvec4((x & uvec4(2u)))); + uvec4 is_zero = mix(uvec4(0u), uvec4(4294967295u), equal(x, uvec4(0u))); + return ivec4((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_c1f940() { + ivec4 res = tint_first_leading_bit(ivec4(0, 0, 0, 0)); +} + +void fragment_main() { + firstLeadingBit_c1f940(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +ivec4 tint_first_leading_bit(ivec4 v) { + uvec4 x = mix(uvec4(v), uvec4(~(v)), lessThan(v, ivec4(0))); + uvec4 b16 = mix(uvec4(0u), uvec4(16u), bvec4((x & uvec4(4294901760u)))); + x = (x >> b16); + uvec4 b8 = mix(uvec4(0u), uvec4(8u), bvec4((x & uvec4(65280u)))); + x = (x >> b8); + uvec4 b4 = mix(uvec4(0u), uvec4(4u), bvec4((x & uvec4(240u)))); + x = (x >> b4); + uvec4 b2 = mix(uvec4(0u), uvec4(2u), bvec4((x & uvec4(12u)))); + x = (x >> b2); + uvec4 b1 = mix(uvec4(0u), uvec4(1u), bvec4((x & uvec4(2u)))); + uvec4 is_zero = mix(uvec4(0u), uvec4(4294967295u), equal(x, uvec4(0u))); + return ivec4((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_c1f940() { + ivec4 res = tint_first_leading_bit(ivec4(0, 0, 0, 0)); +} + +void compute_main() { + firstLeadingBit_c1f940(); +} + +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/firstLeadingBit/c1f940.wgsl.expected.hlsl b/test/tint/builtins/gen/firstLeadingBit/c1f940.wgsl.expected.hlsl new file mode 100644 index 0000000000..bed5beda2c --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/c1f940.wgsl.expected.hlsl @@ -0,0 +1,45 @@ +int4 tint_first_leading_bit(int4 v) { + uint4 x = ((v < int4((0).xxxx)) ? uint4(~(v)) : uint4(v)); + const uint4 b16 = (bool4((x & uint4((4294901760u).xxxx))) ? uint4((16u).xxxx) : uint4((0u).xxxx)); + x = (x >> b16); + const uint4 b8 = (bool4((x & uint4((65280u).xxxx))) ? uint4((8u).xxxx) : uint4((0u).xxxx)); + x = (x >> b8); + const uint4 b4 = (bool4((x & uint4((240u).xxxx))) ? uint4((4u).xxxx) : uint4((0u).xxxx)); + x = (x >> b4); + const uint4 b2 = (bool4((x & uint4((12u).xxxx))) ? uint4((2u).xxxx) : uint4((0u).xxxx)); + x = (x >> b2); + const uint4 b1 = (bool4((x & uint4((2u).xxxx))) ? uint4((1u).xxxx) : uint4((0u).xxxx)); + const uint4 is_zero = ((x == uint4((0u).xxxx)) ? uint4((4294967295u).xxxx) : uint4((0u).xxxx)); + return int4((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_c1f940() { + int4 res = tint_first_leading_bit(int4(0, 0, 0, 0)); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + firstLeadingBit_c1f940(); + 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() { + firstLeadingBit_c1f940(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + firstLeadingBit_c1f940(); + return; +} diff --git a/test/tint/builtins/gen/firstLeadingBit/c1f940.wgsl.expected.msl b/test/tint/builtins/gen/firstLeadingBit/c1f940.wgsl.expected.msl new file mode 100644 index 0000000000..24eeb0d4e3 --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/c1f940.wgsl.expected.msl @@ -0,0 +1,48 @@ +#include + +using namespace metal; +int4 tint_first_leading_bit(int4 v) { + uint4 x = select(uint4(v), uint4(~(v)), (v < int4(0))); + uint4 const b16 = select(uint4(0u), uint4(16u), bool4((x & uint4(4294901760u)))); + x = (x >> b16); + uint4 const b8 = select(uint4(0u), uint4(8u), bool4((x & uint4(65280u)))); + x = (x >> b8); + uint4 const b4 = select(uint4(0u), uint4(4u), bool4((x & uint4(240u)))); + x = (x >> b4); + uint4 const b2 = select(uint4(0u), uint4(2u), bool4((x & uint4(12u)))); + x = (x >> b2); + uint4 const b1 = select(uint4(0u), uint4(1u), bool4((x & uint4(2u)))); + uint4 const is_zero = select(uint4(0u), uint4(4294967295u), (x == uint4(0u))); + return int4((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_c1f940() { + int4 res = tint_first_leading_bit(int4()); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + firstLeadingBit_c1f940(); + 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() { + firstLeadingBit_c1f940(); + return; +} + +kernel void compute_main() { + firstLeadingBit_c1f940(); + return; +} + diff --git a/test/tint/builtins/gen/firstLeadingBit/c1f940.wgsl.expected.spvasm b/test/tint/builtins/gen/firstLeadingBit/c1f940.wgsl.expected.spvasm new file mode 100644 index 0000000000..280467959c --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/c1f940.wgsl.expected.spvasm @@ -0,0 +1,154 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 110 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size + OpEntryPoint Fragment %fragment_main "fragment_main" + OpEntryPoint GLCompute %compute_main "compute_main" + OpExecutionMode %fragment_main OriginUpperLeft + OpExecutionMode %compute_main LocalSize 1 1 1 + OpName %value "value" + OpName %vertex_point_size "vertex_point_size" + OpName %tint_first_leading_bit "tint_first_leading_bit" + OpName %v "v" + OpName %x "x" + OpName %firstLeadingBit_c1f940 "firstLeadingBit_c1f940" + OpName %res "res" + OpName %vertex_main_inner "vertex_main_inner" + OpName %vertex_main "vertex_main" + OpName %fragment_main "fragment_main" + OpName %compute_main "compute_main" + OpDecorate %value BuiltIn Position + OpDecorate %vertex_point_size BuiltIn PointSize + %float = OpTypeFloat 32 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %5 = OpConstantNull %v4float + %value = OpVariable %_ptr_Output_v4float Output %5 +%_ptr_Output_float = OpTypePointer Output %float + %8 = OpConstantNull %float +%vertex_point_size = OpVariable %_ptr_Output_float Output %8 + %int = OpTypeInt 32 1 + %v4int = OpTypeVector %int 4 + %9 = OpTypeFunction %v4int %v4int + %uint = OpTypeInt 32 0 + %v4uint = OpTypeVector %uint 4 + %int_0 = OpConstant %int 0 + %19 = OpConstantComposite %v4int %int_0 %int_0 %int_0 %int_0 + %bool = OpTypeBool + %v4bool = OpTypeVector %bool 4 +%_ptr_Function_v4uint = OpTypePointer Function %v4uint + %28 = OpConstantNull %v4uint +%uint_4294901760 = OpConstant %uint 4294901760 + %33 = OpConstantComposite %v4uint %uint_4294901760 %uint_4294901760 %uint_4294901760 %uint_4294901760 + %uint_16 = OpConstant %uint 16 + %36 = OpConstantComposite %v4uint %uint_16 %uint_16 %uint_16 %uint_16 + %uint_0 = OpConstant %uint 0 + %38 = OpConstantComposite %v4uint %uint_0 %uint_0 %uint_0 %uint_0 + %uint_65280 = OpConstant %uint 65280 + %45 = OpConstantComposite %v4uint %uint_65280 %uint_65280 %uint_65280 %uint_65280 + %uint_8 = OpConstant %uint 8 + %48 = OpConstantComposite %v4uint %uint_8 %uint_8 %uint_8 %uint_8 + %uint_240 = OpConstant %uint 240 + %55 = OpConstantComposite %v4uint %uint_240 %uint_240 %uint_240 %uint_240 + %uint_4 = OpConstant %uint 4 + %58 = OpConstantComposite %v4uint %uint_4 %uint_4 %uint_4 %uint_4 + %uint_12 = OpConstant %uint 12 + %65 = OpConstantComposite %v4uint %uint_12 %uint_12 %uint_12 %uint_12 + %uint_2 = OpConstant %uint 2 + %68 = OpConstantComposite %v4uint %uint_2 %uint_2 %uint_2 %uint_2 + %uint_1 = OpConstant %uint 1 + %76 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1 +%uint_4294967295 = OpConstant %uint 4294967295 + %81 = OpConstantComposite %v4uint %uint_4294967295 %uint_4294967295 %uint_4294967295 %uint_4294967295 + %void = OpTypeVoid + %88 = OpTypeFunction %void + %93 = OpConstantNull %v4int +%_ptr_Function_v4int = OpTypePointer Function %v4int + %96 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%tint_first_leading_bit = OpFunction %v4int None %9 + %v = OpFunctionParameter %v4int + %14 = OpLabel + %x = OpVariable %_ptr_Function_v4uint Function %28 + %20 = OpSLessThan %v4bool %v %19 + %24 = OpNot %v4int %v + %23 = OpBitcast %v4uint %24 + %25 = OpBitcast %v4uint %v + %15 = OpSelect %v4uint %20 %23 %25 + OpStore %x %15 + %31 = OpLoad %v4uint %x + %34 = OpBitwiseAnd %v4uint %31 %33 + %30 = OpINotEqual %v4bool %34 %28 + %29 = OpSelect %v4uint %30 %36 %38 + %39 = OpLoad %v4uint %x + %40 = OpShiftRightLogical %v4uint %39 %29 + OpStore %x %40 + %43 = OpLoad %v4uint %x + %46 = OpBitwiseAnd %v4uint %43 %45 + %42 = OpINotEqual %v4bool %46 %28 + %41 = OpSelect %v4uint %42 %48 %38 + %49 = OpLoad %v4uint %x + %50 = OpShiftRightLogical %v4uint %49 %41 + OpStore %x %50 + %53 = OpLoad %v4uint %x + %56 = OpBitwiseAnd %v4uint %53 %55 + %52 = OpINotEqual %v4bool %56 %28 + %51 = OpSelect %v4uint %52 %58 %38 + %59 = OpLoad %v4uint %x + %60 = OpShiftRightLogical %v4uint %59 %51 + OpStore %x %60 + %63 = OpLoad %v4uint %x + %66 = OpBitwiseAnd %v4uint %63 %65 + %62 = OpINotEqual %v4bool %66 %28 + %61 = OpSelect %v4uint %62 %68 %38 + %69 = OpLoad %v4uint %x + %70 = OpShiftRightLogical %v4uint %69 %61 + OpStore %x %70 + %73 = OpLoad %v4uint %x + %74 = OpBitwiseAnd %v4uint %73 %68 + %72 = OpINotEqual %v4bool %74 %28 + %71 = OpSelect %v4uint %72 %76 %38 + %78 = OpLoad %v4uint %x + %79 = OpIEqual %v4bool %78 %38 + %77 = OpSelect %v4uint %79 %81 %38 + %83 = OpBitwiseOr %v4uint %29 %41 + %84 = OpBitwiseOr %v4uint %83 %51 + %85 = OpBitwiseOr %v4uint %84 %61 + %86 = OpBitwiseOr %v4uint %85 %71 + %87 = OpBitwiseOr %v4uint %86 %77 + %82 = OpBitcast %v4int %87 + OpReturnValue %82 + OpFunctionEnd +%firstLeadingBit_c1f940 = OpFunction %void None %88 + %91 = OpLabel + %res = OpVariable %_ptr_Function_v4int Function %93 + %92 = OpFunctionCall %v4int %tint_first_leading_bit %93 + OpStore %res %92 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %96 + %98 = OpLabel + %99 = OpFunctionCall %void %firstLeadingBit_c1f940 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %88 + %101 = OpLabel + %102 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %102 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %88 + %105 = OpLabel + %106 = OpFunctionCall %void %firstLeadingBit_c1f940 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %88 + %108 = OpLabel + %109 = OpFunctionCall %void %firstLeadingBit_c1f940 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/firstLeadingBit/c1f940.wgsl.expected.wgsl b/test/tint/builtins/gen/firstLeadingBit/c1f940.wgsl.expected.wgsl new file mode 100644 index 0000000000..b79dbd7973 --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/c1f940.wgsl.expected.wgsl @@ -0,0 +1,19 @@ +fn firstLeadingBit_c1f940() { + var res : vec4 = firstLeadingBit(vec4()); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + firstLeadingBit_c1f940(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + firstLeadingBit_c1f940(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + firstLeadingBit_c1f940(); +} diff --git a/test/tint/builtins/gen/firstLeadingBit/f0779d.wgsl b/test/tint/builtins/gen/firstLeadingBit/f0779d.wgsl new file mode 100644 index 0000000000..a7e746002f --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/f0779d.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 firstLeadingBit(u32) -> u32 +fn firstLeadingBit_f0779d() { + var res: u32 = firstLeadingBit(1u); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + firstLeadingBit_f0779d(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + firstLeadingBit_f0779d(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + firstLeadingBit_f0779d(); +} diff --git a/test/tint/builtins/gen/firstLeadingBit/f0779d.wgsl.expected.glsl b/test/tint/builtins/gen/firstLeadingBit/f0779d.wgsl.expected.glsl new file mode 100644 index 0000000000..2c08f915f2 --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/f0779d.wgsl.expected.glsl @@ -0,0 +1,93 @@ +#version 310 es + +uint tint_first_leading_bit(uint v) { + uint x = v; + uint b16 = (bool((x & 4294901760u)) ? 16u : 0u); + x = (x >> b16); + uint b8 = (bool((x & 65280u)) ? 8u : 0u); + x = (x >> b8); + uint b4 = (bool((x & 240u)) ? 4u : 0u); + x = (x >> b4); + uint b2 = (bool((x & 12u)) ? 2u : 0u); + x = (x >> b2); + uint b1 = (bool((x & 2u)) ? 1u : 0u); + uint is_zero = ((x == 0u) ? 4294967295u : 0u); + return uint((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_f0779d() { + uint res = tint_first_leading_bit(1u); +} + +vec4 vertex_main() { + firstLeadingBit_f0779d(); + 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_first_leading_bit(uint v) { + uint x = v; + uint b16 = (bool((x & 4294901760u)) ? 16u : 0u); + x = (x >> b16); + uint b8 = (bool((x & 65280u)) ? 8u : 0u); + x = (x >> b8); + uint b4 = (bool((x & 240u)) ? 4u : 0u); + x = (x >> b4); + uint b2 = (bool((x & 12u)) ? 2u : 0u); + x = (x >> b2); + uint b1 = (bool((x & 2u)) ? 1u : 0u); + uint is_zero = ((x == 0u) ? 4294967295u : 0u); + return uint((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_f0779d() { + uint res = tint_first_leading_bit(1u); +} + +void fragment_main() { + firstLeadingBit_f0779d(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +uint tint_first_leading_bit(uint v) { + uint x = v; + uint b16 = (bool((x & 4294901760u)) ? 16u : 0u); + x = (x >> b16); + uint b8 = (bool((x & 65280u)) ? 8u : 0u); + x = (x >> b8); + uint b4 = (bool((x & 240u)) ? 4u : 0u); + x = (x >> b4); + uint b2 = (bool((x & 12u)) ? 2u : 0u); + x = (x >> b2); + uint b1 = (bool((x & 2u)) ? 1u : 0u); + uint is_zero = ((x == 0u) ? 4294967295u : 0u); + return uint((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_f0779d() { + uint res = tint_first_leading_bit(1u); +} + +void compute_main() { + firstLeadingBit_f0779d(); +} + +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/firstLeadingBit/f0779d.wgsl.expected.hlsl b/test/tint/builtins/gen/firstLeadingBit/f0779d.wgsl.expected.hlsl new file mode 100644 index 0000000000..d89b4b3f9b --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/f0779d.wgsl.expected.hlsl @@ -0,0 +1,45 @@ +uint tint_first_leading_bit(uint v) { + uint x = v; + const uint b16 = (bool((x & 4294901760u)) ? 16u : 0u); + x = (x >> b16); + const uint b8 = (bool((x & 65280u)) ? 8u : 0u); + x = (x >> b8); + const uint b4 = (bool((x & 240u)) ? 4u : 0u); + x = (x >> b4); + const uint b2 = (bool((x & 12u)) ? 2u : 0u); + x = (x >> b2); + const uint b1 = (bool((x & 2u)) ? 1u : 0u); + const uint is_zero = ((x == 0u) ? 4294967295u : 0u); + return uint((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_f0779d() { + uint res = tint_first_leading_bit(1u); +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + firstLeadingBit_f0779d(); + 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() { + firstLeadingBit_f0779d(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + firstLeadingBit_f0779d(); + return; +} diff --git a/test/tint/builtins/gen/firstLeadingBit/f0779d.wgsl.expected.msl b/test/tint/builtins/gen/firstLeadingBit/f0779d.wgsl.expected.msl new file mode 100644 index 0000000000..226d827efd --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/f0779d.wgsl.expected.msl @@ -0,0 +1,48 @@ +#include + +using namespace metal; +uint tint_first_leading_bit(uint v) { + uint x = v; + uint const b16 = select(0u, 16u, bool((x & 4294901760u))); + x = (x >> b16); + uint const b8 = select(0u, 8u, bool((x & 65280u))); + x = (x >> b8); + uint const b4 = select(0u, 4u, bool((x & 240u))); + x = (x >> b4); + uint const b2 = select(0u, 2u, bool((x & 12u))); + x = (x >> b2); + uint const b1 = select(0u, 1u, bool((x & 2u))); + uint const is_zero = select(0u, 4294967295u, (x == 0u)); + return uint((((((b16 | b8) | b4) | b2) | b1) | is_zero)); +} + +void firstLeadingBit_f0779d() { + uint res = tint_first_leading_bit(1u); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + firstLeadingBit_f0779d(); + 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() { + firstLeadingBit_f0779d(); + return; +} + +kernel void compute_main() { + firstLeadingBit_f0779d(); + return; +} + diff --git a/test/tint/builtins/gen/firstLeadingBit/f0779d.wgsl.expected.spvasm b/test/tint/builtins/gen/firstLeadingBit/f0779d.wgsl.expected.spvasm new file mode 100644 index 0000000000..42c1b10c2a --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/f0779d.wgsl.expected.spvasm @@ -0,0 +1,129 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 86 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size + OpEntryPoint Fragment %fragment_main "fragment_main" + OpEntryPoint GLCompute %compute_main "compute_main" + OpExecutionMode %fragment_main OriginUpperLeft + OpExecutionMode %compute_main LocalSize 1 1 1 + OpName %value "value" + OpName %vertex_point_size "vertex_point_size" + OpName %tint_first_leading_bit "tint_first_leading_bit" + OpName %v "v" + OpName %x "x" + OpName %firstLeadingBit_f0779d "firstLeadingBit_f0779d" + OpName %res "res" + OpName %vertex_main_inner "vertex_main_inner" + OpName %vertex_main "vertex_main" + OpName %fragment_main "fragment_main" + OpName %compute_main "compute_main" + OpDecorate %value BuiltIn Position + OpDecorate %vertex_point_size BuiltIn PointSize + %float = OpTypeFloat 32 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %5 = OpConstantNull %v4float + %value = OpVariable %_ptr_Output_v4float Output %5 +%_ptr_Output_float = OpTypePointer Output %float + %8 = OpConstantNull %float +%vertex_point_size = OpVariable %_ptr_Output_float Output %8 + %uint = OpTypeInt 32 0 + %9 = OpTypeFunction %uint %uint +%_ptr_Function_uint = OpTypePointer Function %uint + %16 = OpConstantNull %uint + %bool = OpTypeBool +%uint_4294901760 = OpConstant %uint 4294901760 + %uint_16 = OpConstant %uint 16 + %uint_0 = OpConstant %uint 0 + %uint_65280 = OpConstant %uint 65280 + %uint_8 = OpConstant %uint 8 + %uint_240 = OpConstant %uint 240 + %uint_4 = OpConstant %uint 4 + %uint_12 = OpConstant %uint 12 + %uint_2 = OpConstant %uint 2 + %uint_1 = OpConstant %uint 1 +%uint_4294967295 = OpConstant %uint 4294967295 + %void = OpTypeVoid + %66 = OpTypeFunction %void + %72 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%tint_first_leading_bit = OpFunction %uint None %9 + %v = OpFunctionParameter %uint + %13 = OpLabel + %x = OpVariable %_ptr_Function_uint Function %16 + OpStore %x %v + %20 = OpLoad %uint %x + %22 = OpBitwiseAnd %uint %20 %uint_4294901760 + %18 = OpINotEqual %bool %22 %16 + %17 = OpSelect %uint %18 %uint_16 %uint_0 + %25 = OpLoad %uint %x + %26 = OpShiftRightLogical %uint %25 %17 + OpStore %x %26 + %29 = OpLoad %uint %x + %31 = OpBitwiseAnd %uint %29 %uint_65280 + %28 = OpINotEqual %bool %31 %16 + %27 = OpSelect %uint %28 %uint_8 %uint_0 + %33 = OpLoad %uint %x + %34 = OpShiftRightLogical %uint %33 %27 + OpStore %x %34 + %37 = OpLoad %uint %x + %39 = OpBitwiseAnd %uint %37 %uint_240 + %36 = OpINotEqual %bool %39 %16 + %35 = OpSelect %uint %36 %uint_4 %uint_0 + %41 = OpLoad %uint %x + %42 = OpShiftRightLogical %uint %41 %35 + OpStore %x %42 + %45 = OpLoad %uint %x + %47 = OpBitwiseAnd %uint %45 %uint_12 + %44 = OpINotEqual %bool %47 %16 + %43 = OpSelect %uint %44 %uint_2 %uint_0 + %49 = OpLoad %uint %x + %50 = OpShiftRightLogical %uint %49 %43 + OpStore %x %50 + %53 = OpLoad %uint %x + %54 = OpBitwiseAnd %uint %53 %uint_2 + %52 = OpINotEqual %bool %54 %16 + %51 = OpSelect %uint %52 %uint_1 %uint_0 + %57 = OpLoad %uint %x + %58 = OpIEqual %bool %57 %uint_0 + %56 = OpSelect %uint %58 %uint_4294967295 %uint_0 + %61 = OpBitwiseOr %uint %17 %27 + %62 = OpBitwiseOr %uint %61 %35 + %63 = OpBitwiseOr %uint %62 %43 + %64 = OpBitwiseOr %uint %63 %51 + %65 = OpBitwiseOr %uint %64 %56 + OpReturnValue %65 + OpFunctionEnd +%firstLeadingBit_f0779d = OpFunction %void None %66 + %69 = OpLabel + %res = OpVariable %_ptr_Function_uint Function %16 + %70 = OpFunctionCall %uint %tint_first_leading_bit %uint_1 + OpStore %res %70 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %72 + %74 = OpLabel + %75 = OpFunctionCall %void %firstLeadingBit_f0779d + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %66 + %77 = OpLabel + %78 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %78 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %66 + %81 = OpLabel + %82 = OpFunctionCall %void %firstLeadingBit_f0779d + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %66 + %84 = OpLabel + %85 = OpFunctionCall %void %firstLeadingBit_f0779d + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/firstLeadingBit/f0779d.wgsl.expected.wgsl b/test/tint/builtins/gen/firstLeadingBit/f0779d.wgsl.expected.wgsl new file mode 100644 index 0000000000..8f6430c3cb --- /dev/null +++ b/test/tint/builtins/gen/firstLeadingBit/f0779d.wgsl.expected.wgsl @@ -0,0 +1,19 @@ +fn firstLeadingBit_f0779d() { + var res : u32 = firstLeadingBit(1u); +} + +@stage(vertex) +fn vertex_main() -> @builtin(position) vec4 { + firstLeadingBit_f0779d(); + return vec4(); +} + +@stage(fragment) +fn fragment_main() { + firstLeadingBit_f0779d(); +} + +@stage(compute) @workgroup_size(1) +fn compute_main() { + firstLeadingBit_f0779d(); +}