[glsl][ir] Add polyfill for `frexp`
This CL adds the `frexp` polyfill for the GLSL IR backend.
Bug: 42251044
Change-Id: I54ba14e1a6d9c47c87c1665a9d9a7d77d1312419
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/208095
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: James Price <jrprice@google.com>
diff --git a/src/tint/lang/core/core.def b/src/tint/lang/core/core.def
index 6c309eb..078da7f 100644
--- a/src/tint/lang/core/core.def
+++ b/src/tint/lang/core/core.def
@@ -235,6 +235,7 @@
depth
compare_value
elements
+ exp
height
insert
level
diff --git a/src/tint/lang/core/parameter_usage.cc b/src/tint/lang/core/parameter_usage.cc
index 6bc39e7..a1ade91 100644
--- a/src/tint/lang/core/parameter_usage.cc
+++ b/src/tint/lang/core/parameter_usage.cc
@@ -70,6 +70,8 @@
return "e";
case ParameterUsage::kElements:
return "elements";
+ case ParameterUsage::kExp:
+ return "exp";
case ParameterUsage::kHeight:
return "height";
case ParameterUsage::kId:
diff --git a/src/tint/lang/core/parameter_usage.h b/src/tint/lang/core/parameter_usage.h
index b82e903..cdc8d0b 100644
--- a/src/tint/lang/core/parameter_usage.h
+++ b/src/tint/lang/core/parameter_usage.h
@@ -61,6 +61,7 @@
kDepthRef,
kE,
kElements,
+ kExp,
kHeight,
kId,
kInputAttachment,
diff --git a/src/tint/lang/glsl/builtin_fn.cc b/src/tint/lang/glsl/builtin_fn.cc
index a3369a7..4c21465 100644
--- a/src/tint/lang/glsl/builtin_fn.cc
+++ b/src/tint/lang/glsl/builtin_fn.cc
@@ -80,6 +80,8 @@
return "dot";
case BuiltinFn::kModf:
return "modf";
+ case BuiltinFn::kFrexp:
+ return "frexp";
case BuiltinFn::kTextureSize:
return "textureSize";
case BuiltinFn::kImageSize:
diff --git a/src/tint/lang/glsl/builtin_fn.h b/src/tint/lang/glsl/builtin_fn.h
index 1ed6ba0..c4bb90b 100644
--- a/src/tint/lang/glsl/builtin_fn.h
+++ b/src/tint/lang/glsl/builtin_fn.h
@@ -66,6 +66,7 @@
kAll,
kDot,
kModf,
+ kFrexp,
kTextureSize,
kImageSize,
kTexelFetch,
diff --git a/src/tint/lang/glsl/glsl.def b/src/tint/lang/glsl/glsl.def
index 51e5829..d68bcd8 100644
--- a/src/tint/lang/glsl/glsl.def
+++ b/src/tint/lang/glsl/glsl.def
@@ -175,6 +175,10 @@
@must_use @const implicit(N: num, T: f32_f16) fn modf(value: vec<N, T>,
result: ptr<function, vec<N, T>, read_write>) -> vec<N, T>
+@must_use @const implicit(T: f32_f16) fn frexp(value: T, exp: ptr<function, i32, read_write>) -> T
+@must_use @const implicit(N: num, T: f32_f16) fn frexp(value: vec<N, T>,
+ exp : ptr<function, vec<N, i32>, read_write>) -> vec<N, T>
+
@must_use implicit(T: fiu32) fn textureSize(texture: texture_1d<T>,
level: i32) -> i32
@must_use implicit(T: fiu32) fn textureSize(texture: texture_2d<T>,
diff --git a/src/tint/lang/glsl/intrinsic/data.cc b/src/tint/lang/glsl/intrinsic/data.cc
index 1c50097..c02e72e 100644
--- a/src/tint/lang/glsl/intrinsic/data.cc
+++ b/src/tint/lang/glsl/intrinsic/data.cc
@@ -930,135 +930,142 @@
/* [4] */ MatcherIndex(1),
/* [5] */ MatcherIndex(2),
/* [6] */ MatcherIndex(8),
- /* [7] */ MatcherIndex(7),
- /* [8] */ MatcherIndex(13),
+ /* [7] */ MatcherIndex(6),
+ /* [8] */ MatcherIndex(12),
/* [9] */ MatcherIndex(0),
- /* [10] */ MatcherIndex(1),
- /* [11] */ MatcherIndex(8),
- /* [12] */ MatcherIndex(5),
+ /* [10] */ MatcherIndex(5),
+ /* [11] */ MatcherIndex(2),
+ /* [12] */ MatcherIndex(8),
/* [13] */ MatcherIndex(7),
- /* [14] */ MatcherIndex(0),
- /* [15] */ MatcherIndex(2),
- /* [16] */ MatcherIndex(8),
- /* [17] */ MatcherIndex(1),
- /* [18] */ MatcherIndex(7),
- /* [19] */ MatcherIndex(0),
- /* [20] */ MatcherIndex(2),
- /* [21] */ MatcherIndex(8),
- /* [22] */ MatcherIndex(6),
- /* [23] */ MatcherIndex(0),
- /* [24] */ MatcherIndex(2),
- /* [25] */ MatcherIndex(12),
- /* [26] */ MatcherIndex(0),
- /* [27] */ MatcherIndex(5),
- /* [28] */ MatcherIndex(12),
+ /* [14] */ MatcherIndex(13),
+ /* [15] */ MatcherIndex(0),
+ /* [16] */ MatcherIndex(1),
+ /* [17] */ MatcherIndex(8),
+ /* [18] */ MatcherIndex(5),
+ /* [19] */ MatcherIndex(7),
+ /* [20] */ MatcherIndex(0),
+ /* [21] */ MatcherIndex(2),
+ /* [22] */ MatcherIndex(8),
+ /* [23] */ MatcherIndex(1),
+ /* [24] */ MatcherIndex(7),
+ /* [25] */ MatcherIndex(0),
+ /* [26] */ MatcherIndex(2),
+ /* [27] */ MatcherIndex(8),
+ /* [28] */ MatcherIndex(6),
/* [29] */ MatcherIndex(0),
- /* [30] */ MatcherIndex(4),
- /* [31] */ MatcherIndex(12),
- /* [32] */ MatcherIndex(0),
- /* [33] */ MatcherIndex(6),
- /* [34] */ MatcherIndex(12),
- /* [35] */ MatcherIndex(1),
- /* [36] */ MatcherIndex(5),
- /* [37] */ MatcherIndex(12),
- /* [38] */ MatcherIndex(1),
+ /* [30] */ MatcherIndex(2),
+ /* [31] */ MatcherIndex(8),
+ /* [32] */ MatcherIndex(6),
+ /* [33] */ MatcherIndex(5),
+ /* [34] */ MatcherIndex(2),
+ /* [35] */ MatcherIndex(12),
+ /* [36] */ MatcherIndex(0),
+ /* [37] */ MatcherIndex(4),
+ /* [38] */ MatcherIndex(12),
/* [39] */ MatcherIndex(0),
- /* [40] */ MatcherIndex(12),
- /* [41] */ MatcherIndex(0),
- /* [42] */ MatcherIndex(2),
- /* [43] */ MatcherIndex(26),
- /* [44] */ MatcherIndex(0),
+ /* [40] */ MatcherIndex(6),
+ /* [41] */ MatcherIndex(12),
+ /* [42] */ MatcherIndex(1),
+ /* [43] */ MatcherIndex(5),
+ /* [44] */ MatcherIndex(12),
/* [45] */ MatcherIndex(1),
- /* [46] */ MatcherIndex(27),
- /* [47] */ MatcherIndex(0),
- /* [48] */ MatcherIndex(1),
- /* [49] */ MatcherIndex(28),
- /* [50] */ MatcherIndex(0),
- /* [51] */ MatcherIndex(1),
- /* [52] */ MatcherIndex(29),
- /* [53] */ MatcherIndex(0),
- /* [54] */ MatcherIndex(1),
- /* [55] */ MatcherIndex(26),
- /* [56] */ MatcherIndex(8),
- /* [57] */ MatcherIndex(4),
- /* [58] */ MatcherIndex(26),
- /* [59] */ MatcherIndex(10),
- /* [60] */ MatcherIndex(4),
- /* [61] */ MatcherIndex(26),
- /* [62] */ MatcherIndex(9),
- /* [63] */ MatcherIndex(4),
- /* [64] */ MatcherIndex(27),
- /* [65] */ MatcherIndex(8),
- /* [66] */ MatcherIndex(4),
- /* [67] */ MatcherIndex(27),
- /* [68] */ MatcherIndex(10),
- /* [69] */ MatcherIndex(4),
- /* [70] */ MatcherIndex(27),
- /* [71] */ MatcherIndex(9),
- /* [72] */ MatcherIndex(4),
- /* [73] */ MatcherIndex(29),
- /* [74] */ MatcherIndex(8),
- /* [75] */ MatcherIndex(4),
- /* [76] */ MatcherIndex(29),
- /* [77] */ MatcherIndex(10),
- /* [78] */ MatcherIndex(4),
- /* [79] */ MatcherIndex(29),
- /* [80] */ MatcherIndex(9),
- /* [81] */ MatcherIndex(4),
- /* [82] */ MatcherIndex(28),
- /* [83] */ MatcherIndex(8),
- /* [84] */ MatcherIndex(4),
- /* [85] */ MatcherIndex(28),
- /* [86] */ MatcherIndex(10),
- /* [87] */ MatcherIndex(4),
- /* [88] */ MatcherIndex(28),
- /* [89] */ MatcherIndex(9),
- /* [90] */ MatcherIndex(4),
- /* [91] */ MatcherIndex(12),
- /* [92] */ MatcherIndex(1),
- /* [93] */ MatcherIndex(2),
- /* [94] */ MatcherIndex(9),
- /* [95] */ MatcherIndex(3),
- /* [96] */ MatcherIndex(14),
- /* [97] */ MatcherIndex(0),
- /* [98] */ MatcherIndex(9),
- /* [99] */ MatcherIndex(5),
- /* [100] */ MatcherIndex(15),
- /* [101] */ MatcherIndex(0),
- /* [102] */ MatcherIndex(10),
- /* [103] */ MatcherIndex(5),
- /* [104] */ MatcherIndex(16),
- /* [105] */ MatcherIndex(0),
- /* [106] */ MatcherIndex(17),
- /* [107] */ MatcherIndex(0),
- /* [108] */ MatcherIndex(18),
- /* [109] */ MatcherIndex(0),
- /* [110] */ MatcherIndex(19),
- /* [111] */ MatcherIndex(0),
- /* [112] */ MatcherIndex(20),
- /* [113] */ MatcherIndex(0),
- /* [114] */ MatcherIndex(11),
- /* [115] */ MatcherIndex(0),
- /* [116] */ MatcherIndex(11),
- /* [117] */ MatcherIndex(4),
- /* [118] */ MatcherIndex(11),
- /* [119] */ MatcherIndex(5),
- /* [120] */ MatcherIndex(11),
- /* [121] */ MatcherIndex(6),
- /* [122] */ MatcherIndex(9),
- /* [123] */ MatcherIndex(0),
- /* [124] */ MatcherIndex(10),
- /* [125] */ MatcherIndex(0),
- /* [126] */ MatcherIndex(30),
- /* [127] */ MatcherIndex(34),
- /* [128] */ MatcherIndex(31),
- /* [129] */ MatcherIndex(21),
- /* [130] */ MatcherIndex(22),
- /* [131] */ MatcherIndex(23),
- /* [132] */ MatcherIndex(24),
- /* [133] */ MatcherIndex(25),
- /* [134] */ MatcherIndex(32),
- /* [135] */ MatcherIndex(33),
+ /* [46] */ MatcherIndex(0),
+ /* [47] */ MatcherIndex(12),
+ /* [48] */ MatcherIndex(0),
+ /* [49] */ MatcherIndex(2),
+ /* [50] */ MatcherIndex(26),
+ /* [51] */ MatcherIndex(0),
+ /* [52] */ MatcherIndex(1),
+ /* [53] */ MatcherIndex(27),
+ /* [54] */ MatcherIndex(0),
+ /* [55] */ MatcherIndex(1),
+ /* [56] */ MatcherIndex(28),
+ /* [57] */ MatcherIndex(0),
+ /* [58] */ MatcherIndex(1),
+ /* [59] */ MatcherIndex(29),
+ /* [60] */ MatcherIndex(0),
+ /* [61] */ MatcherIndex(1),
+ /* [62] */ MatcherIndex(26),
+ /* [63] */ MatcherIndex(8),
+ /* [64] */ MatcherIndex(4),
+ /* [65] */ MatcherIndex(26),
+ /* [66] */ MatcherIndex(10),
+ /* [67] */ MatcherIndex(4),
+ /* [68] */ MatcherIndex(26),
+ /* [69] */ MatcherIndex(9),
+ /* [70] */ MatcherIndex(4),
+ /* [71] */ MatcherIndex(27),
+ /* [72] */ MatcherIndex(8),
+ /* [73] */ MatcherIndex(4),
+ /* [74] */ MatcherIndex(27),
+ /* [75] */ MatcherIndex(10),
+ /* [76] */ MatcherIndex(4),
+ /* [77] */ MatcherIndex(27),
+ /* [78] */ MatcherIndex(9),
+ /* [79] */ MatcherIndex(4),
+ /* [80] */ MatcherIndex(29),
+ /* [81] */ MatcherIndex(8),
+ /* [82] */ MatcherIndex(4),
+ /* [83] */ MatcherIndex(29),
+ /* [84] */ MatcherIndex(10),
+ /* [85] */ MatcherIndex(4),
+ /* [86] */ MatcherIndex(29),
+ /* [87] */ MatcherIndex(9),
+ /* [88] */ MatcherIndex(4),
+ /* [89] */ MatcherIndex(28),
+ /* [90] */ MatcherIndex(8),
+ /* [91] */ MatcherIndex(4),
+ /* [92] */ MatcherIndex(28),
+ /* [93] */ MatcherIndex(10),
+ /* [94] */ MatcherIndex(4),
+ /* [95] */ MatcherIndex(28),
+ /* [96] */ MatcherIndex(9),
+ /* [97] */ MatcherIndex(4),
+ /* [98] */ MatcherIndex(12),
+ /* [99] */ MatcherIndex(1),
+ /* [100] */ MatcherIndex(2),
+ /* [101] */ MatcherIndex(9),
+ /* [102] */ MatcherIndex(3),
+ /* [103] */ MatcherIndex(14),
+ /* [104] */ MatcherIndex(0),
+ /* [105] */ MatcherIndex(9),
+ /* [106] */ MatcherIndex(5),
+ /* [107] */ MatcherIndex(15),
+ /* [108] */ MatcherIndex(0),
+ /* [109] */ MatcherIndex(10),
+ /* [110] */ MatcherIndex(5),
+ /* [111] */ MatcherIndex(16),
+ /* [112] */ MatcherIndex(0),
+ /* [113] */ MatcherIndex(17),
+ /* [114] */ MatcherIndex(0),
+ /* [115] */ MatcherIndex(18),
+ /* [116] */ MatcherIndex(0),
+ /* [117] */ MatcherIndex(19),
+ /* [118] */ MatcherIndex(0),
+ /* [119] */ MatcherIndex(20),
+ /* [120] */ MatcherIndex(0),
+ /* [121] */ MatcherIndex(11),
+ /* [122] */ MatcherIndex(0),
+ /* [123] */ MatcherIndex(11),
+ /* [124] */ MatcherIndex(4),
+ /* [125] */ MatcherIndex(11),
+ /* [126] */ MatcherIndex(5),
+ /* [127] */ MatcherIndex(11),
+ /* [128] */ MatcherIndex(6),
+ /* [129] */ MatcherIndex(9),
+ /* [130] */ MatcherIndex(0),
+ /* [131] */ MatcherIndex(10),
+ /* [132] */ MatcherIndex(0),
+ /* [133] */ MatcherIndex(30),
+ /* [134] */ MatcherIndex(34),
+ /* [135] */ MatcherIndex(31),
+ /* [136] */ MatcherIndex(21),
+ /* [137] */ MatcherIndex(22),
+ /* [138] */ MatcherIndex(23),
+ /* [139] */ MatcherIndex(24),
+ /* [140] */ MatcherIndex(25),
+ /* [141] */ MatcherIndex(32),
+ /* [142] */ MatcherIndex(33),
};
static_assert(MatcherIndicesIndex::CanIndex(kMatcherIndices),
@@ -1078,37 +1085,37 @@
{
/* [2] */
/* usage */ core::ParameterUsage::kOffset,
- /* matcher_indices */ MatcherIndicesIndex(12),
+ /* matcher_indices */ MatcherIndicesIndex(10),
},
{
/* [3] */
/* usage */ core::ParameterUsage::kBits,
- /* matcher_indices */ MatcherIndicesIndex(12),
+ /* matcher_indices */ MatcherIndicesIndex(10),
},
{
/* [4] */
/* usage */ core::ParameterUsage::kBase,
- /* matcher_indices */ MatcherIndicesIndex(37),
+ /* matcher_indices */ MatcherIndicesIndex(44),
},
{
/* [5] */
/* usage */ core::ParameterUsage::kInsert,
- /* matcher_indices */ MatcherIndicesIndex(37),
+ /* matcher_indices */ MatcherIndicesIndex(44),
},
{
/* [6] */
/* usage */ core::ParameterUsage::kOffset,
- /* matcher_indices */ MatcherIndicesIndex(12),
+ /* matcher_indices */ MatcherIndicesIndex(10),
},
{
/* [7] */
/* usage */ core::ParameterUsage::kBits,
- /* matcher_indices */ MatcherIndicesIndex(12),
+ /* matcher_indices */ MatcherIndicesIndex(10),
},
{
/* [8] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(11),
+ /* matcher_indices */ MatcherIndicesIndex(17),
},
{
/* [9] */
@@ -1123,107 +1130,107 @@
{
/* [11] */
/* usage */ core::ParameterUsage::kOffset,
- /* matcher_indices */ MatcherIndicesIndex(12),
+ /* matcher_indices */ MatcherIndicesIndex(10),
},
{
/* [12] */
/* usage */ core::ParameterUsage::kBits,
- /* matcher_indices */ MatcherIndicesIndex(12),
+ /* matcher_indices */ MatcherIndicesIndex(10),
},
{
/* [13] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(37),
+ /* matcher_indices */ MatcherIndicesIndex(44),
},
{
/* [14] */
/* usage */ core::ParameterUsage::kOffset,
- /* matcher_indices */ MatcherIndicesIndex(12),
+ /* matcher_indices */ MatcherIndicesIndex(10),
},
{
/* [15] */
/* usage */ core::ParameterUsage::kBits,
- /* matcher_indices */ MatcherIndicesIndex(12),
+ /* matcher_indices */ MatcherIndicesIndex(10),
},
{
/* [16] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(96),
+ /* matcher_indices */ MatcherIndicesIndex(103),
},
{
/* [17] */
/* usage */ core::ParameterUsage::kLocation,
- /* matcher_indices */ MatcherIndicesIndex(12),
+ /* matcher_indices */ MatcherIndicesIndex(10),
},
{
/* [18] */
/* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(12),
+ /* matcher_indices */ MatcherIndicesIndex(10),
},
{
/* [19] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(100),
+ /* matcher_indices */ MatcherIndicesIndex(107),
},
{
/* [20] */
/* usage */ core::ParameterUsage::kLocation,
- /* matcher_indices */ MatcherIndicesIndex(98),
+ /* matcher_indices */ MatcherIndicesIndex(105),
},
{
/* [21] */
/* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(12),
+ /* matcher_indices */ MatcherIndicesIndex(10),
},
{
/* [22] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(104),
+ /* matcher_indices */ MatcherIndicesIndex(111),
},
{
/* [23] */
/* usage */ core::ParameterUsage::kLocation,
- /* matcher_indices */ MatcherIndicesIndex(102),
+ /* matcher_indices */ MatcherIndicesIndex(109),
},
{
/* [24] */
/* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(12),
+ /* matcher_indices */ MatcherIndicesIndex(10),
},
{
/* [25] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(112),
+ /* matcher_indices */ MatcherIndicesIndex(119),
},
{
/* [26] */
/* usage */ core::ParameterUsage::kLocation,
- /* matcher_indices */ MatcherIndicesIndex(98),
+ /* matcher_indices */ MatcherIndicesIndex(105),
},
{
/* [27] */
/* usage */ core::ParameterUsage::kSampleIndex,
- /* matcher_indices */ MatcherIndicesIndex(12),
+ /* matcher_indices */ MatcherIndicesIndex(10),
},
{
/* [28] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(106),
+ /* matcher_indices */ MatcherIndicesIndex(113),
},
{
/* [29] */
/* usage */ core::ParameterUsage::kLocation,
- /* matcher_indices */ MatcherIndicesIndex(102),
+ /* matcher_indices */ MatcherIndicesIndex(109),
},
{
/* [30] */
/* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(12),
+ /* matcher_indices */ MatcherIndicesIndex(10),
},
{
/* [31] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(55),
+ /* matcher_indices */ MatcherIndicesIndex(62),
},
{
/* [32] */
@@ -1233,12 +1240,12 @@
{
/* [33] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(116),
+ /* matcher_indices */ MatcherIndicesIndex(123),
},
{
/* [34] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(58),
+ /* matcher_indices */ MatcherIndicesIndex(65),
},
{
/* [35] */
@@ -1248,12 +1255,12 @@
{
/* [36] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(118),
+ /* matcher_indices */ MatcherIndicesIndex(125),
},
{
/* [37] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(61),
+ /* matcher_indices */ MatcherIndicesIndex(68),
},
{
/* [38] */
@@ -1263,147 +1270,147 @@
{
/* [39] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(120),
+ /* matcher_indices */ MatcherIndicesIndex(127),
},
{
/* [40] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(64),
+ /* matcher_indices */ MatcherIndicesIndex(71),
},
{
/* [41] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(122),
+ /* matcher_indices */ MatcherIndicesIndex(129),
},
{
/* [42] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(116),
+ /* matcher_indices */ MatcherIndicesIndex(123),
},
{
/* [43] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(67),
+ /* matcher_indices */ MatcherIndicesIndex(74),
},
{
/* [44] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(122),
+ /* matcher_indices */ MatcherIndicesIndex(129),
},
{
/* [45] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(118),
+ /* matcher_indices */ MatcherIndicesIndex(125),
},
{
/* [46] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(70),
+ /* matcher_indices */ MatcherIndicesIndex(77),
},
{
/* [47] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(122),
+ /* matcher_indices */ MatcherIndicesIndex(129),
},
{
/* [48] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(120),
+ /* matcher_indices */ MatcherIndicesIndex(127),
},
{
/* [49] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(73),
+ /* matcher_indices */ MatcherIndicesIndex(80),
},
{
/* [50] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(124),
+ /* matcher_indices */ MatcherIndicesIndex(131),
},
{
/* [51] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(116),
+ /* matcher_indices */ MatcherIndicesIndex(123),
},
{
/* [52] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(76),
+ /* matcher_indices */ MatcherIndicesIndex(83),
},
{
/* [53] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(124),
+ /* matcher_indices */ MatcherIndicesIndex(131),
},
{
/* [54] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(118),
+ /* matcher_indices */ MatcherIndicesIndex(125),
},
{
/* [55] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(79),
+ /* matcher_indices */ MatcherIndicesIndex(86),
},
{
/* [56] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(124),
+ /* matcher_indices */ MatcherIndicesIndex(131),
},
{
/* [57] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(120),
+ /* matcher_indices */ MatcherIndicesIndex(127),
},
{
/* [58] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(82),
+ /* matcher_indices */ MatcherIndicesIndex(89),
},
{
/* [59] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(124),
+ /* matcher_indices */ MatcherIndicesIndex(131),
},
{
/* [60] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(116),
+ /* matcher_indices */ MatcherIndicesIndex(123),
},
{
/* [61] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(85),
+ /* matcher_indices */ MatcherIndicesIndex(92),
},
{
/* [62] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(124),
+ /* matcher_indices */ MatcherIndicesIndex(131),
},
{
/* [63] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(118),
+ /* matcher_indices */ MatcherIndicesIndex(125),
},
{
/* [64] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(88),
+ /* matcher_indices */ MatcherIndicesIndex(95),
},
{
/* [65] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(124),
+ /* matcher_indices */ MatcherIndicesIndex(131),
},
{
/* [66] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(120),
+ /* matcher_indices */ MatcherIndicesIndex(127),
},
{
/* [67] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(16),
+ /* matcher_indices */ MatcherIndicesIndex(22),
},
{
/* [68] */
@@ -1413,12 +1420,12 @@
{
/* [69] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(37),
+ /* matcher_indices */ MatcherIndicesIndex(44),
},
{
/* [70] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(37),
+ /* matcher_indices */ MatcherIndicesIndex(44),
},
{
/* [71] */
@@ -1428,7 +1435,7 @@
{
/* [72] */
/* usage */ core::ParameterUsage::kResult,
- /* matcher_indices */ MatcherIndicesIndex(21),
+ /* matcher_indices */ MatcherIndicesIndex(27),
},
{
/* [73] */
@@ -1442,193 +1449,213 @@
},
{
/* [75] */
- /* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(96),
+ /* usage */ core::ParameterUsage::kValue,
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [76] */
- /* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(12),
+ /* usage */ core::ParameterUsage::kExp,
+ /* matcher_indices */ MatcherIndicesIndex(31),
},
{
/* [77] */
- /* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(100),
+ /* usage */ core::ParameterUsage::kValue,
+ /* matcher_indices */ MatcherIndicesIndex(2),
},
{
/* [78] */
- /* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(12),
+ /* usage */ core::ParameterUsage::kExp,
+ /* matcher_indices */ MatcherIndicesIndex(6),
},
{
/* [79] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(104),
+ /* matcher_indices */ MatcherIndicesIndex(103),
},
{
/* [80] */
/* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(12),
+ /* matcher_indices */ MatcherIndicesIndex(10),
},
{
/* [81] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(106),
+ /* matcher_indices */ MatcherIndicesIndex(107),
},
{
/* [82] */
/* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(12),
+ /* matcher_indices */ MatcherIndicesIndex(10),
},
{
/* [83] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(108),
+ /* matcher_indices */ MatcherIndicesIndex(111),
},
{
/* [84] */
/* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(12),
+ /* matcher_indices */ MatcherIndicesIndex(10),
},
{
/* [85] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(110),
+ /* matcher_indices */ MatcherIndicesIndex(113),
},
{
/* [86] */
/* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(12),
+ /* matcher_indices */ MatcherIndicesIndex(10),
},
{
/* [87] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(129),
+ /* matcher_indices */ MatcherIndicesIndex(115),
},
{
/* [88] */
/* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(12),
+ /* matcher_indices */ MatcherIndicesIndex(10),
},
{
/* [89] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(130),
+ /* matcher_indices */ MatcherIndicesIndex(117),
},
{
/* [90] */
/* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(12),
+ /* matcher_indices */ MatcherIndicesIndex(10),
},
{
/* [91] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(131),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [92] */
/* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(12),
+ /* matcher_indices */ MatcherIndicesIndex(10),
},
{
/* [93] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(132),
+ /* matcher_indices */ MatcherIndicesIndex(137),
},
{
/* [94] */
/* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(12),
+ /* matcher_indices */ MatcherIndicesIndex(10),
},
{
/* [95] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(43),
+ /* matcher_indices */ MatcherIndicesIndex(138),
},
{
/* [96] */
- /* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(12),
+ /* usage */ core::ParameterUsage::kLevel,
+ /* matcher_indices */ MatcherIndicesIndex(10),
},
{
/* [97] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(46),
+ /* matcher_indices */ MatcherIndicesIndex(139),
},
{
/* [98] */
- /* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(98),
+ /* usage */ core::ParameterUsage::kLevel,
+ /* matcher_indices */ MatcherIndicesIndex(10),
},
{
/* [99] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(49),
+ /* matcher_indices */ MatcherIndicesIndex(50),
},
{
/* [100] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(102),
+ /* matcher_indices */ MatcherIndicesIndex(10),
},
{
/* [101] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(52),
+ /* matcher_indices */ MatcherIndicesIndex(53),
},
{
/* [102] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(102),
+ /* matcher_indices */ MatcherIndicesIndex(105),
},
{
/* [103] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(6),
+ /* usage */ core::ParameterUsage::kTexture,
+ /* matcher_indices */ MatcherIndicesIndex(56),
},
{
/* [104] */
- /* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(30),
+ /* usage */ core::ParameterUsage::kCoords,
+ /* matcher_indices */ MatcherIndicesIndex(109),
},
{
/* [105] */
- /* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(28),
+ /* usage */ core::ParameterUsage::kTexture,
+ /* matcher_indices */ MatcherIndicesIndex(59),
},
{
/* [106] */
- /* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(12),
+ /* usage */ core::ParameterUsage::kCoords,
+ /* matcher_indices */ MatcherIndicesIndex(109),
},
{
/* [107] */
- /* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(25),
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(12),
},
{
/* [108] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(1),
+ /* matcher_indices */ MatcherIndicesIndex(37),
},
{
/* [109] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(31),
+ /* matcher_indices */ MatcherIndicesIndex(35),
},
{
/* [110] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(94),
+ /* matcher_indices */ MatcherIndicesIndex(10),
},
{
/* [111] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(40),
+ /* usage */ core::ParameterUsage::kValue,
+ /* matcher_indices */ MatcherIndicesIndex(8),
},
{
/* [112] */
+ /* usage */ core::ParameterUsage::kValue,
+ /* matcher_indices */ MatcherIndicesIndex(1),
+ },
+ {
+ /* [113] */
+ /* usage */ core::ParameterUsage::kValue,
+ /* matcher_indices */ MatcherIndicesIndex(38),
+ },
+ {
+ /* [114] */
+ /* usage */ core::ParameterUsage::kValue,
+ /* matcher_indices */ MatcherIndicesIndex(101),
+ },
+ {
+ /* [115] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(47),
+ },
+ {
+ /* [116] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(140),
},
};
@@ -1651,19 +1678,19 @@
{
/* [2] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(126),
+ /* matcher_indices */ MatcherIndicesIndex(133),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [3] */
/* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(12),
+ /* matcher_indices */ MatcherIndicesIndex(10),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [4] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(126),
+ /* matcher_indices */ MatcherIndicesIndex(133),
/* kind */ TemplateInfo::Kind::kType,
},
{
@@ -1675,7 +1702,7 @@
{
/* [6] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(127),
+ /* matcher_indices */ MatcherIndicesIndex(134),
/* kind */ TemplateInfo::Kind::kType,
},
{
@@ -1705,37 +1732,37 @@
{
/* [11] */
/* name */ "A",
- /* matcher_indices */ MatcherIndicesIndex(95),
+ /* matcher_indices */ MatcherIndicesIndex(102),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [12] */
/* name */ "F",
- /* matcher_indices */ MatcherIndicesIndex(59),
+ /* matcher_indices */ MatcherIndicesIndex(66),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [13] */
/* name */ "A",
- /* matcher_indices */ MatcherIndicesIndex(95),
+ /* matcher_indices */ MatcherIndicesIndex(102),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [14] */
/* name */ "F",
- /* matcher_indices */ MatcherIndicesIndex(62),
+ /* matcher_indices */ MatcherIndicesIndex(69),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [15] */
/* name */ "A",
- /* matcher_indices */ MatcherIndicesIndex(95),
+ /* matcher_indices */ MatcherIndicesIndex(102),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [16] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(134),
+ /* matcher_indices */ MatcherIndicesIndex(141),
/* kind */ TemplateInfo::Kind::kType,
},
{
@@ -1747,7 +1774,7 @@
{
/* [18] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(135),
+ /* matcher_indices */ MatcherIndicesIndex(142),
/* kind */ TemplateInfo::Kind::kType,
},
{
@@ -1759,13 +1786,13 @@
{
/* [20] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(128),
+ /* matcher_indices */ MatcherIndicesIndex(135),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [21] */
/* name */ "C",
- /* matcher_indices */ MatcherIndicesIndex(126),
+ /* matcher_indices */ MatcherIndicesIndex(133),
/* kind */ TemplateInfo::Kind::kType,
},
};
@@ -1775,6 +1802,7 @@
constexpr core::constant::Eval::Function kConstEvalFunctions[] = {
/* [0] */ &core::constant::Eval::modf,
+ /* [1] */ &core::constant::Eval::frexp,
};
static_assert(ConstEvalFunctionIndex::CanIndex(kConstEvalFunctions),
@@ -1788,8 +1816,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(20),
- /* parameters */ ParameterIndex(75),
- /* return_matcher_indices */ MatcherIndicesIndex(12),
+ /* parameters */ ParameterIndex(79),
+ /* return_matcher_indices */ MatcherIndicesIndex(10),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -1799,8 +1827,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(20),
- /* parameters */ ParameterIndex(77),
- /* return_matcher_indices */ MatcherIndicesIndex(98),
+ /* parameters */ ParameterIndex(81),
+ /* return_matcher_indices */ MatcherIndicesIndex(105),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -1810,8 +1838,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(20),
- /* parameters */ ParameterIndex(79),
- /* return_matcher_indices */ MatcherIndicesIndex(102),
+ /* parameters */ ParameterIndex(83),
+ /* return_matcher_indices */ MatcherIndicesIndex(109),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -1821,8 +1849,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(20),
- /* parameters */ ParameterIndex(81),
- /* return_matcher_indices */ MatcherIndicesIndex(102),
+ /* parameters */ ParameterIndex(85),
+ /* return_matcher_indices */ MatcherIndicesIndex(109),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -1832,8 +1860,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(20),
- /* parameters */ ParameterIndex(83),
- /* return_matcher_indices */ MatcherIndicesIndex(98),
+ /* parameters */ ParameterIndex(87),
+ /* return_matcher_indices */ MatcherIndicesIndex(105),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -1843,8 +1871,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(20),
- /* parameters */ ParameterIndex(85),
- /* return_matcher_indices */ MatcherIndicesIndex(102),
+ /* parameters */ ParameterIndex(89),
+ /* return_matcher_indices */ MatcherIndicesIndex(109),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -1854,8 +1882,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(87),
- /* return_matcher_indices */ MatcherIndicesIndex(98),
+ /* parameters */ ParameterIndex(91),
+ /* return_matcher_indices */ MatcherIndicesIndex(105),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -1865,8 +1893,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(89),
- /* return_matcher_indices */ MatcherIndicesIndex(102),
+ /* parameters */ ParameterIndex(93),
+ /* return_matcher_indices */ MatcherIndicesIndex(109),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -1876,8 +1904,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(91),
- /* return_matcher_indices */ MatcherIndicesIndex(98),
+ /* parameters */ ParameterIndex(95),
+ /* return_matcher_indices */ MatcherIndicesIndex(105),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -1887,8 +1915,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(93),
- /* return_matcher_indices */ MatcherIndicesIndex(102),
+ /* parameters */ ParameterIndex(97),
+ /* return_matcher_indices */ MatcherIndicesIndex(109),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -1899,7 +1927,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(20),
/* parameters */ ParameterIndex(25),
- /* return_matcher_indices */ MatcherIndicesIndex(98),
+ /* return_matcher_indices */ MatcherIndicesIndex(105),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -1909,8 +1937,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(112),
- /* return_matcher_indices */ MatcherIndicesIndex(98),
+ /* parameters */ ParameterIndex(116),
+ /* return_matcher_indices */ MatcherIndicesIndex(105),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -1920,8 +1948,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(10),
- /* parameters */ ParameterIndex(95),
- /* return_matcher_indices */ MatcherIndicesIndex(116),
+ /* parameters */ ParameterIndex(99),
+ /* return_matcher_indices */ MatcherIndicesIndex(123),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -1931,8 +1959,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(10),
- /* parameters */ ParameterIndex(97),
- /* return_matcher_indices */ MatcherIndicesIndex(116),
+ /* parameters */ ParameterIndex(101),
+ /* return_matcher_indices */ MatcherIndicesIndex(123),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -1942,8 +1970,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(10),
- /* parameters */ ParameterIndex(99),
- /* return_matcher_indices */ MatcherIndicesIndex(116),
+ /* parameters */ ParameterIndex(103),
+ /* return_matcher_indices */ MatcherIndicesIndex(123),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -1953,8 +1981,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(10),
- /* parameters */ ParameterIndex(101),
- /* return_matcher_indices */ MatcherIndicesIndex(116),
+ /* parameters */ ParameterIndex(105),
+ /* return_matcher_indices */ MatcherIndicesIndex(123),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -1964,8 +1992,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(12),
- /* parameters */ ParameterIndex(95),
- /* return_matcher_indices */ MatcherIndicesIndex(118),
+ /* parameters */ ParameterIndex(99),
+ /* return_matcher_indices */ MatcherIndicesIndex(125),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -1975,8 +2003,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(12),
- /* parameters */ ParameterIndex(97),
- /* return_matcher_indices */ MatcherIndicesIndex(118),
+ /* parameters */ ParameterIndex(101),
+ /* return_matcher_indices */ MatcherIndicesIndex(125),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -1986,8 +2014,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(12),
- /* parameters */ ParameterIndex(99),
- /* return_matcher_indices */ MatcherIndicesIndex(118),
+ /* parameters */ ParameterIndex(103),
+ /* return_matcher_indices */ MatcherIndicesIndex(125),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -1997,8 +2025,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(12),
- /* parameters */ ParameterIndex(101),
- /* return_matcher_indices */ MatcherIndicesIndex(118),
+ /* parameters */ ParameterIndex(105),
+ /* return_matcher_indices */ MatcherIndicesIndex(125),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2008,8 +2036,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(14),
- /* parameters */ ParameterIndex(95),
- /* return_matcher_indices */ MatcherIndicesIndex(120),
+ /* parameters */ ParameterIndex(99),
+ /* return_matcher_indices */ MatcherIndicesIndex(127),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2019,8 +2047,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(14),
- /* parameters */ ParameterIndex(97),
- /* return_matcher_indices */ MatcherIndicesIndex(120),
+ /* parameters */ ParameterIndex(101),
+ /* return_matcher_indices */ MatcherIndicesIndex(127),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2030,8 +2058,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(14),
- /* parameters */ ParameterIndex(99),
- /* return_matcher_indices */ MatcherIndicesIndex(120),
+ /* parameters */ ParameterIndex(103),
+ /* return_matcher_indices */ MatcherIndicesIndex(127),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2041,8 +2069,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(14),
- /* parameters */ ParameterIndex(101),
- /* return_matcher_indices */ MatcherIndicesIndex(120),
+ /* parameters */ ParameterIndex(105),
+ /* return_matcher_indices */ MatcherIndicesIndex(127),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2185,7 +2213,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(20),
/* parameters */ ParameterIndex(16),
- /* return_matcher_indices */ MatcherIndicesIndex(114),
+ /* return_matcher_indices */ MatcherIndicesIndex(121),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2196,7 +2224,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(20),
/* parameters */ ParameterIndex(19),
- /* return_matcher_indices */ MatcherIndicesIndex(114),
+ /* return_matcher_indices */ MatcherIndicesIndex(121),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2207,7 +2235,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(20),
/* parameters */ ParameterIndex(22),
- /* return_matcher_indices */ MatcherIndicesIndex(114),
+ /* return_matcher_indices */ MatcherIndicesIndex(121),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2218,7 +2246,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(20),
/* parameters */ ParameterIndex(25),
- /* return_matcher_indices */ MatcherIndicesIndex(114),
+ /* return_matcher_indices */ MatcherIndicesIndex(121),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2229,7 +2257,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(20),
/* parameters */ ParameterIndex(28),
- /* return_matcher_indices */ MatcherIndicesIndex(114),
+ /* return_matcher_indices */ MatcherIndicesIndex(121),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2239,8 +2267,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(8),
- /* parameters */ ParameterIndex(95),
- /* return_matcher_indices */ MatcherIndicesIndex(12),
+ /* parameters */ ParameterIndex(99),
+ /* return_matcher_indices */ MatcherIndicesIndex(10),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2250,8 +2278,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(8),
- /* parameters */ ParameterIndex(97),
- /* return_matcher_indices */ MatcherIndicesIndex(98),
+ /* parameters */ ParameterIndex(101),
+ /* return_matcher_indices */ MatcherIndicesIndex(105),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2261,8 +2289,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(8),
- /* parameters */ ParameterIndex(99),
- /* return_matcher_indices */ MatcherIndicesIndex(102),
+ /* parameters */ ParameterIndex(103),
+ /* return_matcher_indices */ MatcherIndicesIndex(109),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2272,8 +2300,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(8),
- /* parameters */ ParameterIndex(101),
- /* return_matcher_indices */ MatcherIndicesIndex(102),
+ /* parameters */ ParameterIndex(105),
+ /* return_matcher_indices */ MatcherIndicesIndex(109),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2283,8 +2311,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(104),
- /* return_matcher_indices */ MatcherIndicesIndex(12),
+ /* parameters */ ParameterIndex(108),
+ /* return_matcher_indices */ MatcherIndicesIndex(10),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2294,8 +2322,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(5),
- /* parameters */ ParameterIndex(105),
- /* return_matcher_indices */ MatcherIndicesIndex(25),
+ /* parameters */ ParameterIndex(109),
+ /* return_matcher_indices */ MatcherIndicesIndex(8),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2305,7 +2333,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(104),
+ /* parameters */ ParameterIndex(108),
/* return_matcher_indices */ MatcherIndicesIndex(1),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -2316,8 +2344,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(5),
- /* parameters */ ParameterIndex(105),
- /* return_matcher_indices */ MatcherIndicesIndex(31),
+ /* parameters */ ParameterIndex(109),
+ /* return_matcher_indices */ MatcherIndicesIndex(38),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2327,8 +2355,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(106),
- /* return_matcher_indices */ MatcherIndicesIndex(30),
+ /* parameters */ ParameterIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(37),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2338,8 +2366,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(5),
- /* parameters */ ParameterIndex(107),
- /* return_matcher_indices */ MatcherIndicesIndex(28),
+ /* parameters */ ParameterIndex(111),
+ /* return_matcher_indices */ MatcherIndicesIndex(35),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2349,8 +2377,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(108),
- /* return_matcher_indices */ MatcherIndicesIndex(30),
+ /* parameters */ ParameterIndex(112),
+ /* return_matcher_indices */ MatcherIndicesIndex(37),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2360,8 +2388,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(5),
- /* parameters */ ParameterIndex(109),
- /* return_matcher_indices */ MatcherIndicesIndex(28),
+ /* parameters */ ParameterIndex(113),
+ /* return_matcher_indices */ MatcherIndicesIndex(35),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2372,7 +2400,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(2),
/* parameters */ ParameterIndex(10),
- /* return_matcher_indices */ MatcherIndicesIndex(12),
+ /* return_matcher_indices */ MatcherIndicesIndex(10),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2383,7 +2411,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(13),
- /* return_matcher_indices */ MatcherIndicesIndex(34),
+ /* return_matcher_indices */ MatcherIndicesIndex(41),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2405,7 +2433,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(13),
- /* return_matcher_indices */ MatcherIndicesIndex(37),
+ /* return_matcher_indices */ MatcherIndicesIndex(44),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2427,7 +2455,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(4),
- /* return_matcher_indices */ MatcherIndicesIndex(37),
+ /* return_matcher_indices */ MatcherIndicesIndex(44),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2454,17 +2482,39 @@
},
{
/* [61] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
+ /* num_parameters */ 2,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 1,
+ /* templates */ TemplateIndex(6),
+ /* parameters */ ParameterIndex(75),
+ /* return_matcher_indices */ MatcherIndicesIndex(3),
+ /* const_eval_fn */ ConstEvalFunctionIndex(1),
+ },
+ {
+ /* [62] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
+ /* num_parameters */ 2,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 2,
+ /* templates */ TemplateIndex(5),
+ /* parameters */ ParameterIndex(77),
+ /* return_matcher_indices */ MatcherIndicesIndex(2),
+ /* const_eval_fn */ ConstEvalFunctionIndex(1),
+ },
+ {
+ /* [63] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse, OverloadFlag::kMemberFunction),
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(0),
- /* parameters */ ParameterIndex(103),
- /* return_matcher_indices */ MatcherIndicesIndex(12),
+ /* parameters */ ParameterIndex(107),
+ /* return_matcher_indices */ MatcherIndicesIndex(10),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [62] */
+ /* [64] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 0,
/* num_explicit_templates */ 0,
@@ -2475,7 +2525,7 @@
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [63] */
+ /* [65] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
@@ -2486,7 +2536,7 @@
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [64] */
+ /* [66] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
@@ -2497,40 +2547,40 @@
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [65] */
+ /* [67] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(110),
+ /* parameters */ ParameterIndex(114),
/* return_matcher_indices */ MatcherIndicesIndex(1),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [66] */
+ /* [68] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(108),
- /* return_matcher_indices */ MatcherIndicesIndex(94),
+ /* parameters */ ParameterIndex(112),
+ /* return_matcher_indices */ MatcherIndicesIndex(101),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [67] */
+ /* [69] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(5),
- /* parameters */ ParameterIndex(111),
+ /* parameters */ ParameterIndex(115),
/* return_matcher_indices */ MatcherIndicesIndex(5),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [68] */
+ /* [70] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
@@ -2541,25 +2591,25 @@
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [69] */
+ /* [71] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(16),
/* parameters */ ParameterIndex(69),
- /* return_matcher_indices */ MatcherIndicesIndex(91),
+ /* return_matcher_indices */ MatcherIndicesIndex(98),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [70] */
+ /* [72] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(18),
/* parameters */ ParameterIndex(69),
- /* return_matcher_indices */ MatcherIndicesIndex(91),
+ /* return_matcher_indices */ MatcherIndicesIndex(98),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
};
@@ -2572,37 +2622,37 @@
/* [0] */
/* fn length[T, A : access](ptr<storage, array<T>, A>) -> i32 */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(61),
+ /* overloads */ OverloadIndex(63),
},
{
/* [1] */
/* fn barrier() */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(62),
+ /* overloads */ OverloadIndex(64),
},
{
/* [2] */
/* fn memoryBarrierBuffer() */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(62),
+ /* overloads */ OverloadIndex(64),
},
{
/* [3] */
/* fn memoryBarrierImage() */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(62),
+ /* overloads */ OverloadIndex(64),
},
{
/* [4] */
/* fn atomicCompSwap[T : iu32](ptr<workgroup_or_storage, atomic<T>, read_write>, compare_value: T, value: T) -> T */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(63),
+ /* overloads */ OverloadIndex(65),
},
{
/* [5] */
/* fn atomicSub[T : iu32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, T) -> T */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(64),
+ /* overloads */ OverloadIndex(66),
},
{
/* [6] */
@@ -2657,31 +2707,31 @@
/* [13] */
/* fn packFloat2x16(value: vec2<f16>) -> u32 */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(65),
+ /* overloads */ OverloadIndex(67),
},
{
/* [14] */
/* fn unpackFloat2x16(value: u32) -> vec2<f16> */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(66),
+ /* overloads */ OverloadIndex(68),
},
{
/* [15] */
/* fn any[N : num](vec<N, bool>) -> bool */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(67),
+ /* overloads */ OverloadIndex(69),
},
{
/* [16] */
/* fn all[N : num](vec<N, bool>) -> bool */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(67),
+ /* overloads */ OverloadIndex(69),
},
{
/* [17] */
/* fn dot[T : f32_f16, N : num](vec<N, T>, vec<N, T>) -> T */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(68),
+ /* overloads */ OverloadIndex(70),
},
{
/* [18] */
@@ -2692,6 +2742,13 @@
},
{
/* [19] */
+ /* fn frexp[T : f32_f16](value: T, exp: ptr<function, i32, read_write>) -> T */
+ /* fn frexp[N : num, T : f32_f16](value: vec<N, T>, exp: ptr<function, vec<N, i32>, read_write>) -> vec<N, T> */
+ /* num overloads */ 2,
+ /* overloads */ OverloadIndex(61),
+ },
+ {
+ /* [20] */
/* fn textureSize[T : fiu32](texture: texture_1d<T>, level: i32) -> i32 */
/* fn textureSize[T : fiu32](texture: texture_2d<T>, level: i32) -> vec2<i32> */
/* fn textureSize[T : fiu32](texture: texture_2d_array<T>, level: i32) -> vec3<i32> */
@@ -2708,7 +2765,7 @@
/* overloads */ OverloadIndex(0),
},
{
- /* [20] */
+ /* [21] */
/* fn imageSize[F : texel_format, A : access](texture: texture_storage_1d<F, A>) -> i32 */
/* fn imageSize[F : texel_format, A : access](texture: texture_storage_2d<F, A>) -> vec2<i32> */
/* fn imageSize[F : texel_format, A : access](texture: texture_storage_2d_array<F, A>) -> vec3<i32> */
@@ -2717,7 +2774,7 @@
/* overloads */ OverloadIndex(41),
},
{
- /* [21] */
+ /* [22] */
/* fn texelFetch[T : fiu32](texture: texture_1d<T>, location: i32, level: i32) -> vec4<T> */
/* fn texelFetch[T : fiu32](texture: texture_2d<T>, location: vec2<i32>, level: i32) -> vec4<T> */
/* fn texelFetch[T : fiu32](texture: texture_2d_array<T>, location: vec3<i32>, level: i32) -> vec4<T> */
@@ -2727,7 +2784,7 @@
/* overloads */ OverloadIndex(36),
},
{
- /* [22] */
+ /* [23] */
/* fn imageLoad[F : f32_texel_format, A : readable](texture: texture_storage_1d<F, A>, coords: i32) -> vec4<f32> */
/* fn imageLoad[F : f32_texel_format, A : readable](texture: texture_storage_2d<F, A>, coords: vec2<i32>) -> vec4<f32> */
/* fn imageLoad[F : f32_texel_format, A : readable](texture: texture_storage_2d_array<F, A>, coords: vec3<i32>) -> vec4<f32> */
@@ -2744,7 +2801,7 @@
/* overloads */ OverloadIndex(12),
},
{
- /* [23] */
+ /* [24] */
/* fn imageStore[C : iu32](texture: texture_storage_1d<f32_texel_format, writable>, coords: C, value: vec4<f32>) */
/* fn imageStore[C : iu32](texture: texture_storage_1d<i32_texel_format, writable>, coords: C, value: vec4<i32>) */
/* fn imageStore[C : iu32](texture: texture_storage_1d<u32_texel_format, writable>, coords: C, value: vec4<u32>) */
@@ -2761,40 +2818,40 @@
/* overloads */ OverloadIndex(24),
},
{
- /* [24] */
+ /* [25] */
/* fn lessThan[T : fiu32_f16, N : num](vec<N, T>, vec<N, T>) -> vec<N, bool> */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(69),
- },
- {
- /* [25] */
- /* fn lessThanEqual[T : fiu32_f16, N : num](vec<N, T>, vec<N, T>) -> vec<N, bool> */
- /* num overloads */ 1,
- /* overloads */ OverloadIndex(69),
+ /* overloads */ OverloadIndex(71),
},
{
/* [26] */
- /* fn greaterThan[T : fiu32_f16, N : num](vec<N, T>, vec<N, T>) -> vec<N, bool> */
+ /* fn lessThanEqual[T : fiu32_f16, N : num](vec<N, T>, vec<N, T>) -> vec<N, bool> */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(69),
+ /* overloads */ OverloadIndex(71),
},
{
/* [27] */
- /* fn greaterThanEqual[T : fiu32_f16, N : num](vec<N, T>, vec<N, T>) -> vec<N, bool> */
+ /* fn greaterThan[T : fiu32_f16, N : num](vec<N, T>, vec<N, T>) -> vec<N, bool> */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(69),
+ /* overloads */ OverloadIndex(71),
},
{
/* [28] */
- /* fn equal[T : fiu32_f16_bool, N : num](vec<N, T>, vec<N, T>) -> vec<N, bool> */
+ /* fn greaterThanEqual[T : fiu32_f16, N : num](vec<N, T>, vec<N, T>) -> vec<N, bool> */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(70),
+ /* overloads */ OverloadIndex(71),
},
{
/* [29] */
+ /* fn equal[T : fiu32_f16_bool, N : num](vec<N, T>, vec<N, T>) -> vec<N, bool> */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(72),
+ },
+ {
+ /* [30] */
/* fn notEqual[T : fiu32_f16_bool, N : num](vec<N, T>, vec<N, T>) -> vec<N, bool> */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(70),
+ /* overloads */ OverloadIndex(72),
},
};
diff --git a/src/tint/lang/glsl/writer/builtin_test.cc b/src/tint/lang/glsl/writer/builtin_test.cc
index 55eef71..529f8c3 100644
--- a/src/tint/lang/glsl/writer/builtin_test.cc
+++ b/src/tint/lang/glsl/writer/builtin_test.cc
@@ -1598,5 +1598,69 @@
)");
}
+TEST_F(GlslWriterTest, Frexp_Scalar) {
+ auto* value = b.FunctionParam<f32>("value");
+ auto* func = b.Function("foo", ty.f32());
+ func->SetParams({value});
+ b.Append(func->Block(), [&] {
+ auto* result = b.Call(core::type::CreateFrexpResult(ty, mod.symbols, ty.f32()),
+ core::BuiltinFn::kFrexp, value);
+ auto* fract = b.Access<f32>(result, 0_u);
+ auto* exp = b.Access<i32>(result, 1_u);
+ b.Return(func, b.Add<f32>(fract, b.Convert<f32>(exp)));
+ });
+
+ ASSERT_TRUE(Generate()) << err_ << output_.glsl;
+ EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+
+struct frexp_result_f32 {
+ float fract;
+ int exp;
+};
+
+float foo(float value) {
+ frexp_result_f32 v = frexp_result_f32(0.0f, 0);
+ v.fract = frexp(value, v.exp);
+ frexp_result_f32 v_1 = v;
+ return (v_1.fract + float(v_1.exp));
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
+)");
+}
+
+TEST_F(GlslWriterTest, Frexp_Vector) {
+ auto* value = b.FunctionParam<vec4<f32>>("value");
+ auto* func = b.Function("foo", ty.vec4<f32>());
+ func->SetParams({value});
+ b.Append(func->Block(), [&] {
+ auto* result = b.Call(core::type::CreateFrexpResult(ty, mod.symbols, ty.vec4<f32>()),
+ core::BuiltinFn::kFrexp, value);
+ auto* fract = b.Access<vec4<f32>>(result, 0_u);
+ auto* exp = b.Access<vec4<i32>>(result, 1_u);
+ b.Return(func, b.Add<vec4<f32>>(fract, b.Convert<vec4<f32>>(exp)));
+ });
+
+ ASSERT_TRUE(Generate()) << err_ << output_.glsl;
+ EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+
+struct frexp_result_vec4_f32 {
+ vec4 fract;
+ ivec4 exp;
+};
+
+vec4 foo(vec4 value) {
+ frexp_result_vec4_f32 v = frexp_result_vec4_f32(vec4(0.0f), ivec4(0));
+ v.fract = frexp(value, v.exp);
+ frexp_result_vec4_f32 v_1 = v;
+ return (v_1.fract + vec4(v_1.exp));
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+}
+)");
+}
+
} // namespace
} // namespace tint::glsl::writer
diff --git a/src/tint/lang/glsl/writer/raise/builtin_polyfill.cc b/src/tint/lang/glsl/writer/raise/builtin_polyfill.cc
index 7f9f727..d2ce2a7 100644
--- a/src/tint/lang/glsl/writer/raise/builtin_polyfill.cc
+++ b/src/tint/lang/glsl/writer/raise/builtin_polyfill.cc
@@ -81,6 +81,7 @@
case core::BuiltinFn::kDot:
case core::BuiltinFn::kExtractBits:
case core::BuiltinFn::kFma:
+ case core::BuiltinFn::kFrexp:
case core::BuiltinFn::kInsertBits:
case core::BuiltinFn::kModf:
case core::BuiltinFn::kSelect:
@@ -133,6 +134,9 @@
case core::BuiltinFn::kFma:
FMA(call);
break;
+ case core::BuiltinFn::kFrexp:
+ Frexp(call);
+ break;
case core::BuiltinFn::kInsertBits:
InsertBits(call);
break;
@@ -255,6 +259,26 @@
call->Destroy();
}
+ void Frexp(core::ir::BuiltinCall* call) {
+ b.InsertBefore(call, [&] {
+ // GLSL's frexp returns `fract` and outputs `whole` as an output parameter.
+ // Polyfill it by declaring the result struct and then setting the values:
+ // __frexp_result result = {};
+ // result.fract = frexp(arg, result.exp);
+ auto* result_type = call->Result(0)->Type();
+ auto* float_type = result_type->Element(0);
+ auto* i32_type = result_type->Element(1);
+ auto* result = b.Var(ty.ptr(function, result_type));
+ auto* exp = b.Access(ty.ptr(function, i32_type), result, u32(1));
+ auto args = Vector<core::ir::Value*, 2>{call->Args()[0], exp->Result(0)};
+ auto* res =
+ b.Call<glsl::ir::BuiltinCall>(float_type, glsl::BuiltinFn::kFrexp, std::move(args));
+ b.Store(b.Access(ty.ptr(function, float_type), result, u32(0)), res);
+ b.LoadWithResult(call->DetachResult(), result);
+ });
+ call->Destroy();
+ }
+
void Modf(core::ir::BuiltinCall* call) {
b.InsertBefore(call, [&] {
// GLSL's modf returns `fract` and outputs `whole` as an output parameter.
diff --git a/src/tint/lang/glsl/writer/raise/builtin_polyfill_test.cc b/src/tint/lang/glsl/writer/raise/builtin_polyfill_test.cc
index 148fbe6..351ba86 100644
--- a/src/tint/lang/glsl/writer/raise/builtin_polyfill_test.cc
+++ b/src/tint/lang/glsl/writer/raise/builtin_polyfill_test.cc
@@ -1811,5 +1811,121 @@
EXPECT_EQ(expect, str());
}
+TEST_F(GlslWriter_BuiltinPolyfillTest, Frexp_Scalar) {
+ auto* value = b.FunctionParam<f32>("value");
+ auto* func = b.Function("foo", ty.f32());
+ func->SetParams({value});
+ b.Append(func->Block(), [&] {
+ auto* result = b.Call(core::type::CreateFrexpResult(ty, mod.symbols, ty.f32()),
+ core::BuiltinFn::kFrexp, value);
+ auto* fract = b.Access<f32>(result, 0_u);
+ auto* exp = b.Access<i32>(result, 1_u);
+ b.Return(func, b.Add<f32>(fract, b.Convert<f32>(exp)));
+ });
+
+ auto* src = R"(
+__frexp_result_f32 = struct @align(4) {
+ fract:f32 @offset(0)
+ exp:i32 @offset(4)
+}
+
+%foo = func(%value:f32):f32 {
+ $B1: {
+ %3:__frexp_result_f32 = frexp %value
+ %4:f32 = access %3, 0u
+ %5:i32 = access %3, 1u
+ %6:f32 = convert %5
+ %7:f32 = add %4, %6
+ ret %7
+ }
+}
+)";
+ EXPECT_EQ(src, str());
+
+ auto* expect = R"(
+__frexp_result_f32 = struct @align(4) {
+ fract:f32 @offset(0)
+ exp:i32 @offset(4)
+}
+
+%foo = func(%value:f32):f32 {
+ $B1: {
+ %3:ptr<function, __frexp_result_f32, read_write> = var
+ %4:ptr<function, i32, read_write> = access %3, 1u
+ %5:f32 = glsl.frexp %value, %4
+ %6:ptr<function, f32, read_write> = access %3, 0u
+ store %6, %5
+ %7:__frexp_result_f32 = load %3
+ %8:f32 = access %7, 0u
+ %9:i32 = access %7, 1u
+ %10:f32 = convert %9
+ %11:f32 = add %8, %10
+ ret %11
+ }
+}
+)";
+
+ Run(BuiltinPolyfill);
+ EXPECT_EQ(expect, str());
+}
+
+TEST_F(GlslWriter_BuiltinPolyfillTest, Frexp_Vector) {
+ auto* value = b.FunctionParam<vec4<f32>>("value");
+ auto* func = b.Function("foo", ty.vec4<f32>());
+ func->SetParams({value});
+ b.Append(func->Block(), [&] {
+ auto* result = b.Call(core::type::CreateFrexpResult(ty, mod.symbols, ty.vec4<f32>()),
+ core::BuiltinFn::kFrexp, value);
+ auto* fract = b.Access<vec4<f32>>(result, 0_u);
+ auto* exp = b.Access<vec4<i32>>(result, 1_u);
+ b.Return(func, b.Add<vec4<f32>>(fract, b.Convert<vec4<f32>>(exp)));
+ });
+
+ auto* src = R"(
+__frexp_result_vec4_f32 = struct @align(16) {
+ fract:vec4<f32> @offset(0)
+ exp:vec4<i32> @offset(16)
+}
+
+%foo = func(%value:vec4<f32>):vec4<f32> {
+ $B1: {
+ %3:__frexp_result_vec4_f32 = frexp %value
+ %4:vec4<f32> = access %3, 0u
+ %5:vec4<i32> = access %3, 1u
+ %6:vec4<f32> = convert %5
+ %7:vec4<f32> = add %4, %6
+ ret %7
+ }
+}
+)";
+ EXPECT_EQ(src, str());
+
+ auto* expect = R"(
+__frexp_result_vec4_f32 = struct @align(16) {
+ fract:vec4<f32> @offset(0)
+ exp:vec4<i32> @offset(16)
+}
+
+%foo = func(%value:vec4<f32>):vec4<f32> {
+ $B1: {
+ %3:ptr<function, __frexp_result_vec4_f32, read_write> = var
+ %4:ptr<function, vec4<i32>, read_write> = access %3, 1u
+ %5:vec4<f32> = glsl.frexp %value, %4
+ %6:ptr<function, vec4<f32>, read_write> = access %3, 0u
+ store %6, %5
+ %7:__frexp_result_vec4_f32 = load %3
+ %8:vec4<f32> = access %7, 0u
+ %9:vec4<i32> = access %7, 1u
+ %10:vec4<f32> = convert %9
+ %11:vec4<f32> = add %8, %10
+ ret %11
+ }
+}
+)";
+
+ Run(BuiltinPolyfill);
+ EXPECT_EQ(expect, str());
+}
+
} // namespace
} // namespace tint::glsl::writer::raise
diff --git a/test/tint/builtins/frexp/scalar/mixed.wgsl.expected.ir.glsl b/test/tint/builtins/frexp/scalar/mixed.wgsl.expected.ir.glsl
index 08584a6..cebdbd7 100644
--- a/test/tint/builtins/frexp/scalar/mixed.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/frexp/scalar/mixed.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
#version 310 es
@@ -12,18 +10,10 @@
void main() {
float runtime_in = 1.25f;
frexp_result_f32 res = frexp_result_f32(0.625f, 1);
- res = frexp(runtime_in);
+ frexp_result_f32 v = frexp_result_f32(0.0f, 0);
+ v.fract = frexp(runtime_in, v.exp);
+ res = v;
res = frexp_result_f32(0.625f, 1);
float tint_symbol_1 = res.fract;
int tint_symbol_2 = res.exp;
}
-error: Error parsing GLSL shader:
-ERROR: 0:13: 'frexp' : no matching overloaded function found
-ERROR: 0:13: 'assign' : cannot convert from ' const float' to ' temp structure{ global highp float fract, global highp int exp}'
-ERROR: 0:13: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/frexp/scalar/runtime.wgsl.expected.ir.glsl b/test/tint/builtins/frexp/scalar/runtime.wgsl.expected.ir.glsl
index 2621d07..ee00b47 100644
--- a/test/tint/builtins/frexp/scalar/runtime.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/frexp/scalar/runtime.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
#version 310 es
@@ -11,17 +9,9 @@
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
float tint_symbol_1 = 1.25f;
- frexp_result_f32 res = frexp(tint_symbol_1);
+ frexp_result_f32 v = frexp_result_f32(0.0f, 0);
+ v.fract = frexp(tint_symbol_1, v.exp);
+ frexp_result_f32 res = v;
float tint_symbol_2 = res.fract;
int tint_symbol_3 = res.exp;
}
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'frexp' : no matching overloaded function found
-ERROR: 0:12: '=' : cannot convert from ' const float' to ' temp structure{ global highp float fract, global highp int exp}'
-ERROR: 0:12: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/frexp/vector/mixed.wgsl.expected.ir.glsl b/test/tint/builtins/frexp/vector/mixed.wgsl.expected.ir.glsl
index 44aefc9..4474078 100644
--- a/test/tint/builtins/frexp/vector/mixed.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/frexp/vector/mixed.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
#version 310 es
@@ -12,18 +10,10 @@
void main() {
vec2 runtime_in = vec2(1.25f, 3.75f);
frexp_result_vec2_f32 res = frexp_result_vec2_f32(vec2(0.625f, 0.9375f), ivec2(1, 2));
- res = frexp(runtime_in);
+ frexp_result_vec2_f32 v = frexp_result_vec2_f32(vec2(0.0f), ivec2(0));
+ v.fract = frexp(runtime_in, v.exp);
+ res = v;
res = frexp_result_vec2_f32(vec2(0.625f, 0.9375f), ivec2(1, 2));
vec2 tint_symbol_1 = res.fract;
ivec2 tint_symbol_2 = res.exp;
}
-error: Error parsing GLSL shader:
-ERROR: 0:13: 'frexp' : no matching overloaded function found
-ERROR: 0:13: 'assign' : cannot convert from ' const float' to ' temp structure{ global highp 2-component vector of float fract, global highp 2-component vector of int exp}'
-ERROR: 0:13: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/frexp/vector/runtime.wgsl.expected.ir.glsl b/test/tint/builtins/frexp/vector/runtime.wgsl.expected.ir.glsl
index 75fa0e7..67502f5 100644
--- a/test/tint/builtins/frexp/vector/runtime.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/frexp/vector/runtime.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
#version 310 es
@@ -11,17 +9,9 @@
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
vec2 tint_symbol_1 = vec2(1.25f, 3.75f);
- frexp_result_vec2_f32 res = frexp(tint_symbol_1);
+ frexp_result_vec2_f32 v = frexp_result_vec2_f32(vec2(0.0f), ivec2(0));
+ v.fract = frexp(tint_symbol_1, v.exp);
+ frexp_result_vec2_f32 res = v;
vec2 tint_symbol_2 = res.fract;
ivec2 tint_symbol_3 = res.exp;
}
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'frexp' : no matching overloaded function found
-ERROR: 0:12: '=' : cannot convert from ' const float' to ' temp structure{ global highp 2-component vector of float fract, global highp 2-component vector of int exp}'
-ERROR: 0:12: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/frexp/3dd21e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/frexp/3dd21e.wgsl.expected.ir.glsl
index 3ce41cb..b6ac605 100644
--- a/test/tint/builtins/gen/var/frexp/3dd21e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/frexp/3dd21e.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
#version 310 es
#extension GL_AMD_gpu_shader_half_float: require
precision highp float;
@@ -13,19 +11,13 @@
void frexp_3dd21e() {
f16vec4 arg_0 = f16vec4(1.0hf);
- frexp_result_vec4_f16 res = frexp(arg_0);
+ frexp_result_vec4_f16 v = frexp_result_vec4_f16(f16vec4(0.0hf), ivec4(0));
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_vec4_f16 res = v;
}
void main() {
frexp_3dd21e();
}
-error: Error parsing GLSL shader:
-ERROR: 0:14: 'frexp' : no matching overloaded function found
-ERROR: 0:14: '=' : cannot convert from ' const float' to ' temp structure{ global 4-component vector of float16_t fract, global highp 4-component vector of int exp}'
-ERROR: 0:14: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
#version 310 es
#extension GL_AMD_gpu_shader_half_float: require
@@ -37,20 +29,14 @@
void frexp_3dd21e() {
f16vec4 arg_0 = f16vec4(1.0hf);
- frexp_result_vec4_f16 res = frexp(arg_0);
+ frexp_result_vec4_f16 v = frexp_result_vec4_f16(f16vec4(0.0hf), ivec4(0));
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_vec4_f16 res = v;
}
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
frexp_3dd21e();
}
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'frexp' : no matching overloaded function found
-ERROR: 0:12: '=' : cannot convert from ' const float' to ' temp structure{ global 4-component vector of float16_t fract, global highp 4-component vector of int exp}'
-ERROR: 0:12: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
#version 310 es
#extension GL_AMD_gpu_shader_half_float: require
@@ -66,7 +52,9 @@
void frexp_3dd21e() {
f16vec4 arg_0 = f16vec4(1.0hf);
- frexp_result_vec4_f16 res = frexp(arg_0);
+ frexp_result_vec4_f16 v = frexp_result_vec4_f16(f16vec4(0.0hf), ivec4(0));
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_vec4_f16 res = v;
}
VertexOutput vertex_main_inner() {
VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
@@ -80,13 +68,3 @@
gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
gl_PointSize = 1.0f;
}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'frexp' : no matching overloaded function found
-ERROR: 0:16: '=' : cannot convert from ' const float' to ' temp structure{ global 4-component vector of float16_t fract, global highp 4-component vector of int exp}'
-ERROR: 0:16: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/frexp/4b2200.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/frexp/4b2200.wgsl.expected.ir.glsl
index 553d399..a8fdcb2 100644
--- a/test/tint/builtins/gen/var/frexp/4b2200.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/frexp/4b2200.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
#version 310 es
precision highp float;
precision highp int;
@@ -12,19 +10,13 @@
void frexp_4b2200() {
float arg_0 = 1.0f;
- frexp_result_f32 res = frexp(arg_0);
+ frexp_result_f32 v = frexp_result_f32(0.0f, 0);
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_f32 res = v;
}
void main() {
frexp_4b2200();
}
-error: Error parsing GLSL shader:
-ERROR: 0:13: 'frexp' : no matching overloaded function found
-ERROR: 0:13: '=' : cannot convert from ' const float' to ' temp structure{ global highp float fract, global highp int exp}'
-ERROR: 0:13: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
#version 310 es
@@ -35,20 +27,14 @@
void frexp_4b2200() {
float arg_0 = 1.0f;
- frexp_result_f32 res = frexp(arg_0);
+ frexp_result_f32 v = frexp_result_f32(0.0f, 0);
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_f32 res = v;
}
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
frexp_4b2200();
}
-error: Error parsing GLSL shader:
-ERROR: 0:11: 'frexp' : no matching overloaded function found
-ERROR: 0:11: '=' : cannot convert from ' const float' to ' temp structure{ global highp float fract, global highp int exp}'
-ERROR: 0:11: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
#version 310 es
@@ -63,7 +49,9 @@
void frexp_4b2200() {
float arg_0 = 1.0f;
- frexp_result_f32 res = frexp(arg_0);
+ frexp_result_f32 v = frexp_result_f32(0.0f, 0);
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_f32 res = v;
}
VertexOutput vertex_main_inner() {
VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
@@ -77,13 +65,3 @@
gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
gl_PointSize = 1.0f;
}
-error: Error parsing GLSL shader:
-ERROR: 0:15: 'frexp' : no matching overloaded function found
-ERROR: 0:15: '=' : cannot convert from ' const float' to ' temp structure{ global highp float fract, global highp int exp}'
-ERROR: 0:15: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/frexp/5257dd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/frexp/5257dd.wgsl.expected.ir.glsl
index 1f280c7..163e37e 100644
--- a/test/tint/builtins/gen/var/frexp/5257dd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/frexp/5257dd.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
#version 310 es
#extension GL_AMD_gpu_shader_half_float: require
precision highp float;
@@ -13,19 +11,13 @@
void frexp_5257dd() {
float16_t arg_0 = 1.0hf;
- frexp_result_f16 res = frexp(arg_0);
+ frexp_result_f16 v = frexp_result_f16(0.0hf, 0);
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_f16 res = v;
}
void main() {
frexp_5257dd();
}
-error: Error parsing GLSL shader:
-ERROR: 0:14: 'frexp' : no matching overloaded function found
-ERROR: 0:14: '=' : cannot convert from ' const float' to ' temp structure{ global float16_t fract, global highp int exp}'
-ERROR: 0:14: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
#version 310 es
#extension GL_AMD_gpu_shader_half_float: require
@@ -37,20 +29,14 @@
void frexp_5257dd() {
float16_t arg_0 = 1.0hf;
- frexp_result_f16 res = frexp(arg_0);
+ frexp_result_f16 v = frexp_result_f16(0.0hf, 0);
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_f16 res = v;
}
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
frexp_5257dd();
}
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'frexp' : no matching overloaded function found
-ERROR: 0:12: '=' : cannot convert from ' const float' to ' temp structure{ global float16_t fract, global highp int exp}'
-ERROR: 0:12: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
#version 310 es
#extension GL_AMD_gpu_shader_half_float: require
@@ -66,7 +52,9 @@
void frexp_5257dd() {
float16_t arg_0 = 1.0hf;
- frexp_result_f16 res = frexp(arg_0);
+ frexp_result_f16 v = frexp_result_f16(0.0hf, 0);
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_f16 res = v;
}
VertexOutput vertex_main_inner() {
VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
@@ -80,13 +68,3 @@
gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
gl_PointSize = 1.0f;
}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'frexp' : no matching overloaded function found
-ERROR: 0:16: '=' : cannot convert from ' const float' to ' temp structure{ global float16_t fract, global highp int exp}'
-ERROR: 0:16: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/frexp/5f47bf.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/frexp/5f47bf.wgsl.expected.ir.glsl
index 5bb9452..9873605 100644
--- a/test/tint/builtins/gen/var/frexp/5f47bf.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/frexp/5f47bf.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
#version 310 es
#extension GL_AMD_gpu_shader_half_float: require
precision highp float;
@@ -13,19 +11,13 @@
void frexp_5f47bf() {
f16vec2 arg_0 = f16vec2(1.0hf);
- frexp_result_vec2_f16 res = frexp(arg_0);
+ frexp_result_vec2_f16 v = frexp_result_vec2_f16(f16vec2(0.0hf), ivec2(0));
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_vec2_f16 res = v;
}
void main() {
frexp_5f47bf();
}
-error: Error parsing GLSL shader:
-ERROR: 0:14: 'frexp' : no matching overloaded function found
-ERROR: 0:14: '=' : cannot convert from ' const float' to ' temp structure{ global 2-component vector of float16_t fract, global highp 2-component vector of int exp}'
-ERROR: 0:14: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
#version 310 es
#extension GL_AMD_gpu_shader_half_float: require
@@ -37,20 +29,14 @@
void frexp_5f47bf() {
f16vec2 arg_0 = f16vec2(1.0hf);
- frexp_result_vec2_f16 res = frexp(arg_0);
+ frexp_result_vec2_f16 v = frexp_result_vec2_f16(f16vec2(0.0hf), ivec2(0));
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_vec2_f16 res = v;
}
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
frexp_5f47bf();
}
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'frexp' : no matching overloaded function found
-ERROR: 0:12: '=' : cannot convert from ' const float' to ' temp structure{ global 2-component vector of float16_t fract, global highp 2-component vector of int exp}'
-ERROR: 0:12: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
#version 310 es
#extension GL_AMD_gpu_shader_half_float: require
@@ -66,7 +52,9 @@
void frexp_5f47bf() {
f16vec2 arg_0 = f16vec2(1.0hf);
- frexp_result_vec2_f16 res = frexp(arg_0);
+ frexp_result_vec2_f16 v = frexp_result_vec2_f16(f16vec2(0.0hf), ivec2(0));
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_vec2_f16 res = v;
}
VertexOutput vertex_main_inner() {
VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
@@ -80,13 +68,3 @@
gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
gl_PointSize = 1.0f;
}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'frexp' : no matching overloaded function found
-ERROR: 0:16: '=' : cannot convert from ' const float' to ' temp structure{ global 2-component vector of float16_t fract, global highp 2-component vector of int exp}'
-ERROR: 0:16: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/frexp/77af93.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/frexp/77af93.wgsl.expected.ir.glsl
index 01d474a..756f772 100644
--- a/test/tint/builtins/gen/var/frexp/77af93.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/frexp/77af93.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
#version 310 es
precision highp float;
precision highp int;
@@ -12,19 +10,13 @@
void frexp_77af93() {
vec4 arg_0 = vec4(1.0f);
- frexp_result_vec4_f32 res = frexp(arg_0);
+ frexp_result_vec4_f32 v = frexp_result_vec4_f32(vec4(0.0f), ivec4(0));
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_vec4_f32 res = v;
}
void main() {
frexp_77af93();
}
-error: Error parsing GLSL shader:
-ERROR: 0:13: 'frexp' : no matching overloaded function found
-ERROR: 0:13: '=' : cannot convert from ' const float' to ' temp structure{ global highp 4-component vector of float fract, global highp 4-component vector of int exp}'
-ERROR: 0:13: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
#version 310 es
@@ -35,20 +27,14 @@
void frexp_77af93() {
vec4 arg_0 = vec4(1.0f);
- frexp_result_vec4_f32 res = frexp(arg_0);
+ frexp_result_vec4_f32 v = frexp_result_vec4_f32(vec4(0.0f), ivec4(0));
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_vec4_f32 res = v;
}
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
frexp_77af93();
}
-error: Error parsing GLSL shader:
-ERROR: 0:11: 'frexp' : no matching overloaded function found
-ERROR: 0:11: '=' : cannot convert from ' const float' to ' temp structure{ global highp 4-component vector of float fract, global highp 4-component vector of int exp}'
-ERROR: 0:11: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
#version 310 es
@@ -63,7 +49,9 @@
void frexp_77af93() {
vec4 arg_0 = vec4(1.0f);
- frexp_result_vec4_f32 res = frexp(arg_0);
+ frexp_result_vec4_f32 v = frexp_result_vec4_f32(vec4(0.0f), ivec4(0));
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_vec4_f32 res = v;
}
VertexOutput vertex_main_inner() {
VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
@@ -77,13 +65,3 @@
gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
gl_PointSize = 1.0f;
}
-error: Error parsing GLSL shader:
-ERROR: 0:15: 'frexp' : no matching overloaded function found
-ERROR: 0:15: '=' : cannot convert from ' const float' to ' temp structure{ global highp 4-component vector of float fract, global highp 4-component vector of int exp}'
-ERROR: 0:15: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/frexp/979800.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/frexp/979800.wgsl.expected.ir.glsl
index e18d561..5e8ef38 100644
--- a/test/tint/builtins/gen/var/frexp/979800.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/frexp/979800.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
#version 310 es
precision highp float;
precision highp int;
@@ -12,19 +10,13 @@
void frexp_979800() {
vec3 arg_0 = vec3(1.0f);
- frexp_result_vec3_f32 res = frexp(arg_0);
+ frexp_result_vec3_f32 v = frexp_result_vec3_f32(vec3(0.0f), ivec3(0));
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_vec3_f32 res = v;
}
void main() {
frexp_979800();
}
-error: Error parsing GLSL shader:
-ERROR: 0:13: 'frexp' : no matching overloaded function found
-ERROR: 0:13: '=' : cannot convert from ' const float' to ' temp structure{ global highp 3-component vector of float fract, global highp 3-component vector of int exp}'
-ERROR: 0:13: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
#version 310 es
@@ -35,20 +27,14 @@
void frexp_979800() {
vec3 arg_0 = vec3(1.0f);
- frexp_result_vec3_f32 res = frexp(arg_0);
+ frexp_result_vec3_f32 v = frexp_result_vec3_f32(vec3(0.0f), ivec3(0));
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_vec3_f32 res = v;
}
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
frexp_979800();
}
-error: Error parsing GLSL shader:
-ERROR: 0:11: 'frexp' : no matching overloaded function found
-ERROR: 0:11: '=' : cannot convert from ' const float' to ' temp structure{ global highp 3-component vector of float fract, global highp 3-component vector of int exp}'
-ERROR: 0:11: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
#version 310 es
@@ -63,7 +49,9 @@
void frexp_979800() {
vec3 arg_0 = vec3(1.0f);
- frexp_result_vec3_f32 res = frexp(arg_0);
+ frexp_result_vec3_f32 v = frexp_result_vec3_f32(vec3(0.0f), ivec3(0));
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_vec3_f32 res = v;
}
VertexOutput vertex_main_inner() {
VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
@@ -77,13 +65,3 @@
gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
gl_PointSize = 1.0f;
}
-error: Error parsing GLSL shader:
-ERROR: 0:15: 'frexp' : no matching overloaded function found
-ERROR: 0:15: '=' : cannot convert from ' const float' to ' temp structure{ global highp 3-component vector of float fract, global highp 3-component vector of int exp}'
-ERROR: 0:15: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/frexp/ae4a66.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/frexp/ae4a66.wgsl.expected.ir.glsl
index 41f1165..75de641 100644
--- a/test/tint/builtins/gen/var/frexp/ae4a66.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/frexp/ae4a66.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
#version 310 es
#extension GL_AMD_gpu_shader_half_float: require
precision highp float;
@@ -13,19 +11,13 @@
void frexp_ae4a66() {
f16vec3 arg_0 = f16vec3(1.0hf);
- frexp_result_vec3_f16 res = frexp(arg_0);
+ frexp_result_vec3_f16 v = frexp_result_vec3_f16(f16vec3(0.0hf), ivec3(0));
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_vec3_f16 res = v;
}
void main() {
frexp_ae4a66();
}
-error: Error parsing GLSL shader:
-ERROR: 0:14: 'frexp' : no matching overloaded function found
-ERROR: 0:14: '=' : cannot convert from ' const float' to ' temp structure{ global 3-component vector of float16_t fract, global highp 3-component vector of int exp}'
-ERROR: 0:14: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
#version 310 es
#extension GL_AMD_gpu_shader_half_float: require
@@ -37,20 +29,14 @@
void frexp_ae4a66() {
f16vec3 arg_0 = f16vec3(1.0hf);
- frexp_result_vec3_f16 res = frexp(arg_0);
+ frexp_result_vec3_f16 v = frexp_result_vec3_f16(f16vec3(0.0hf), ivec3(0));
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_vec3_f16 res = v;
}
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
frexp_ae4a66();
}
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'frexp' : no matching overloaded function found
-ERROR: 0:12: '=' : cannot convert from ' const float' to ' temp structure{ global 3-component vector of float16_t fract, global highp 3-component vector of int exp}'
-ERROR: 0:12: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
#version 310 es
#extension GL_AMD_gpu_shader_half_float: require
@@ -66,7 +52,9 @@
void frexp_ae4a66() {
f16vec3 arg_0 = f16vec3(1.0hf);
- frexp_result_vec3_f16 res = frexp(arg_0);
+ frexp_result_vec3_f16 v = frexp_result_vec3_f16(f16vec3(0.0hf), ivec3(0));
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_vec3_f16 res = v;
}
VertexOutput vertex_main_inner() {
VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
@@ -80,13 +68,3 @@
gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
gl_PointSize = 1.0f;
}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'frexp' : no matching overloaded function found
-ERROR: 0:16: '=' : cannot convert from ' const float' to ' temp structure{ global 3-component vector of float16_t fract, global highp 3-component vector of int exp}'
-ERROR: 0:16: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/frexp/eb2421.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/frexp/eb2421.wgsl.expected.ir.glsl
index e53f5f0..b4188a7 100644
--- a/test/tint/builtins/gen/var/frexp/eb2421.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/frexp/eb2421.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
#version 310 es
precision highp float;
precision highp int;
@@ -12,19 +10,13 @@
void frexp_eb2421() {
vec2 arg_0 = vec2(1.0f);
- frexp_result_vec2_f32 res = frexp(arg_0);
+ frexp_result_vec2_f32 v = frexp_result_vec2_f32(vec2(0.0f), ivec2(0));
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_vec2_f32 res = v;
}
void main() {
frexp_eb2421();
}
-error: Error parsing GLSL shader:
-ERROR: 0:13: 'frexp' : no matching overloaded function found
-ERROR: 0:13: '=' : cannot convert from ' const float' to ' temp structure{ global highp 2-component vector of float fract, global highp 2-component vector of int exp}'
-ERROR: 0:13: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
#version 310 es
@@ -35,20 +27,14 @@
void frexp_eb2421() {
vec2 arg_0 = vec2(1.0f);
- frexp_result_vec2_f32 res = frexp(arg_0);
+ frexp_result_vec2_f32 v = frexp_result_vec2_f32(vec2(0.0f), ivec2(0));
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_vec2_f32 res = v;
}
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
frexp_eb2421();
}
-error: Error parsing GLSL shader:
-ERROR: 0:11: 'frexp' : no matching overloaded function found
-ERROR: 0:11: '=' : cannot convert from ' const float' to ' temp structure{ global highp 2-component vector of float fract, global highp 2-component vector of int exp}'
-ERROR: 0:11: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
#version 310 es
@@ -63,7 +49,9 @@
void frexp_eb2421() {
vec2 arg_0 = vec2(1.0f);
- frexp_result_vec2_f32 res = frexp(arg_0);
+ frexp_result_vec2_f32 v = frexp_result_vec2_f32(vec2(0.0f), ivec2(0));
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_vec2_f32 res = v;
}
VertexOutput vertex_main_inner() {
VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
@@ -77,13 +65,3 @@
gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
gl_PointSize = 1.0f;
}
-error: Error parsing GLSL shader:
-ERROR: 0:15: 'frexp' : no matching overloaded function found
-ERROR: 0:15: '=' : cannot convert from ' const float' to ' temp structure{ global highp 2-component vector of float fract, global highp 2-component vector of int exp}'
-ERROR: 0:15: '' : compilation terminated
-ERROR: 3 compilation errors. No code generated.
-
-
-
-
-tint executable returned error: exit status 1