[msl] Add polyfill for frexp builtin
MSL's frexp returns `fract` and outputs `exp` as an output
parameter. Polyfill it by declaring the result struct and then setting
the values.
Bug: 42251016
Change-Id: I4534d5f8eadfd04ad7bf7175fa9aac609271a7ac
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/196360
Reviewed-by: dan sinclair <dsinclair@chromium.org>
diff --git a/src/tint/lang/msl/builtin_fn.cc b/src/tint/lang/msl/builtin_fn.cc
index c522933..8b11556 100644
--- a/src/tint/lang/msl/builtin_fn.cc
+++ b/src/tint/lang/msl/builtin_fn.cc
@@ -96,6 +96,8 @@
return "dot";
case BuiltinFn::kFmod:
return "fmod";
+ case BuiltinFn::kFrexp:
+ return "frexp";
case BuiltinFn::kLength:
return "length";
case BuiltinFn::kModf:
diff --git a/src/tint/lang/msl/builtin_fn.h b/src/tint/lang/msl/builtin_fn.h
index 8da3f08..d1f7ea3 100644
--- a/src/tint/lang/msl/builtin_fn.h
+++ b/src/tint/lang/msl/builtin_fn.h
@@ -74,6 +74,7 @@
kDistance,
kDot,
kFmod,
+ kFrexp,
kLength,
kModf,
kSign,
diff --git a/src/tint/lang/msl/intrinsic/data.cc b/src/tint/lang/msl/intrinsic/data.cc
index b60151f..c23dc72 100644
--- a/src/tint/lang/msl/intrinsic/data.cc
+++ b/src/tint/lang/msl/intrinsic/data.cc
@@ -1041,57 +1041,60 @@
/* [93] */ MatcherIndex(11),
/* [94] */ MatcherIndex(0),
/* [95] */ MatcherIndex(1),
- /* [96] */ MatcherIndex(10),
+ /* [96] */ MatcherIndex(11),
/* [97] */ MatcherIndex(0),
- /* [98] */ MatcherIndex(17),
- /* [99] */ MatcherIndex(0),
- /* [100] */ MatcherIndex(8),
- /* [101] */ MatcherIndex(6),
- /* [102] */ MatcherIndex(18),
- /* [103] */ MatcherIndex(0),
- /* [104] */ MatcherIndex(20),
- /* [105] */ MatcherIndex(0),
- /* [106] */ MatcherIndex(9),
- /* [107] */ MatcherIndex(6),
- /* [108] */ MatcherIndex(21),
- /* [109] */ MatcherIndex(0),
- /* [110] */ MatcherIndex(10),
- /* [111] */ MatcherIndex(6),
- /* [112] */ MatcherIndex(16),
- /* [113] */ MatcherIndex(0),
- /* [114] */ MatcherIndex(19),
- /* [115] */ MatcherIndex(0),
- /* [116] */ MatcherIndex(27),
- /* [117] */ MatcherIndex(0),
- /* [118] */ MatcherIndex(16),
- /* [119] */ MatcherIndex(6),
- /* [120] */ MatcherIndex(17),
- /* [121] */ MatcherIndex(6),
- /* [122] */ MatcherIndex(18),
- /* [123] */ MatcherIndex(6),
- /* [124] */ MatcherIndex(19),
- /* [125] */ MatcherIndex(6),
- /* [126] */ MatcherIndex(20),
- /* [127] */ MatcherIndex(6),
- /* [128] */ MatcherIndex(21),
- /* [129] */ MatcherIndex(6),
- /* [130] */ MatcherIndex(37),
- /* [131] */ MatcherIndex(7),
- /* [132] */ MatcherIndex(38),
- /* [133] */ MatcherIndex(14),
- /* [134] */ MatcherIndex(22),
- /* [135] */ MatcherIndex(23),
- /* [136] */ MatcherIndex(24),
- /* [137] */ MatcherIndex(25),
- /* [138] */ MatcherIndex(15),
- /* [139] */ MatcherIndex(26),
- /* [140] */ MatcherIndex(2),
- /* [141] */ MatcherIndex(36),
- /* [142] */ MatcherIndex(32),
- /* [143] */ MatcherIndex(33),
- /* [144] */ MatcherIndex(34),
- /* [145] */ MatcherIndex(35),
- /* [146] */ MatcherIndex(39),
+ /* [98] */ MatcherIndex(4),
+ /* [99] */ MatcherIndex(10),
+ /* [100] */ MatcherIndex(0),
+ /* [101] */ MatcherIndex(17),
+ /* [102] */ MatcherIndex(0),
+ /* [103] */ MatcherIndex(8),
+ /* [104] */ MatcherIndex(6),
+ /* [105] */ MatcherIndex(18),
+ /* [106] */ MatcherIndex(0),
+ /* [107] */ MatcherIndex(20),
+ /* [108] */ MatcherIndex(0),
+ /* [109] */ MatcherIndex(9),
+ /* [110] */ MatcherIndex(6),
+ /* [111] */ MatcherIndex(21),
+ /* [112] */ MatcherIndex(0),
+ /* [113] */ MatcherIndex(10),
+ /* [114] */ MatcherIndex(6),
+ /* [115] */ MatcherIndex(16),
+ /* [116] */ MatcherIndex(0),
+ /* [117] */ MatcherIndex(19),
+ /* [118] */ MatcherIndex(0),
+ /* [119] */ MatcherIndex(27),
+ /* [120] */ MatcherIndex(0),
+ /* [121] */ MatcherIndex(16),
+ /* [122] */ MatcherIndex(6),
+ /* [123] */ MatcherIndex(17),
+ /* [124] */ MatcherIndex(6),
+ /* [125] */ MatcherIndex(18),
+ /* [126] */ MatcherIndex(6),
+ /* [127] */ MatcherIndex(19),
+ /* [128] */ MatcherIndex(6),
+ /* [129] */ MatcherIndex(20),
+ /* [130] */ MatcherIndex(6),
+ /* [131] */ MatcherIndex(21),
+ /* [132] */ MatcherIndex(6),
+ /* [133] */ MatcherIndex(37),
+ /* [134] */ MatcherIndex(7),
+ /* [135] */ MatcherIndex(38),
+ /* [136] */ MatcherIndex(14),
+ /* [137] */ MatcherIndex(22),
+ /* [138] */ MatcherIndex(23),
+ /* [139] */ MatcherIndex(24),
+ /* [140] */ MatcherIndex(25),
+ /* [141] */ MatcherIndex(15),
+ /* [142] */ MatcherIndex(26),
+ /* [143] */ MatcherIndex(2),
+ /* [144] */ MatcherIndex(36),
+ /* [145] */ MatcherIndex(32),
+ /* [146] */ MatcherIndex(33),
+ /* [147] */ MatcherIndex(34),
+ /* [148] */ MatcherIndex(35),
+ /* [149] */ MatcherIndex(39),
};
static_assert(MatcherIndicesIndex::CanIndex(kMatcherIndices),
@@ -1101,17 +1104,17 @@
{
/* [0] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(135),
+ /* matcher_indices */ MatcherIndicesIndex(138),
},
{
/* [1] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(138),
+ /* matcher_indices */ MatcherIndicesIndex(141),
},
{
/* [2] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(100),
+ /* matcher_indices */ MatcherIndicesIndex(103),
},
{
/* [3] */
@@ -1126,7 +1129,7 @@
{
/* [5] */
/* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(141),
+ /* matcher_indices */ MatcherIndicesIndex(144),
},
{
/* [6] */
@@ -1136,17 +1139,17 @@
{
/* [7] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(102),
+ /* matcher_indices */ MatcherIndicesIndex(105),
},
{
/* [8] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [9] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(100),
+ /* matcher_indices */ MatcherIndicesIndex(103),
},
{
/* [10] */
@@ -1166,17 +1169,17 @@
{
/* [13] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(135),
+ /* matcher_indices */ MatcherIndicesIndex(138),
},
{
/* [14] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(138),
+ /* matcher_indices */ MatcherIndicesIndex(141),
},
{
/* [15] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(100),
+ /* matcher_indices */ MatcherIndicesIndex(103),
},
{
/* [16] */
@@ -1196,17 +1199,17 @@
{
/* [19] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(122),
+ /* matcher_indices */ MatcherIndicesIndex(125),
},
{
/* [20] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [21] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(100),
+ /* matcher_indices */ MatcherIndicesIndex(103),
},
{
/* [22] */
@@ -1216,7 +1219,7 @@
{
/* [23] */
/* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(141),
+ /* matcher_indices */ MatcherIndicesIndex(144),
},
{
/* [24] */
@@ -1226,17 +1229,17 @@
{
/* [25] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(135),
+ /* matcher_indices */ MatcherIndicesIndex(138),
},
{
/* [26] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [27] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(100),
+ /* matcher_indices */ MatcherIndicesIndex(103),
},
{
/* [28] */
@@ -1246,7 +1249,7 @@
{
/* [29] */
/* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(141),
+ /* matcher_indices */ MatcherIndicesIndex(144),
},
{
/* [30] */
@@ -1256,17 +1259,17 @@
{
/* [31] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(122),
+ /* matcher_indices */ MatcherIndicesIndex(125),
},
{
/* [32] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [33] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(100),
+ /* matcher_indices */ MatcherIndicesIndex(103),
},
{
/* [34] */
@@ -1276,7 +1279,7 @@
{
/* [35] */
/* usage */ core::ParameterUsage::kBias,
- /* matcher_indices */ MatcherIndicesIndex(142),
+ /* matcher_indices */ MatcherIndicesIndex(145),
},
{
/* [36] */
@@ -1286,17 +1289,17 @@
{
/* [37] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(122),
+ /* matcher_indices */ MatcherIndicesIndex(125),
},
{
/* [38] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [39] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(100),
+ /* matcher_indices */ MatcherIndicesIndex(103),
},
{
/* [40] */
@@ -1306,7 +1309,7 @@
{
/* [41] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(143),
+ /* matcher_indices */ MatcherIndicesIndex(146),
},
{
/* [42] */
@@ -1316,17 +1319,17 @@
{
/* [43] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(134),
+ /* matcher_indices */ MatcherIndicesIndex(137),
},
{
/* [44] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(138),
+ /* matcher_indices */ MatcherIndicesIndex(141),
},
{
/* [45] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(100),
+ /* matcher_indices */ MatcherIndicesIndex(103),
},
{
/* [46] */
@@ -1336,7 +1339,7 @@
{
/* [47] */
/* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(141),
+ /* matcher_indices */ MatcherIndicesIndex(144),
},
{
/* [48] */
@@ -1346,17 +1349,17 @@
{
/* [49] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(137),
+ /* matcher_indices */ MatcherIndicesIndex(140),
},
{
/* [50] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(138),
+ /* matcher_indices */ MatcherIndicesIndex(141),
},
{
/* [51] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(106),
+ /* matcher_indices */ MatcherIndicesIndex(109),
},
{
/* [52] */
@@ -1371,7 +1374,7 @@
{
/* [54] */
/* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(141),
+ /* matcher_indices */ MatcherIndicesIndex(144),
},
{
/* [55] */
@@ -1401,17 +1404,17 @@
{
/* [60] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(98),
+ /* matcher_indices */ MatcherIndicesIndex(101),
},
{
/* [61] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [62] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(100),
+ /* matcher_indices */ MatcherIndicesIndex(103),
},
{
/* [63] */
@@ -1426,17 +1429,17 @@
{
/* [65] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(108),
+ /* matcher_indices */ MatcherIndicesIndex(111),
},
{
/* [66] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [67] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(106),
+ /* matcher_indices */ MatcherIndicesIndex(109),
},
{
/* [68] */
@@ -1451,17 +1454,17 @@
{
/* [70] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(135),
+ /* matcher_indices */ MatcherIndicesIndex(138),
},
{
/* [71] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [72] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(100),
+ /* matcher_indices */ MatcherIndicesIndex(103),
},
{
/* [73] */
@@ -1476,17 +1479,17 @@
{
/* [75] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(134),
+ /* matcher_indices */ MatcherIndicesIndex(137),
},
{
/* [76] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(138),
+ /* matcher_indices */ MatcherIndicesIndex(141),
},
{
/* [77] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(100),
+ /* matcher_indices */ MatcherIndicesIndex(103),
},
{
/* [78] */
@@ -1501,17 +1504,17 @@
{
/* [80] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(122),
+ /* matcher_indices */ MatcherIndicesIndex(125),
},
{
/* [81] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [82] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(100),
+ /* matcher_indices */ MatcherIndicesIndex(103),
},
{
/* [83] */
@@ -1526,22 +1529,22 @@
{
/* [85] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(120),
+ /* matcher_indices */ MatcherIndicesIndex(123),
},
{
/* [86] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [87] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(100),
+ /* matcher_indices */ MatcherIndicesIndex(103),
},
{
/* [88] */
/* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(141),
+ /* matcher_indices */ MatcherIndicesIndex(144),
},
{
/* [89] */
@@ -1551,22 +1554,22 @@
{
/* [90] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(124),
+ /* matcher_indices */ MatcherIndicesIndex(127),
},
{
/* [91] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [92] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(106),
+ /* matcher_indices */ MatcherIndicesIndex(109),
},
{
/* [93] */
/* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(141),
+ /* matcher_indices */ MatcherIndicesIndex(144),
},
{
/* [94] */
@@ -1576,17 +1579,17 @@
{
/* [95] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(128),
+ /* matcher_indices */ MatcherIndicesIndex(131),
},
{
/* [96] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [97] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(106),
+ /* matcher_indices */ MatcherIndicesIndex(109),
},
{
/* [98] */
@@ -1596,27 +1599,27 @@
{
/* [99] */
/* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(141),
+ /* matcher_indices */ MatcherIndicesIndex(144),
},
{
/* [100] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(134),
+ /* matcher_indices */ MatcherIndicesIndex(137),
},
{
/* [101] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [102] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(100),
+ /* matcher_indices */ MatcherIndicesIndex(103),
},
{
/* [103] */
/* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(141),
+ /* matcher_indices */ MatcherIndicesIndex(144),
},
{
/* [104] */
@@ -1626,17 +1629,17 @@
{
/* [105] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(137),
+ /* matcher_indices */ MatcherIndicesIndex(140),
},
{
/* [106] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [107] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(106),
+ /* matcher_indices */ MatcherIndicesIndex(109),
},
{
/* [108] */
@@ -1646,27 +1649,27 @@
{
/* [109] */
/* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(141),
+ /* matcher_indices */ MatcherIndicesIndex(144),
},
{
/* [110] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(120),
+ /* matcher_indices */ MatcherIndicesIndex(123),
},
{
/* [111] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [112] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(100),
+ /* matcher_indices */ MatcherIndicesIndex(103),
},
{
/* [113] */
/* usage */ core::ParameterUsage::kBias,
- /* matcher_indices */ MatcherIndicesIndex(142),
+ /* matcher_indices */ MatcherIndicesIndex(145),
},
{
/* [114] */
@@ -1676,22 +1679,22 @@
{
/* [115] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(124),
+ /* matcher_indices */ MatcherIndicesIndex(127),
},
{
/* [116] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [117] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(106),
+ /* matcher_indices */ MatcherIndicesIndex(109),
},
{
/* [118] */
/* usage */ core::ParameterUsage::kBias,
- /* matcher_indices */ MatcherIndicesIndex(142),
+ /* matcher_indices */ MatcherIndicesIndex(145),
},
{
/* [119] */
@@ -1701,17 +1704,17 @@
{
/* [120] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(128),
+ /* matcher_indices */ MatcherIndicesIndex(131),
},
{
/* [121] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [122] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(106),
+ /* matcher_indices */ MatcherIndicesIndex(109),
},
{
/* [123] */
@@ -1721,27 +1724,27 @@
{
/* [124] */
/* usage */ core::ParameterUsage::kBias,
- /* matcher_indices */ MatcherIndicesIndex(142),
+ /* matcher_indices */ MatcherIndicesIndex(145),
},
{
/* [125] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(120),
+ /* matcher_indices */ MatcherIndicesIndex(123),
},
{
/* [126] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [127] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(100),
+ /* matcher_indices */ MatcherIndicesIndex(103),
},
{
/* [128] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(143),
+ /* matcher_indices */ MatcherIndicesIndex(146),
},
{
/* [129] */
@@ -1751,22 +1754,22 @@
{
/* [130] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(124),
+ /* matcher_indices */ MatcherIndicesIndex(127),
},
{
/* [131] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [132] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(106),
+ /* matcher_indices */ MatcherIndicesIndex(109),
},
{
/* [133] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(144),
+ /* matcher_indices */ MatcherIndicesIndex(147),
},
{
/* [134] */
@@ -1776,17 +1779,17 @@
{
/* [135] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(128),
+ /* matcher_indices */ MatcherIndicesIndex(131),
},
{
/* [136] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [137] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(106),
+ /* matcher_indices */ MatcherIndicesIndex(109),
},
{
/* [138] */
@@ -1796,22 +1799,22 @@
{
/* [139] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(145),
+ /* matcher_indices */ MatcherIndicesIndex(148),
},
{
/* [140] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(136),
+ /* matcher_indices */ MatcherIndicesIndex(139),
},
{
/* [141] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(138),
+ /* matcher_indices */ MatcherIndicesIndex(141),
},
{
/* [142] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(106),
+ /* matcher_indices */ MatcherIndicesIndex(109),
},
{
/* [143] */
@@ -1821,22 +1824,22 @@
{
/* [144] */
/* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(141),
+ /* matcher_indices */ MatcherIndicesIndex(144),
},
{
/* [145] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(104),
+ /* matcher_indices */ MatcherIndicesIndex(107),
},
{
/* [146] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [147] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(106),
+ /* matcher_indices */ MatcherIndicesIndex(109),
},
{
/* [148] */
@@ -1846,17 +1849,17 @@
{
/* [149] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(134),
+ /* matcher_indices */ MatcherIndicesIndex(137),
},
{
/* [150] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [151] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(100),
+ /* matcher_indices */ MatcherIndicesIndex(103),
},
{
/* [152] */
@@ -1866,7 +1869,7 @@
{
/* [153] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(102),
+ /* matcher_indices */ MatcherIndicesIndex(105),
},
{
/* [154] */
@@ -1881,12 +1884,12 @@
{
/* [156] */
/* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(140),
+ /* matcher_indices */ MatcherIndicesIndex(143),
},
{
/* [157] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(135),
+ /* matcher_indices */ MatcherIndicesIndex(138),
},
{
/* [158] */
@@ -1906,17 +1909,17 @@
{
/* [161] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(120),
+ /* matcher_indices */ MatcherIndicesIndex(123),
},
{
/* [162] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [163] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(100),
+ /* matcher_indices */ MatcherIndicesIndex(103),
},
{
/* [164] */
@@ -1926,17 +1929,17 @@
{
/* [165] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(124),
+ /* matcher_indices */ MatcherIndicesIndex(127),
},
{
/* [166] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [167] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(106),
+ /* matcher_indices */ MatcherIndicesIndex(109),
},
{
/* [168] */
@@ -1946,82 +1949,82 @@
{
/* [169] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(126),
+ /* matcher_indices */ MatcherIndicesIndex(129),
},
{
/* [170] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [171] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(106),
+ /* matcher_indices */ MatcherIndicesIndex(109),
},
{
/* [172] */
/* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(141),
+ /* matcher_indices */ MatcherIndicesIndex(144),
},
{
/* [173] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(136),
+ /* matcher_indices */ MatcherIndicesIndex(139),
},
{
/* [174] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [175] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(106),
+ /* matcher_indices */ MatcherIndicesIndex(109),
},
{
/* [176] */
/* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(141),
+ /* matcher_indices */ MatcherIndicesIndex(144),
},
{
/* [177] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(126),
+ /* matcher_indices */ MatcherIndicesIndex(129),
},
{
/* [178] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [179] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(106),
+ /* matcher_indices */ MatcherIndicesIndex(109),
},
{
/* [180] */
/* usage */ core::ParameterUsage::kBias,
- /* matcher_indices */ MatcherIndicesIndex(142),
+ /* matcher_indices */ MatcherIndicesIndex(145),
},
{
/* [181] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(126),
+ /* matcher_indices */ MatcherIndicesIndex(129),
},
{
/* [182] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [183] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(106),
+ /* matcher_indices */ MatcherIndicesIndex(109),
},
{
/* [184] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(145),
+ /* matcher_indices */ MatcherIndicesIndex(148),
},
{
/* [185] */
@@ -2031,7 +2034,7 @@
{
/* [186] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(110),
+ /* matcher_indices */ MatcherIndicesIndex(113),
},
{
/* [187] */
@@ -2101,7 +2104,7 @@
{
/* [200] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(98),
+ /* matcher_indices */ MatcherIndicesIndex(101),
},
{
/* [201] */
@@ -2116,7 +2119,7 @@
{
/* [203] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(114),
+ /* matcher_indices */ MatcherIndicesIndex(117),
},
{
/* [204] */
@@ -2131,7 +2134,7 @@
{
/* [206] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(116),
+ /* matcher_indices */ MatcherIndicesIndex(119),
},
{
/* [207] */
@@ -2146,7 +2149,7 @@
{
/* [209] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(134),
+ /* matcher_indices */ MatcherIndicesIndex(137),
},
{
/* [210] */
@@ -2161,7 +2164,7 @@
{
/* [212] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(139),
+ /* matcher_indices */ MatcherIndicesIndex(142),
},
{
/* [213] */
@@ -2221,12 +2224,12 @@
{
/* [224] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(118),
+ /* matcher_indices */ MatcherIndicesIndex(121),
},
{
/* [225] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(133),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [226] */
@@ -2241,7 +2244,7 @@
{
/* [228] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(110),
+ /* matcher_indices */ MatcherIndicesIndex(113),
},
{
/* [229] */
@@ -2256,7 +2259,7 @@
{
/* [231] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(110),
+ /* matcher_indices */ MatcherIndicesIndex(113),
},
{
/* [232] */
@@ -2271,7 +2274,7 @@
{
/* [234] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(110),
+ /* matcher_indices */ MatcherIndicesIndex(113),
},
{
/* [235] */
@@ -2381,7 +2384,7 @@
{
/* [256] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(98),
+ /* matcher_indices */ MatcherIndicesIndex(101),
},
{
/* [257] */
@@ -2391,7 +2394,7 @@
{
/* [258] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(102),
+ /* matcher_indices */ MatcherIndicesIndex(105),
},
{
/* [259] */
@@ -2401,7 +2404,7 @@
{
/* [260] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(114),
+ /* matcher_indices */ MatcherIndicesIndex(117),
},
{
/* [261] */
@@ -2411,7 +2414,7 @@
{
/* [262] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(104),
+ /* matcher_indices */ MatcherIndicesIndex(107),
},
{
/* [263] */
@@ -2421,7 +2424,7 @@
{
/* [264] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(108),
+ /* matcher_indices */ MatcherIndicesIndex(111),
},
{
/* [265] */
@@ -2431,7 +2434,7 @@
{
/* [266] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(134),
+ /* matcher_indices */ MatcherIndicesIndex(137),
},
{
/* [267] */
@@ -2441,7 +2444,7 @@
{
/* [268] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(135),
+ /* matcher_indices */ MatcherIndicesIndex(138),
},
{
/* [269] */
@@ -2451,7 +2454,7 @@
{
/* [270] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(136),
+ /* matcher_indices */ MatcherIndicesIndex(139),
},
{
/* [271] */
@@ -2461,7 +2464,7 @@
{
/* [272] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(137),
+ /* matcher_indices */ MatcherIndicesIndex(140),
},
{
/* [273] */
@@ -2501,7 +2504,7 @@
{
/* [280] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(112),
+ /* matcher_indices */ MatcherIndicesIndex(115),
},
{
/* [281] */
@@ -2611,7 +2614,7 @@
{
/* [302] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(3),
+ /* matcher_indices */ MatcherIndicesIndex(96),
},
{
/* [303] */
@@ -2620,6 +2623,16 @@
},
{
/* [304] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(3),
+ },
+ {
+ /* [305] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(23),
+ },
+ {
+ /* [306] */
/* usage */ core::ParameterUsage::kTexture,
/* matcher_indices */ MatcherIndicesIndex(9),
},
@@ -2632,31 +2645,31 @@
{
/* [0] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(132),
+ /* matcher_indices */ MatcherIndicesIndex(135),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [1] */
/* name */ "A",
- /* matcher_indices */ MatcherIndicesIndex(130),
+ /* matcher_indices */ MatcherIndicesIndex(133),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [2] */
/* name */ "L",
- /* matcher_indices */ MatcherIndicesIndex(130),
+ /* matcher_indices */ MatcherIndicesIndex(133),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [3] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(130),
+ /* matcher_indices */ MatcherIndicesIndex(133),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [4] */
/* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(131),
+ /* matcher_indices */ MatcherIndicesIndex(134),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
@@ -2674,25 +2687,25 @@
{
/* [7] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(132),
+ /* matcher_indices */ MatcherIndicesIndex(135),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [8] */
/* name */ "L",
- /* matcher_indices */ MatcherIndicesIndex(130),
+ /* matcher_indices */ MatcherIndicesIndex(133),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [9] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(132),
+ /* matcher_indices */ MatcherIndicesIndex(135),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [10] */
/* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(130),
+ /* matcher_indices */ MatcherIndicesIndex(133),
/* kind */ TemplateInfo::Kind::kType,
},
{
@@ -2704,7 +2717,7 @@
{
/* [12] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(146),
+ /* matcher_indices */ MatcherIndicesIndex(149),
/* kind */ TemplateInfo::Kind::kType,
},
};
@@ -2721,7 +2734,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(224),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2732,7 +2745,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(85),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2743,7 +2756,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(161),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2754,7 +2767,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(19),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2765,7 +2778,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(80),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2776,7 +2789,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(90),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2787,7 +2800,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(165),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2798,7 +2811,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(169),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2809,7 +2822,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(95),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2886,7 +2899,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(85),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2897,7 +2910,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(85),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2908,7 +2921,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(19),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2919,7 +2932,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(19),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2930,7 +2943,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(90),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2941,7 +2954,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(90),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2952,7 +2965,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(169),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -2963,7 +2976,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(95),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3040,7 +3053,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(110),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3051,7 +3064,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(110),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3062,7 +3075,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(31),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3073,7 +3086,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(31),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3084,7 +3097,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(115),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3095,7 +3108,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(115),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3106,7 +3119,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(177),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3117,7 +3130,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(120),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3128,7 +3141,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(125),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3139,7 +3152,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(125),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3150,7 +3163,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(37),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3161,7 +3174,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(37),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3172,7 +3185,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(130),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3183,7 +3196,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(130),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3194,7 +3207,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(181),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3205,7 +3218,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(135),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3216,7 +3229,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(0),
/* parameters */ ParameterIndex(280),
- /* return_matcher_indices */ MatcherIndicesIndex(96),
+ /* return_matcher_indices */ MatcherIndicesIndex(99),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3227,7 +3240,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(7),
/* parameters */ ParameterIndex(200),
- /* return_matcher_indices */ MatcherIndicesIndex(96),
+ /* return_matcher_indices */ MatcherIndicesIndex(99),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3238,7 +3251,7 @@
/* num_templates */ 3,
/* templates */ TemplateIndex(0),
/* parameters */ ParameterIndex(153),
- /* return_matcher_indices */ MatcherIndicesIndex(96),
+ /* return_matcher_indices */ MatcherIndicesIndex(99),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3249,7 +3262,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(7),
/* parameters */ ParameterIndex(203),
- /* return_matcher_indices */ MatcherIndicesIndex(96),
+ /* return_matcher_indices */ MatcherIndicesIndex(99),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3260,7 +3273,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(9),
/* parameters */ ParameterIndex(206),
- /* return_matcher_indices */ MatcherIndicesIndex(96),
+ /* return_matcher_indices */ MatcherIndicesIndex(99),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3304,7 +3317,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(282),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3315,7 +3328,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(284),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3326,7 +3339,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(215),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3337,7 +3350,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(286),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -3567,7 +3580,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(5),
- /* parameters */ ParameterIndex(304),
+ /* parameters */ ParameterIndex(306),
/* return_matcher_indices */ MatcherIndicesIndex(59),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -4140,7 +4153,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(0),
/* parameters */ ParameterIndex(60),
- /* return_matcher_indices */ MatcherIndicesIndex(96),
+ /* return_matcher_indices */ MatcherIndicesIndex(99),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4151,7 +4164,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(0),
/* parameters */ ParameterIndex(7),
- /* return_matcher_indices */ MatcherIndicesIndex(96),
+ /* return_matcher_indices */ MatcherIndicesIndex(99),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4162,7 +4175,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(0),
/* parameters */ ParameterIndex(145),
- /* return_matcher_indices */ MatcherIndicesIndex(96),
+ /* return_matcher_indices */ MatcherIndicesIndex(99),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4173,7 +4186,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(0),
/* parameters */ ParameterIndex(65),
- /* return_matcher_indices */ MatcherIndicesIndex(96),
+ /* return_matcher_indices */ MatcherIndicesIndex(99),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4184,7 +4197,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(149),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4195,7 +4208,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(70),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4206,7 +4219,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(173),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4217,7 +4230,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(105),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4228,7 +4241,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(43),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4239,7 +4252,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(75),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4250,7 +4263,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(0),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4261,7 +4274,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(13),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4272,7 +4285,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(140),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4283,7 +4296,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(49),
- /* return_matcher_indices */ MatcherIndicesIndex(110),
+ /* return_matcher_indices */ MatcherIndicesIndex(113),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4348,7 +4361,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 2,
/* templates */ TemplateIndex(5),
- /* parameters */ ParameterIndex(304),
+ /* parameters */ ParameterIndex(306),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -4436,7 +4449,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(12),
- /* parameters */ ParameterIndex(302),
+ /* parameters */ ParameterIndex(303),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -4454,6 +4467,28 @@
{
/* [158] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 2,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 1,
+ /* templates */ TemplateIndex(12),
+ /* parameters */ ParameterIndex(304),
+ /* return_matcher_indices */ MatcherIndicesIndex(3),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [159] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num_parameters */ 2,
+ /* num_explicit_templates */ 0,
+ /* num_templates */ 2,
+ /* templates */ TemplateIndex(11),
+ /* parameters */ ParameterIndex(301),
+ /* return_matcher_indices */ MatcherIndicesIndex(93),
+ /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
+ },
+ {
+ /* [160] */
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
@@ -4463,7 +4498,7 @@
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [159] */
+ /* [161] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
@@ -4474,7 +4509,7 @@
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [160] */
+ /* [162] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
@@ -4485,7 +4520,7 @@
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [161] */
+ /* [163] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
@@ -4496,7 +4531,7 @@
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [162] */
+ /* [164] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
@@ -4507,7 +4542,7 @@
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [163] */
+ /* [165] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
@@ -4518,7 +4553,7 @@
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [164] */
+ /* [166] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
@@ -4529,7 +4564,7 @@
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [165] */
+ /* [167] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
@@ -4540,7 +4575,7 @@
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
- /* [166] */
+ /* [168] */
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
@@ -4560,67 +4595,67 @@
/* [0] */
/* fn atomic_compare_exchange_weak_explicit[T : iu32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, ptr<function, T, read_write>, T, u32, u32) -> bool */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(160),
+ /* overloads */ OverloadIndex(162),
},
{
/* [1] */
/* fn atomic_exchange_explicit[T : iu32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, T, u32) -> T */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(161),
+ /* overloads */ OverloadIndex(163),
},
{
/* [2] */
/* fn atomic_fetch_add_explicit[T : iu32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, T, u32) -> T */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(161),
+ /* overloads */ OverloadIndex(163),
},
{
/* [3] */
/* fn atomic_fetch_and_explicit[T : iu32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, T, u32) -> T */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(161),
+ /* overloads */ OverloadIndex(163),
},
{
/* [4] */
/* fn atomic_fetch_max_explicit[T : iu32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, T, u32) -> T */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(161),
+ /* overloads */ OverloadIndex(163),
},
{
/* [5] */
/* fn atomic_fetch_min_explicit[T : iu32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, T, u32) -> T */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(161),
+ /* overloads */ OverloadIndex(163),
},
{
/* [6] */
/* fn atomic_fetch_or_explicit[T : iu32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, T, u32) -> T */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(161),
+ /* overloads */ OverloadIndex(163),
},
{
/* [7] */
/* fn atomic_fetch_sub_explicit[T : iu32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, T, u32) -> T */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(161),
+ /* overloads */ OverloadIndex(163),
},
{
/* [8] */
/* fn atomic_fetch_xor_explicit[T : iu32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, T, u32) -> T */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(161),
+ /* overloads */ OverloadIndex(163),
},
{
/* [9] */
/* fn atomic_load_explicit[T : iu32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, u32) -> T */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(162),
+ /* overloads */ OverloadIndex(164),
},
{
/* [10] */
/* fn atomic_store_explicit[T : iu32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, T, u32) */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(163),
+ /* overloads */ OverloadIndex(165),
},
{
/* [11] */
@@ -4847,13 +4882,13 @@
/* [24] */
/* fn distance[N : num, T : f32_f16](vec<N, T>, vec<N, T>) -> T */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(164),
+ /* overloads */ OverloadIndex(166),
},
{
/* [25] */
/* fn dot[N : num, T : f32_f16](vec<N, T>, vec<N, T>) -> T */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(164),
+ /* overloads */ OverloadIndex(166),
},
{
/* [26] */
@@ -4864,29 +4899,36 @@
},
{
/* [27] */
- /* fn length[N : num, T : f32_f16](vec<N, T>) -> T */
- /* num overloads */ 1,
- /* overloads */ OverloadIndex(165),
+ /* fn frexp[T : f32_f16](T, i32) -> T */
+ /* fn frexp[N : num, T : f32_f16](vec<N, T>, vec<N, i32>) -> vec<N, T> */
+ /* num overloads */ 2,
+ /* overloads */ OverloadIndex(158),
},
{
/* [28] */
+ /* fn length[N : num, T : f32_f16](vec<N, T>) -> T */
+ /* num overloads */ 1,
+ /* overloads */ OverloadIndex(167),
+ },
+ {
+ /* [29] */
/* fn modf[T : f32_f16](T, T) -> T */
/* fn modf[N : num, T : f32_f16](vec<N, T>, vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
/* overloads */ OverloadIndex(156),
},
{
- /* [29] */
+ /* [30] */
/* fn sign[T : f32_f16](T) -> T */
/* fn sign[N : num, T : f32_f16](vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ OverloadIndex(158),
+ /* overloads */ OverloadIndex(160),
},
{
- /* [30] */
+ /* [31] */
/* fn threadgroup_barrier(u32) */
/* num overloads */ 1,
- /* overloads */ OverloadIndex(166),
+ /* overloads */ OverloadIndex(168),
},
};
diff --git a/src/tint/lang/msl/msl.def b/src/tint/lang/msl/msl.def
index d2e8264..b32c8c4 100644
--- a/src/tint/lang/msl/msl.def
+++ b/src/tint/lang/msl/msl.def
@@ -325,6 +325,8 @@
fn dot[N: num, T: f32_f16](vec<N, T>, vec<N, T>) -> T
fn fmod[T: f32_f16](T, T) -> T
fn fmod[N: num, T: f32_f16](vec<N, T>, vec<N, T>) -> vec<N, T>
+fn frexp[T: f32_f16](T, i32) -> T
+fn frexp[N: num, T: f32_f16](vec<N, T>, vec<N, i32>) -> vec<N, T>
fn length[N: num, T: f32_f16](vec<N, T>) -> T
fn modf[T: f32_f16](T, T) -> T
fn modf[N: num, T: f32_f16](vec<N, T>, vec<N, T>) -> vec<N, T>
diff --git a/src/tint/lang/msl/writer/raise/builtin_polyfill.cc b/src/tint/lang/msl/writer/raise/builtin_polyfill.cc
index 0b7ce2b..bfc1696 100644
--- a/src/tint/lang/msl/writer/raise/builtin_polyfill.cc
+++ b/src/tint/lang/msl/writer/raise/builtin_polyfill.cc
@@ -99,6 +99,7 @@
case core::BuiltinFn::kAtomicXor:
case core::BuiltinFn::kDistance:
case core::BuiltinFn::kDot:
+ case core::BuiltinFn::kFrexp:
case core::BuiltinFn::kLength:
case core::BuiltinFn::kModf:
case core::BuiltinFn::kQuantizeToF16:
@@ -179,6 +180,9 @@
case core::BuiltinFn::kDot:
Dot(builtin);
break;
+ case core::BuiltinFn::kFrexp:
+ Frexp(builtin);
+ break;
case core::BuiltinFn::kLength:
Length(builtin);
break;
@@ -374,6 +378,34 @@
builtin->Destroy();
}
+ /// Polyfill a frexp call.
+ /// @param builtin the builtin call instruction
+ void Frexp(core::ir::CoreBuiltinCall* builtin) {
+ b.InsertBefore(builtin, [&] {
+ // MSL's frexp returns `fract` and outputs `exp` 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);
+ //
+ // Note: We need to use a `load` instruction to pass `result.exp`, as the intrinsic
+ // definition expects a value type (as we do not have reference types in the IR). The
+ // printer will just fold away the load, which achieves the pass-by-reference semantics
+ // that we want.
+ //
+ auto* result_type = builtin->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>{builtin->Args()[0], b.Load(exp)->Result(0)};
+ auto* call =
+ b.Call<msl::ir::BuiltinCall>(float_type, msl::BuiltinFn::kFrexp, std::move(args));
+ b.Store(b.Access(ty.ptr(function, float_type), result, u32(0)), call);
+ builtin->Result(0)->ReplaceAllUsesWith(b.Load(result)->Result(0));
+ });
+ builtin->Destroy();
+ }
+
/// Polyfill a length call if necessary.
/// @param builtin the builtin call instruction
void Length(core::ir::CoreBuiltinCall* builtin) {
diff --git a/src/tint/lang/msl/writer/raise/builtin_polyfill_test.cc b/src/tint/lang/msl/writer/raise/builtin_polyfill_test.cc
index 6537676..fcde816 100644
--- a/src/tint/lang/msl/writer/raise/builtin_polyfill_test.cc
+++ b/src/tint/lang/msl/writer/raise/builtin_polyfill_test.cc
@@ -1022,6 +1022,126 @@
EXPECT_EQ(expect, str());
}
+TEST_F(MslWriter_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:i32 = load %4
+ %6:f32 = msl.frexp %value, %5
+ %7:ptr<function, f32, read_write> = access %3, 0u
+ store %7, %6
+ %8:__frexp_result_f32 = load %3
+ %9:f32 = access %8, 0u
+ %10:i32 = access %8, 1u
+ %11:f32 = convert %10
+ %12:f32 = add %9, %11
+ ret %12
+ }
+}
+)";
+
+ Run(BuiltinPolyfill);
+
+ EXPECT_EQ(expect, str());
+}
+
+TEST_F(MslWriter_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* whole = b.Access<vec4<i32>>(result, 1_u);
+ b.Return(func, b.Add<vec4<f32>>(fract, b.Convert<vec4<f32>>(whole)));
+ });
+
+ 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<i32> = load %4
+ %6:vec4<f32> = msl.frexp %value, %5
+ %7:ptr<function, vec4<f32>, read_write> = access %3, 0u
+ store %7, %6
+ %8:__frexp_result_vec4_f32 = load %3
+ %9:vec4<f32> = access %8, 0u
+ %10:vec4<i32> = access %8, 1u
+ %11:vec4<f32> = convert %10
+ %12:vec4<f32> = add %9, %11
+ ret %12
+ }
+}
+)";
+
+ Run(BuiltinPolyfill);
+
+ EXPECT_EQ(expect, str());
+}
+
TEST_F(MslWriter_BuiltinPolyfillTest, Length_Scalar) {
auto* value = b.FunctionParam<f32>("value");
auto* func = b.Function("foo", ty.f32());
diff --git a/test/tint/builtins/frexp/scalar/mixed.wgsl.expected.ir.msl b/test/tint/builtins/frexp/scalar/mixed.wgsl.expected.ir.msl
index 800a5ce..0b3019f 100644
--- a/test/tint/builtins/frexp/scalar/mixed.wgsl.expected.ir.msl
+++ b/test/tint/builtins/frexp/scalar/mixed.wgsl.expected.ir.msl
@@ -1,9 +1,18 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
-../../src/tint/lang/msl/writer/printer/printer.cc:989 internal compiler error: TINT_UNREACHABLE unhandled: frexp
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct frexp_result_f32 {
+ float fract;
+ int exp;
+};
+
+kernel void tint_symbol() {
+ float const runtime_in = 1.25f;
+ frexp_result_f32 res = frexp_result_f32{.fract=0.625f, .exp=1};
+ frexp_result_f32 v = {};
+ v.fract = frexp(runtime_in, v.exp);
+ res = v;
+ res = frexp_result_f32{.fract=0.625f, .exp=1};
+ float const fract = res.fract;
+ int const exp = res.exp;
+}
diff --git a/test/tint/builtins/frexp/scalar/runtime.wgsl.expected.ir.msl b/test/tint/builtins/frexp/scalar/runtime.wgsl.expected.ir.msl
index 800a5ce..4dfce7e 100644
--- a/test/tint/builtins/frexp/scalar/runtime.wgsl.expected.ir.msl
+++ b/test/tint/builtins/frexp/scalar/runtime.wgsl.expected.ir.msl
@@ -1,9 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
-../../src/tint/lang/msl/writer/printer/printer.cc:989 internal compiler error: TINT_UNREACHABLE unhandled: frexp
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct frexp_result_f32 {
+ float fract;
+ int exp;
+};
+
+kernel void tint_symbol() {
+ float const in = 1.25f;
+ frexp_result_f32 v = {};
+ v.fract = frexp(in, v.exp);
+ frexp_result_f32 const res = v;
+ float const fract = res.fract;
+ int const exp = res.exp;
+}
diff --git a/test/tint/builtins/frexp/vector/mixed.wgsl.expected.ir.msl b/test/tint/builtins/frexp/vector/mixed.wgsl.expected.ir.msl
index 800a5ce..6cef24c 100644
--- a/test/tint/builtins/frexp/vector/mixed.wgsl.expected.ir.msl
+++ b/test/tint/builtins/frexp/vector/mixed.wgsl.expected.ir.msl
@@ -1,9 +1,18 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
-../../src/tint/lang/msl/writer/printer/printer.cc:989 internal compiler error: TINT_UNREACHABLE unhandled: frexp
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct frexp_result_vec2_f32 {
+ float2 fract;
+ int2 exp;
+};
+
+kernel void tint_symbol() {
+ float2 const runtime_in = float2(1.25f, 3.75f);
+ frexp_result_vec2_f32 res = frexp_result_vec2_f32{.fract=float2(0.625f, 0.9375f), .exp=int2(1, 2)};
+ frexp_result_vec2_f32 v = {};
+ v.fract = frexp(runtime_in, v.exp);
+ res = v;
+ res = frexp_result_vec2_f32{.fract=float2(0.625f, 0.9375f), .exp=int2(1, 2)};
+ float2 const fract = res.fract;
+ int2 const exp = res.exp;
+}
diff --git a/test/tint/builtins/frexp/vector/runtime.wgsl.expected.ir.msl b/test/tint/builtins/frexp/vector/runtime.wgsl.expected.ir.msl
index 800a5ce..4d27fb0 100644
--- a/test/tint/builtins/frexp/vector/runtime.wgsl.expected.ir.msl
+++ b/test/tint/builtins/frexp/vector/runtime.wgsl.expected.ir.msl
@@ -1,9 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
-../../src/tint/lang/msl/writer/printer/printer.cc:989 internal compiler error: TINT_UNREACHABLE unhandled: frexp
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct frexp_result_vec2_f32 {
+ float2 fract;
+ int2 exp;
+};
+
+kernel void tint_symbol() {
+ float2 const in = float2(1.25f, 3.75f);
+ frexp_result_vec2_f32 v = {};
+ v.fract = frexp(in, v.exp);
+ frexp_result_vec2_f32 const res = v;
+ float2 const fract = res.fract;
+ int2 const exp = res.exp;
+}
diff --git a/test/tint/builtins/gen/var/frexp/3dd21e.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/frexp/3dd21e.wgsl.expected.ir.msl
index 800a5ce..1de1849 100644
--- a/test/tint/builtins/gen/var/frexp/3dd21e.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/frexp/3dd21e.wgsl.expected.ir.msl
@@ -1,9 +1,41 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
-../../src/tint/lang/msl/writer/printer/printer.cc:989 internal compiler error: TINT_UNREACHABLE unhandled: frexp
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct frexp_result_vec4_f16 {
+ half4 fract;
+ int4 exp;
+};
+
+struct VertexOutput {
+ float4 pos;
+};
+
+struct vertex_main_outputs {
+ float4 VertexOutput_pos [[position]];
+};
+
+void frexp_3dd21e() {
+ half4 arg_0 = half4(1.0h);
+ frexp_result_vec4_f16 v = {};
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_vec4_f16 res = v;
+}
+
+fragment void fragment_main() {
+ frexp_3dd21e();
+}
+
+kernel void compute_main() {
+ frexp_3dd21e();
+}
+
+VertexOutput vertex_main_inner() {
+ VertexOutput out = {};
+ out.pos = float4(0.0f);
+ frexp_3dd21e();
+ return out;
+}
+
+vertex vertex_main_outputs vertex_main() {
+ return vertex_main_outputs{.VertexOutput_pos=vertex_main_inner().pos};
+}
diff --git a/test/tint/builtins/gen/var/frexp/4b2200.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/frexp/4b2200.wgsl.expected.ir.msl
index 800a5ce..2539ca5 100644
--- a/test/tint/builtins/gen/var/frexp/4b2200.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/frexp/4b2200.wgsl.expected.ir.msl
@@ -1,9 +1,41 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
-../../src/tint/lang/msl/writer/printer/printer.cc:989 internal compiler error: TINT_UNREACHABLE unhandled: frexp
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct frexp_result_f32 {
+ float fract;
+ int exp;
+};
+
+struct VertexOutput {
+ float4 pos;
+};
+
+struct vertex_main_outputs {
+ float4 VertexOutput_pos [[position]];
+};
+
+void frexp_4b2200() {
+ float arg_0 = 1.0f;
+ frexp_result_f32 v = {};
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_f32 res = v;
+}
+
+fragment void fragment_main() {
+ frexp_4b2200();
+}
+
+kernel void compute_main() {
+ frexp_4b2200();
+}
+
+VertexOutput vertex_main_inner() {
+ VertexOutput out = {};
+ out.pos = float4(0.0f);
+ frexp_4b2200();
+ return out;
+}
+
+vertex vertex_main_outputs vertex_main() {
+ return vertex_main_outputs{.VertexOutput_pos=vertex_main_inner().pos};
+}
diff --git a/test/tint/builtins/gen/var/frexp/5257dd.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/frexp/5257dd.wgsl.expected.ir.msl
index 800a5ce..7b88b2a 100644
--- a/test/tint/builtins/gen/var/frexp/5257dd.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/frexp/5257dd.wgsl.expected.ir.msl
@@ -1,9 +1,41 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
-../../src/tint/lang/msl/writer/printer/printer.cc:989 internal compiler error: TINT_UNREACHABLE unhandled: frexp
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct frexp_result_f16 {
+ half fract;
+ int exp;
+};
+
+struct VertexOutput {
+ float4 pos;
+};
+
+struct vertex_main_outputs {
+ float4 VertexOutput_pos [[position]];
+};
+
+void frexp_5257dd() {
+ half arg_0 = 1.0h;
+ frexp_result_f16 v = {};
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_f16 res = v;
+}
+
+fragment void fragment_main() {
+ frexp_5257dd();
+}
+
+kernel void compute_main() {
+ frexp_5257dd();
+}
+
+VertexOutput vertex_main_inner() {
+ VertexOutput out = {};
+ out.pos = float4(0.0f);
+ frexp_5257dd();
+ return out;
+}
+
+vertex vertex_main_outputs vertex_main() {
+ return vertex_main_outputs{.VertexOutput_pos=vertex_main_inner().pos};
+}
diff --git a/test/tint/builtins/gen/var/frexp/5f47bf.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/frexp/5f47bf.wgsl.expected.ir.msl
index 800a5ce..06c4ab3 100644
--- a/test/tint/builtins/gen/var/frexp/5f47bf.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/frexp/5f47bf.wgsl.expected.ir.msl
@@ -1,9 +1,41 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
-../../src/tint/lang/msl/writer/printer/printer.cc:989 internal compiler error: TINT_UNREACHABLE unhandled: frexp
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct frexp_result_vec2_f16 {
+ half2 fract;
+ int2 exp;
+};
+
+struct VertexOutput {
+ float4 pos;
+};
+
+struct vertex_main_outputs {
+ float4 VertexOutput_pos [[position]];
+};
+
+void frexp_5f47bf() {
+ half2 arg_0 = half2(1.0h);
+ frexp_result_vec2_f16 v = {};
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_vec2_f16 res = v;
+}
+
+fragment void fragment_main() {
+ frexp_5f47bf();
+}
+
+kernel void compute_main() {
+ frexp_5f47bf();
+}
+
+VertexOutput vertex_main_inner() {
+ VertexOutput out = {};
+ out.pos = float4(0.0f);
+ frexp_5f47bf();
+ return out;
+}
+
+vertex vertex_main_outputs vertex_main() {
+ return vertex_main_outputs{.VertexOutput_pos=vertex_main_inner().pos};
+}
diff --git a/test/tint/builtins/gen/var/frexp/77af93.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/frexp/77af93.wgsl.expected.ir.msl
index 800a5ce..341319a 100644
--- a/test/tint/builtins/gen/var/frexp/77af93.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/frexp/77af93.wgsl.expected.ir.msl
@@ -1,9 +1,41 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
-../../src/tint/lang/msl/writer/printer/printer.cc:989 internal compiler error: TINT_UNREACHABLE unhandled: frexp
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct frexp_result_vec4_f32 {
+ float4 fract;
+ int4 exp;
+};
+
+struct VertexOutput {
+ float4 pos;
+};
+
+struct vertex_main_outputs {
+ float4 VertexOutput_pos [[position]];
+};
+
+void frexp_77af93() {
+ float4 arg_0 = float4(1.0f);
+ frexp_result_vec4_f32 v = {};
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_vec4_f32 res = v;
+}
+
+fragment void fragment_main() {
+ frexp_77af93();
+}
+
+kernel void compute_main() {
+ frexp_77af93();
+}
+
+VertexOutput vertex_main_inner() {
+ VertexOutput out = {};
+ out.pos = float4(0.0f);
+ frexp_77af93();
+ return out;
+}
+
+vertex vertex_main_outputs vertex_main() {
+ return vertex_main_outputs{.VertexOutput_pos=vertex_main_inner().pos};
+}
diff --git a/test/tint/builtins/gen/var/frexp/979800.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/frexp/979800.wgsl.expected.ir.msl
index 800a5ce..450bcea 100644
--- a/test/tint/builtins/gen/var/frexp/979800.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/frexp/979800.wgsl.expected.ir.msl
@@ -1,9 +1,41 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
-../../src/tint/lang/msl/writer/printer/printer.cc:989 internal compiler error: TINT_UNREACHABLE unhandled: frexp
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct frexp_result_vec3_f32 {
+ float3 fract;
+ int3 exp;
+};
+
+struct VertexOutput {
+ float4 pos;
+};
+
+struct vertex_main_outputs {
+ float4 VertexOutput_pos [[position]];
+};
+
+void frexp_979800() {
+ float3 arg_0 = float3(1.0f);
+ frexp_result_vec3_f32 v = {};
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_vec3_f32 res = v;
+}
+
+fragment void fragment_main() {
+ frexp_979800();
+}
+
+kernel void compute_main() {
+ frexp_979800();
+}
+
+VertexOutput vertex_main_inner() {
+ VertexOutput out = {};
+ out.pos = float4(0.0f);
+ frexp_979800();
+ return out;
+}
+
+vertex vertex_main_outputs vertex_main() {
+ return vertex_main_outputs{.VertexOutput_pos=vertex_main_inner().pos};
+}
diff --git a/test/tint/builtins/gen/var/frexp/ae4a66.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/frexp/ae4a66.wgsl.expected.ir.msl
index 800a5ce..97bdf26 100644
--- a/test/tint/builtins/gen/var/frexp/ae4a66.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/frexp/ae4a66.wgsl.expected.ir.msl
@@ -1,9 +1,41 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
-../../src/tint/lang/msl/writer/printer/printer.cc:989 internal compiler error: TINT_UNREACHABLE unhandled: frexp
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct frexp_result_vec3_f16 {
+ half3 fract;
+ int3 exp;
+};
+
+struct VertexOutput {
+ float4 pos;
+};
+
+struct vertex_main_outputs {
+ float4 VertexOutput_pos [[position]];
+};
+
+void frexp_ae4a66() {
+ half3 arg_0 = half3(1.0h);
+ frexp_result_vec3_f16 v = {};
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_vec3_f16 res = v;
+}
+
+fragment void fragment_main() {
+ frexp_ae4a66();
+}
+
+kernel void compute_main() {
+ frexp_ae4a66();
+}
+
+VertexOutput vertex_main_inner() {
+ VertexOutput out = {};
+ out.pos = float4(0.0f);
+ frexp_ae4a66();
+ return out;
+}
+
+vertex vertex_main_outputs vertex_main() {
+ return vertex_main_outputs{.VertexOutput_pos=vertex_main_inner().pos};
+}
diff --git a/test/tint/builtins/gen/var/frexp/eb2421.wgsl.expected.ir.msl b/test/tint/builtins/gen/var/frexp/eb2421.wgsl.expected.ir.msl
index 800a5ce..05ec952 100644
--- a/test/tint/builtins/gen/var/frexp/eb2421.wgsl.expected.ir.msl
+++ b/test/tint/builtins/gen/var/frexp/eb2421.wgsl.expected.ir.msl
@@ -1,9 +1,41 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
-../../src/tint/lang/msl/writer/printer/printer.cc:989 internal compiler error: TINT_UNREACHABLE unhandled: frexp
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
+struct frexp_result_vec2_f32 {
+ float2 fract;
+ int2 exp;
+};
+
+struct VertexOutput {
+ float4 pos;
+};
+
+struct vertex_main_outputs {
+ float4 VertexOutput_pos [[position]];
+};
+
+void frexp_eb2421() {
+ float2 arg_0 = float2(1.0f);
+ frexp_result_vec2_f32 v = {};
+ v.fract = frexp(arg_0, v.exp);
+ frexp_result_vec2_f32 res = v;
+}
+
+fragment void fragment_main() {
+ frexp_eb2421();
+}
+
+kernel void compute_main() {
+ frexp_eb2421();
+}
+
+VertexOutput vertex_main_inner() {
+ VertexOutput out = {};
+ out.pos = float4(0.0f);
+ frexp_eb2421();
+ return out;
+}
+
+vertex vertex_main_outputs vertex_main() {
+ return vertex_main_outputs{.VertexOutput_pos=vertex_main_inner().pos};
+}