blob: 93f6cca4d7b49b3f26924e2ad16e64f071b35743 [file] [log] [blame]
// GENERATED FILE - DO NOT EDIT.
// Generated by gen_builtin_symbols.py using data from builtin_variables.json and
// builtin_function_declarations.txt.
//
// Copyright 2019 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// ImmutableString_ESSL_autogen.cpp: Wrapper for static or pool allocated char arrays, that are
// guaranteed to be valid and unchanged for the duration of the compilation. Implements
// mangledNameHash using perfect hash function from gen_builtin_symbols.py
#include "compiler/translator/ImmutableString.h"
std::ostream &operator<<(std::ostream &os, const sh::ImmutableString &str)
{
return os.write(str.data(), str.length());
}
#if defined(_MSC_VER)
# pragma warning(disable : 4309) // truncation of constant value
#endif
namespace
{
constexpr int mangledkT1[] = {179, 465, 780, 37, 427, 988, 839, 569, 1032, 221,
251, 467, 1589, 703, 528, 1241, 1408, 255, 1521, 1362,
620, 967, 982, 1547, 1602, 1192, 277, 1199, 294, 822,
265, 167, 1299, 1659, 1357, 205, 530};
constexpr int mangledkT2[] = {329, 825, 1399, 348, 282, 1332, 1006, 1217, 826, 518,
1610, 399, 1114, 534, 22, 873, 1193, 1375, 859, 17,
546, 1240, 208, 558, 123, 1357, 861, 60, 341, 939,
181, 1606, 1280, 498, 336, 1172, 198};
constexpr int mangledkG[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 694, 0, 1575, 742,
0, 1479, 0, 0, 0, 0, 0, 0, 0, 562, 0, 724, 0, 0, 0, 0,
1657, 438, 0, 0, 41, 0, 1403, 124, 1031, 0, 377, 0, 986, 0, 0, 42,
565, 1283, 0, 0, 1300, 0, 0, 176, 0, 0, 0, 994, 0, 349, 0, 1423,
0, 0, 342, 0, 0, 0, 0, 1480, 0, 0, 1004, 197, 0, 0, 0, 0,
10, 0, 0, 0, 0, 1528, 0, 0, 1412, 0, 0, 0, 0, 0, 144, 0,
0, 0, 1101, 0, 1489, 0, 0, 0, 1222, 978, 0, 32, 1600, 1093, 931, 0,
953, 622, 0, 0, 0, 0, 258, 0, 0, 0, 361, 0, 880, 0, 1457, 0,
755, 0, 0, 0, 0, 0, 0, 0, 1298, 1484, 24, 0, 633, 0, 714, 489,
0, 523, 0, 555, 1126, 37, 0, 0, 0, 0, 0, 546, 174, 0, 394, 1034,
0, 543, 1629, 375, 0, 593, 0, 0, 0, 0, 0, 0, 0, 1185, 0, 0,
0, 262, 583, 0, 0, 0, 1651, 0, 0, 0, 645, 0, 271, 0, 587, 0,
1573, 544, 1610, 1546, 0, 0, 693, 1293, 0, 294, 0, 1480, 0, 1663, 0, 1518,
0, 0, 621, 0, 1507, 480, 698, 34, 1263, 43, 766, 869, 859, 0, 0, 182,
0, 1418, 545, 146, 0, 0, 0, 0, 598, 0, 0, 1624, 0, 325, 0, 0,
530, 1257, 556, 778, 1608, 0, 54, 0, 0, 0, 1102, 0, 539, 0, 1578, 0,
0, 51, 0, 0, 491, 375, 1226, 0, 0, 924, 0, 0, 0, 0, 1460, 718,
0, 0, 0, 1479, 1633, 0, 0, 1114, 1346, 164, 0, 171, 0, 0, 0, 732,
0, 0, 0, 167, 0, 0, 534, 196, 1160, 0, 0, 1186, 0, 972, 403, 403,
267, 0, 784, 1230, 0, 1273, 0, 561, 0, 0, 0, 390, 0, 541, 1178, 241,
136, 241, 1021, 0, 317, 0, 357, 151, 329, 0, 37, 0, 1060, 0, 103, 0,
0, 312, 0, 0, 0, 0, 0, 0, 0, 596, 0, 0, 0, 794, 0, 836,
0, 907, 81, 1158, 742, 0, 173, 0, 0, 0, 0, 0, 0, 84, 907, 580,
0, 0, 0, 462, 0, 25, 687, 0, 0, 373, 0, 0, 0, 0, 0, 1118,
416, 372, 1124, 527, 0, 0, 670, 493, 954, 1173, 0, 0, 0, 1045, 0, 0,
0, 155, 0, 899, 0, 0, 37, 915, 190, 1622, 1262, 683, 666, 0, 63, 32,
934, 1018, 1081, 0, 0, 603, 368, 0, 169, 1264, 1549, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1408, 0, 522, 775, 0, 0, 949, 224, 1516, 1094, 1199, 645,
0, 37, 1614, 0, 452, 0, 0, 0, 0, 0, 0, 0, 183, 907, 1266, 1304,
528, 0, 393, 0, 0, 0, 0, 839, 813, 0, 1032, 0, 0, 1628, 1056, 0,
0, 0, 365, 0, 291, 1581, 0, 588, 0, 0, 1071, 821, 0, 0, 127, 81,
0, 0, 0, 0, 1591, 0, 1388, 1570, 1292, 0, 57, 0, 330, 1620, 0, 1240,
155, 0, 608, 0, 0, 0, 0, 493, 0, 0, 0, 193, 745, 827, 636, 0,
0, 0, 661, 0, 0, 661, 585, 1587, 0, 0, 1562, 0, 0, 651, 0, 1394,
0, 320, 0, 1636, 998, 1285, 901, 1593, 0, 0, 0, 0, 0, 0, 262, 1207,
0, 0, 1663, 1396, 26, 928, 0, 842, 1464, 1271, 648, 0, 934, 856, 0, 418,
1036, 0, 0, 22, 641, 0, 0, 0, 1181, 174, 1443, 0, 1343, 0, 472, 367,
134, 0, 1098, 122, 0, 0, 0, 0, 152, 832, 509, 927, 0, 0, 0, 0,
1284, 0, 0, 0, 0, 0, 1031, 227, 1149, 635, 898, 1026, 7, 723, 232, 282,
0, 1091, 0, 0, 776, 473, 0, 0, 383, 1098, 466, 0, 0, 407, 82, 518,
0, 630, 0, 0, 0, 629, 459, 528, 1243, 0, 1164, 1485, 320, 563, 0, 0,
382, 1500, 681, 207, 0, 735, 0, 0, 0, 464, 356, 1286, 0, 0, 1048, 1019,
0, 416, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 251, 0, 1594, 81,
1530, 1485, 178, 1282, 18, 463, 0, 0, 195, 1289, 21, 1350, 0, 0, 447, 0,
1429, 1218, 1596, 0, 1538, 1668, 0, 0, 0, 0, 0, 0, 23, 0, 434, 788,
0, 864, 0, 0, 0, 1367, 0, 69, 0, 0, 85, 776, 0, 1229, 1524, 1000,
748, 1593, 1454, 284, 99, 770, 344, 0, 0, 1580, 0, 885, 0, 872, 656, 0,
246, 731, 122, 592, 0, 675, 216, 186, 1125, 794, 209, 204, 444, 0, 0, 810,
254, 1043, 0, 1201, 490, 0, 0, 1566, 0, 0, 0, 0, 0, 824, 0, 279,
141, 0, 0, 0, 767, 0, 645, 0, 0, 637, 0, 398, 0, 1491, 289, 563,
1441, 600, 1526, 0, 0, 0, 0, 1440, 0, 511, 0, 0, 0, 413, 0, 1654,
0, 754, 46, 1485, 461, 0, 889, 887, 1532, 0, 504, 335, 854, 0, 1551, 1434,
0, 226, 1648, 1093, 154, 1249, 0, 1494, 115, 0, 0, 0, 270, 0, 1022, 0,
0, 556, 0, 362, 416, 420, 964, 995, 34, 1590, 198, 236, 0, 0, 192, 0,
694, 0, 273, 0, 0, 0, 0, 0, 0, 193, 0, 0, 883, 364, 294, 0,
0, 642, 0, 202, 0, 0, 572, 635, 0, 0, 980, 704, 0, 1415, 1454, 809,
0, 963, 1384, 825, 1200, 1660, 0, 0, 1123, 1336, 19, 649, 540, 1472, 1615, 1473,
0, 1075, 0, 526, 0, 0, 0, 411, 0, 728, 0, 0, 0, 1080, 206, 467,
760, 0, 0, 0, 362, 397, 755, 0, 0, 0, 251, 376, 1566, 557, 0, 0,
76, 0, 0, 936, 396, 379, 137, 632, 0, 1012, 733, 0, 522, 0, 0, 0,
0, 914, 0, 0, 1291, 0, 123, 641, 369, 724, 775, 0, 663, 348, 846, 1457,
881, 514, 0, 773, 0, 0, 0, 462, 1198, 0, 1242, 0, 0, 0, 573, 922,
0, 70, 1315, 526, 497, 128, 0, 851, 0, 0, 293, 1426, 0, 0, 44, 625,
1062, 0, 0, 241, 0, 0, 1505, 0, 1539, 206, 0, 1352, 0, 0, 0, 1174,
359, 1665, 224, 0, 536, 1582, 586, 0, 697, 249, 0, 0, 99, 1304, 1230, 0,
0, 231, 0, 977, 0, 352, 0, 0, 312, 0, 0, 139, 0, 0, 1523, 930,
0, 1027, 1014, 0, 0, 1599, 1644, 0, 0, 11, 217, 410, 0, 280, 68, 337,
1072, 115, 0, 841, 1210, 333, 0, 1118, 1527, 0, 221, 471, 0, 394, 77, 0,
14, 272, 1226, 1178, 0, 276, 0, 245, 732, 0, 0, 923, 0, 863, 757, 1200,
250, 679, 0, 0, 0, 778, 8, 0, 1640, 861, 224, 0, 475, 38, 1049, 1547,
1439, 854, 0, 1236, 1359, 338, 190, 0, 1387, 130, 1042, 1232, 0, 903, 305, 716,
529, 1177, 1627, 84, 1591, 596, 520, 0, 0, 0, 58, 0, 179, 0, 0, 187,
0, 0, 0, 0, 1056, 1135, 0, 1485, 0, 705, 368, 0, 943, 1303, 804, 399,
487, 0, 1315, 1494, 653, 0, 0, 308, 306, 690, 909, 1004, 1244, 0, 197, 1117,
983, 903, 405, 0, 230, 391, 111, 1398, 0, 853, 148, 469, 517, 0, 616, 594,
407, 787, 4, 938, 0, 0, 1580, 0, 707, 0, 0, 0, 0, 0, 336, 682,
0, 280, 0, 0, 934, 917, 1062, 0, 0, 1476, 246, 141, 0, 1491, 554, 52,
0, 307, 478, 0, 718, 80, 0, 101, 881, 455, 1587, 1548, 0, 82, 1408, 886,
78, 67, 708, 275, 791, 0, 0, 0, 0, 542, 1664, 660, 895, 0, 0, 0,
464, 1503, 1453, 0, 0, 1254, 135, 0, 141, 1383, 94, 0, 0, 0, 0, 1643,
1196, 0, 568, 796, 1622, 0, 1509, 0, 0, 779, 499, 1198, 429, 0, 1343, 400,
591, 374, 1409, 0, 147, 0, 0, 1182, 0, 40, 742, 1200, 98, 1395, 195, 0,
126, 206, 0, 295, 355, 1058, 313, 167, 465, 788, 838, 0, 960, 0, 35, 0,
551, 1481, 131, 243, 575, 0, 0, 448, 0, 510, 929, 0, 0, 588, 542, 1549,
1528, 1552, 0, 141, 877, 283, 0, 1024, 369, 0, 0, 0, 1078, 154, 1564, 978,
755, 0, 1492, 888, 1638, 32, 662, 606, 532, 796, 0, 0, 1378, 0, 928, 501,
553, 287, 0, 0, 0, 1280, 887, 1036, 1403, 0, 0, 1047, 757, 0, 1333, 107,
115, 0, 0, 282, 1285, 933, 1355, 0, 837, 926, 840, 511, 688, 1045, 679, 1085,
298, 509, 0, 1311, 0, 280, 0, 386, 403, 1517, 0, 0, 120, 786, 1161, 345,
1647, 1316, 485, 0, 763, 1000, 415, 1433, 0, 517, 773, 0, 324, 53, 554, 1124,
935, 144, 1468, 1480, 627, 1341, 1618, 1439, 1406, 120, 46, 916, 0, 0, 1667, 0,
1620, 1113, 81, 443, 0, 0, 0, 1276, 0, 0, 609, 0, 239, 0, 0, 0,
1147, 1452, 285, 0, 0, 747, 1312, 366, 681, 0, 395, 792, 0, 80, 0, 1498,
1209, 0, 0, 0, 0, 927, 0, 1190, 241, 1245, 1544, 217, 1063, 0, 1357, 47,
0, 41, 743, 822, 629, 495, 0, 1327, 277, 273, 133, 124, 0, 224, 189, 0,
0, 0, 153, 0, 654, 81, 0, 465, 0, 0, 868, 1036, 530, 769, 574, 0,
752, 0, 180, 105, 440, 1325, 0, 0, 0, 1122, 918, 0, 0, 863, 0, 741,
1452, 0, 0, 437, 0, 0, 604, 1647, 44, 278, 1184, 406, 140, 1507, 275, 874,
0, 0, 308, 0, 63, 0, 378, 588, 801, 1075, 1188, 150, 0, 407, 187, 0,
393, 17, 673, 0, 496, 305, 0, 1415, 1419, 0, 0, 0, 1057, 725, 15, 455,
0, 0, 0, 0, 0, 0, 791, 834, 488, 1485, 0, 1135, 973, 0, 0, 240,
1035, 0, 644, 445, 657, 1383, 0, 670, 849, 0, 0, 0, 982, 0, 135, 675,
758, 565, 354, 0, 725, 0, 0, 1095, 131, 0, 0, 0, 595, 1289, 667, 0,
333, 1072, 1619, 0, 622, 855, 826, 921};
int MangledHashG(const char *key, const int *T)
{
int sum = 0;
for (int i = 0; key[i] != '\0'; i++)
{
sum += T[i] * key[i];
sum %= 1672;
}
return mangledkG[sum];
}
int MangledPerfectHash(const char *key)
{
if (strlen(key) > 37)
return 0;
return (MangledHashG(key, mangledkT1) + MangledHashG(key, mangledkT2)) % 1672;
}
constexpr int unmangledkT1[] = {277, 59, 31, 44, 197, 182, 56, 205, 196, 115, 78, 90, 14,
17, 268, 111, 200, 47, 166, 160, 180, 146, 157, 131, 29, 198};
constexpr int unmangledkT2[] = {65, 240, 118, 268, 65, 272, 67, 89, 124, 39, 161, 140, 164,
62, 37, 125, 263, 194, 237, 86, 191, 157, 254, 179, 95, 256};
constexpr int unmangledkG[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 161, 182,
0, 158, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 26, 111, 0, 0, 106, 0,
0, 0, 255, 64, 27, 0, 0, 0, 0, 3, 7, 64, 146, 0, 0, 0, 182, 166,
260, 0, 121, 0, 79, 0, 0, 24, 248, 212, 84, 0, 285, 0, 19, 192, 0, 7,
33, 0, 0, 0, 0, 0, 137, 0, 0, 46, 0, 32, 20, 0, 0, 234, 0, 0,
0, 0, 36, 0, 0, 191, 44, 0, 0, 0, 0, 104, 21, 89, 0, 0, 31, 0,
166, 143, 9, 0, 161, 87, 0, 10, 63, 72, 76, 0, 0, 0, 236, 83, 0, 0,
129, 0, 0, 7, 0, 0, 125, 0, 43, 0, 179, 0, 92, 0, 81, 268, 0, 0,
0, 0, 182, 250, 228, 0, 18, 128, 0, 54, 0, 0, 94, 51, 59, 0, 0, 0,
0, 37, 155, 48, 0, 0, 176, 17, 0, 0, 0, 76, 169, 38, 41, 0, 136, 285,
0, 192, 0, 0, 135, 251, 0, 0, 105, 0, 98, 139, 228, 0, 0, 64, 0, 206,
0, 0, 198, 0, 168, 76, 0, 0, 200, 0, 6, 97, 87, 193, 0, 30, 0, 57,
0, 0, 63, 0, 60, 78, 1, 118, 73, 67, 0, 225, 49, 0, 0, 42, 260, 142,
0, 264, 28, 4, 67, 286, 260, 0, 0, 19, 46, 111, 21, 14, 85, 0, 195, 77,
0, 0, 279, 0, 145, 0, 20, 286, 101, 70, 133, 63, 55, 245, 68, 25, 24, 52,
38, 0, 34, 94, 0, 70, 243, 0, 0, 225, 126, 283, 11, 0, 35, 0, 61};
int UnmangledHashG(const char *key, const int *T)
{
int sum = 0;
for (int i = 0; key[i] != '\0'; i++)
{
sum += T[i] * key[i];
sum %= 287;
}
return unmangledkG[sum];
}
int UnmangledPerfectHash(const char *key)
{
if (strlen(key) > 26)
return 0;
return (UnmangledHashG(key, unmangledkT1) + UnmangledHashG(key, unmangledkT2)) % 287;
}
} // namespace
namespace sh
{
template <>
const size_t ImmutableString::FowlerNollVoHash<4>::kFnvPrime = 16777619u;
template <>
const size_t ImmutableString::FowlerNollVoHash<4>::kFnvOffsetBasis = 0x811c9dc5u;
template <>
const size_t ImmutableString::FowlerNollVoHash<8>::kFnvPrime =
static_cast<size_t>(1099511628211ull);
template <>
const size_t ImmutableString::FowlerNollVoHash<8>::kFnvOffsetBasis =
static_cast<size_t>(0xcbf29ce484222325ull);
uint32_t ImmutableString::mangledNameHash() const
{
return MangledPerfectHash(data());
}
uint32_t ImmutableString::unmangledNameHash() const
{
return UnmangledPerfectHash(data());
}
} // namespace sh