blob: 38e16b91116d9199cba19b88c33616e6f6233b1e [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 2020 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[] = {576, 1799, 1318, 442, 700, 1751, 1287, 678, 1525, 206,
1170, 550, 1470, 1009, 1178, 1566, 842, 605, 1223, 1577,
476, 175, 132, 18, 774, 1001, 217, 1124, 1447, 1736,
1792, 378, 1483, 993, 90, 1452, 902};
constexpr int mangledkT2[] = {387, 1455, 891, 850, 1815, 915, 378, 591, 905, 1053,
906, 1369, 1680, 39, 406, 1514, 1170, 728, 206, 1497,
596, 667, 1461, 12, 25, 375, 1578, 1123, 322, 502,
62, 32, 1393, 1552, 1715, 947, 526};
constexpr int mangledkG[] = {
0, 0, 0, 577, 0, 0, 0, 0, 0, 52, 0, 799, 0, 0, 0, 0,
0, 0, 0, 0, 0, 977, 0, 0, 797, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 262, 0, 1594, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1311, 0, 0, 0, 654, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 307, 0, 0, 0, 48, 0, 0, 0, 0, 104, 0, 1196, 1352, 0, 1056,
0, 253, 0, 824, 0, 0, 994, 0, 0, 808, 1366, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 1315, 0, 0, 148, 0, 0,
1699, 0, 0, 0, 1085, 0, 0, 0, 91, 0, 0, 0, 1123, 0, 0, 0,
1150, 0, 735, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1465, 780, 196, 0,
0, 0, 0, 345, 1662, 0, 718, 895, 0, 1329, 1148, 0, 0, 1516, 926, 0,
0, 0, 0, 0, 0, 1581, 0, 0, 1408, 428, 0, 1312, 0, 1127, 544, 0,
0, 0, 0, 0, 0, 214, 716, 0, 0, 1182, 0, 0, 0, 330, 1138, 0,
0, 1781, 0, 0, 780, 636, 0, 157, 0, 0, 0, 0, 0, 0, 0, 1089,
0, 0, 436, 110, 0, 1572, 1494, 0, 0, 1595, 0, 0, 0, 709, 991, 0,
0, 0, 1355, 0, 1201, 1786, 0, 312, 235, 1386, 0, 0, 1582, 1448, 0, 1574,
620, 0, 0, 0, 0, 493, 7, 0, 952, 912, 0, 170, 0, 0, 0, 1564,
585, 0, 0, 0, 0, 0, 1481, 0, 278, 0, 535, 0, 0, 1634, 29, 611,
1486, 106, 0, 0, 1070, 0, 0, 0, 266, 0, 0, 1806, 0, 216, 0, 98,
676, 0, 651, 0, 0, 0, 0, 0, 0, 0, 0, 105, 72, 0, 317, 133,
0, 0, 146, 354, 0, 677, 0, 110, 0, 1097, 0, 1674, 0, 0, 57, 0,
1574, 587, 0, 242, 188, 0, 196, 864, 1330, 735, 0, 339, 0, 739, 0, 58,
193, 0, 0, 165, 0, 823, 0, 128, 0, 0, 1077, 0, 0, 0, 0, 0,
0, 872, 1782, 1692, 0, 0, 664, 1270, 0, 1199, 0, 0, 61, 0, 0, 0,
662, 0, 489, 0, 1029, 0, 0, 0, 1333, 69, 466, 0, 0, 1360, 0, 0,
251, 153, 445, 173, 0, 1181, 0, 0, 325, 0, 0, 342, 391, 0, 901, 0,
707, 0, 0, 0, 0, 1272, 0, 490, 0, 0, 0, 0, 721, 0, 0, 0,
0, 1220, 1228, 811, 1359, 1353, 1262, 72, 0, 0, 683, 0, 1339, 0, 0, 0,
1343, 0, 717, 0, 0, 1723, 728, 0, 0, 0, 78, 533, 243, 0, 0, 1416,
363, 0, 0, 0, 426, 0, 514, 0, 1132, 501, 262, 0, 0, 42, 1647, 1775,
903, 803, 607, 0, 0, 905, 237, 0, 0, 309, 1164, 0, 0, 730, 1700, 0,
0, 0, 0, 0, 0, 234, 1663, 0, 0, 383, 1018, 0, 1665, 0, 0, 1252,
0, 0, 0, 785, 0, 346, 1420, 0, 0, 0, 0, 0, 0, 1755, 1334, 0,
990, 1230, 0, 1479, 927, 1760, 233, 852, 0, 712, 103, 1512, 436, 0, 0, 133,
0, 0, 0, 0, 0, 419, 1746, 193, 0, 0, 1280, 832, 744, 0, 0, 826,
0, 1600, 0, 963, 485, 238, 0, 217, 1374, 1715, 867, 0, 877, 569, 438, 599,
0, 0, 429, 920, 850, 0, 0, 0, 141, 0, 138, 0, 0, 0, 1513, 0,
0, 0, 0, 643, 0, 0, 1275, 0, 0, 1541, 1451, 0, 87, 0, 0, 0,
0, 0, 0, 179, 1089, 0, 0, 0, 0, 0, 0, 486, 0, 0, 313, 0,
339, 324, 1465, 0, 0, 390, 0, 0, 0, 767, 0, 0, 828, 377, 1779, 151,
0, 0, 1694, 0, 671, 0, 627, 1483, 0, 0, 631, 422, 0, 29, 0, 540,
1147, 0, 1461, 0, 1509, 262, 0, 0, 368, 1384, 1624, 1602, 876, 0, 820, 396,
844, 1671, 277, 0, 0, 1364, 0, 0, 0, 875, 0, 440, 0, 0, 0, 0,
232, 0, 0, 47, 295, 10, 0, 0, 0, 412, 311, 0, 1318, 76, 1064, 0,
0, 1386, 726, 0, 0, 1237, 0, 957, 986, 0, 771, 1508, 292, 0, 0, 291,
995, 394, 0, 0, 0, 0, 1363, 11, 867, 0, 534, 302, 124, 0, 0, 0,
1743, 0, 0, 104, 912, 272, 0, 0, 0, 0, 227, 0, 0, 0, 1579, 710,
1031, 0, 0, 0, 0, 901, 0, 483, 0, 390, 755, 474, 1270, 0, 305, 0,
559, 0, 352, 0, 0, 401, 0, 1348, 0, 840, 0, 108, 0, 0, 0, 794,
0, 441, 1049, 338, 0, 857, 0, 334, 272, 960, 0, 0, 461, 326, 856, 1246,
1607, 767, 381, 286, 0, 351, 0, 0, 0, 1309, 0, 150, 350, 0, 367, 708,
0, 0, 36, 0, 0, 1157, 1713, 559, 246, 484, 680, 149, 0, 0, 0, 329,
734, 0, 0, 1796, 137, 0, 56, 98, 0, 0, 656, 0, 655, 0, 0, 167,
0, 0, 177, 0, 1391, 0, 0, 0, 0, 719, 913, 1751, 642, 478, 1387, 0,
0, 1677, 612, 1120, 0, 482, 294, 753, 0, 882, 723, 13, 0, 1586, 616, 0,
1624, 918, 687, 1383, 0, 802, 923, 1781, 0, 0, 198, 1475, 90, 0, 0, 927,
0, 0, 0, 1454, 0, 791, 1180, 0, 1687, 1763, 80, 61, 1326, 0, 0, 0,
0, 870, 782, 0, 448, 1407, 713, 1080, 0, 0, 0, 880, 612, 0, 0, 1706,
834, 1073, 839, 0, 0, 38, 1653, 0, 1265, 0, 0, 662, 1613, 0, 0, 0,
1495, 1110, 19, 0, 0, 0, 968, 0, 0, 1375, 0, 1646, 1490, 0, 594, 671,
0, 622, 0, 83, 362, 164, 0, 0, 145, 198, 0, 0, 193, 0, 560, 700,
0, 0, 0, 1404, 906, 436, 0, 1314, 0, 1250, 0, 0, 1691, 0, 181, 0,
99, 1086, 0, 1601, 796, 346, 1494, 0, 0, 0, 490, 0, 1226, 0, 487, 1113,
165, 1429, 897, 0, 1674, 1030, 402, 0, 810, 841, 1490, 451, 701, 0, 0, 0,
1685, 138, 336, 0, 227, 0, 67, 0, 344, 0, 0, 817, 986, 663, 135, 725,
0, 199, 1155, 546, 1519, 0, 1438, 1223, 0, 277, 0, 0, 0, 0, 0, 0,
0, 542, 0, 1237, 0, 1205, 0, 0, 1294, 0, 0, 0, 0, 442, 0, 744,
906, 0, 0, 0, 749, 22, 915, 0, 1494, 706, 747, 0, 816, 0, 788, 331,
153, 1308, 922, 0, 264, 887, 219, 1039, 353, 477, 0, 0, 0, 1447, 0, 673,
1610, 29, 115, 1670, 0, 0, 0, 442, 0, 0, 0, 0, 0, 0, 0, 230,
0, 1327, 0, 925, 0, 1366, 1558, 0, 0, 683, 0, 355, 326, 583, 346, 0,
1680, 1333, 0, 763, 1703, 752, 0, 97, 0, 1721, 0, 0, 607, 312, 0, 283,
372, 496, 605, 44, 0, 148, 329, 651, 0, 1198, 897, 139, 123, 63, 564, 0,
1471, 1670, 0, 0, 483, 335, 642, 0, 176, 0, 63, 1671, 544, 0, 1577, 119,
1557, 785, 436, 27, 134, 835, 1170, 0, 0, 0, 86, 0, 682, 397, 251, 64,
0, 59, 0, 529, 0, 879, 0, 0, 181, 1656, 39, 286, 1657, 0, 794, 1514,
555, 461, 642, 0, 398, 0, 0, 0, 29, 0, 0, 127, 1604, 0, 658, 0,
1266, 0, 222, 0, 0, 0, 190, 741, 185, 339, 615, 0, 0, 1657, 0, 1547,
0, 449, 0, 257, 0, 1019, 519, 1791, 366, 820, 734, 429, 0, 606, 1647, 634,
824, 618, 0, 105, 0, 114, 389, 462, 814, 0, 509, 0, 929, 779, 327, 717,
420, 1169, 1494, 0, 0, 513, 940, 1170, 185, 0, 913, 110, 0, 0, 13, 819,
668, 1569, 1739, 1086, 36, 0, 1320, 0, 0, 1378, 0, 0, 1072, 397, 0, 0,
49, 0, 0, 624, 0, 1523, 0, 805, 1237, 1770, 827, 0, 616, 0, 405, 0,
0, 0, 1685, 1351, 0, 778, 463, 944, 1255, 0, 413, 0, 0, 0, 660, 1008,
0, 0, 1401, 522, 0, 14, 0, 1510, 0, 1139, 608, 1607, 585, 0, 0, 0,
240, 297, 692, 220, 1434, 59, 518, 70, 152, 403, 506, 224, 0, 0, 369, 0,
801, 740, 0, 1701, 0, 0, 1599, 0, 0, 0, 0, 709, 275, 322, 0, 0,
805, 0, 281, 298, 60, 0, 0, 282, 705, 0, 0, 0, 1782, 1148, 952, 0,
451, 486, 152, 0, 0, 0, 0, 194, 552, 54, 0, 110, 5, 1457, 0, 861,
1311, 0, 34, 1424, 107, 0, 0, 137, 324, 248, 736, 1751, 644, 1330, 594, 1088,
1375, 0, 0, 1114, 102, 0, 0, 0, 0, 304, 0, 1050, 0, 0, 0, 632,
0, 32, 0, 321, 576, 0, 215, 933, 0, 604, 0, 0, 0, 1650, 0, 0,
1404, 480, 77, 0, 0, 1173, 743, 271, 0, 0, 805, 1481, 501, 1053, 580, 0,
0, 0, 746, 0, 1508, 1247, 1496, 0, 0, 289, 525, 176, 0, 0, 902, 0,
184, 0, 1327, 0, 7, 581, 1163, 951, 161, 0, 229, 243, 795, 0, 437, 290,
0, 427, 248, 350, 409, 0, 556, 0, 128, 93, 238, 347, 332, 0, 472, 551,
792, 728, 0, 208, 460, 0, 356, 0, 434, 231, 1458, 1246, 0, 739, 941, 1745,
1801, 1555, 1390, 0, 714, 358, 400, 173, 523, 1176, 660, 325, 488, 953, 0, 0,
1388, 574, 0, 0, 215, 459, 606, 1757, 571, 373, 201, 0, 0, 423, 77, 0,
608, 207, 0, 706, 0, 0, 0, 0, 983, 0, 0, 0, 1011, 1266, 343, 0,
0, 0, 847, 1137, 10, 531, 995, 0, 0, 391, 0, 1784, 0, 528, 222, 863,
885, 0, 1779, 0, 1642, 977, 0, 0, 489, 628, 805, 0, 404, 127, 268, 0,
0, 242, 0, 0, 0, 1750, 293, 663, 861, 528, 0, 0, 0, 1104, 685, 314,
262, 781, 1359, 666, 1370, 1656, 219, 1100, 1675, 920, 512, 802, 1258, 1601, 1721, 780,
0, 0, 689, 1765, 947, 1507, 1540, 0, 0, 831, 1609, 385, 0, 1776, 844, 1601,
0, 2, 939, 657, 0, 0, 247, 436, 1136, 205, 1200, 471, 98, 889, 166, 47,
1627, 659, 407, 676, 851, 985, 830, 106, 1076, 1090, 0, 1810, 0, 672, 32, 1351,
1387, 1446, 390, 586, 0, 202, 585, 687, 205, 0, 746, 1212, 97, 130, 1218, 498,
0, 0, 911, 584, 409, 416, 0, 0, 0, 1412, 511, 480, 81, 1061, 0, 803,
75, 0, 0, 859, 0, 434, 504, 0, 0, 267, 852, 990, 1679, 1265, 0, 122,
0, 0, 789, 0, 111, 0, 0, 0, 674, 0, 0, 0, 1763, 0, 0, 615,
0, 0, 85, 754, 0, 574, 1220, 1262, 0, 353, 0, 753, 0, 1542, 0, 614,
978, 166, 1728, 0, 0, 290, 0, 0, 508, 1316, 383, 0, 17, 1452, 832, 478,
0, 1574, 913, 73, 0, 0, 1323, 0, 53, 1656, 0, 0, 0, 315, 0, 0,
0, 0, 446, 0, 0, 0, 614, 331, 1486, 0, 1315};
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 %= 1819;
}
return mangledkG[sum];
}
int MangledPerfectHash(const char *key)
{
if (strlen(key) > 37)
return 0;
return (MangledHashG(key, mangledkT1) + MangledHashG(key, mangledkT2)) % 1819;
}
constexpr int unmangledkT1[] = {293, 75, 40, 95, 74, 289, 163, 32, 196, 213, 151, 250, 270,
222, 33, 225, 68, 121, 96, 188, 267, 106, 137, 167, 63, 225};
constexpr int unmangledkT2[] = {282, 168, 232, 116, 146, 41, 230, 239, 190, 13, 17, 153, 163,
115, 101, 5, 235, 257, 66, 70, 287, 264, 162, 100, 294, 5};
constexpr int unmangledkG[] = {
0, 0, 0, 0, 215, 0, 0, 0, 0, 0, 55, 0, 0, 0, 240, 0, 27, 192, 0,
0, 135, 7, 53, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 291, 0, 0, 145, 74,
0, 258, 13, 0, 0, 200, 0, 0, 0, 71, 116, 0, 53, 0, 48, 222, 0, 185, 0,
135, 0, 24, 262, 0, 24, 242, 0, 0, 0, 195, 0, 39, 8, 99, 152, 0, 0, 4,
0, 0, 0, 94, 97, 0, 0, 32, 0, 242, 67, 0, 3, 0, 100, 0, 0, 0, 13,
101, 0, 46, 0, 0, 105, 0, 0, 0, 0, 96, 0, 110, 228, 0, 52, 269, 0, 0,
0, 0, 0, 6, 0, 0, 109, 131, 0, 0, 0, 93, 283, 251, 189, 0, 111, 0, 0,
0, 65, 24, 236, 154, 0, 132, 204, 0, 207, 0, 0, 0, 0, 0, 87, 74, 60, 142,
137, 69, 0, 0, 0, 75, 0, 0, 88, 0, 124, 51, 56, 0, 113, 0, 0, 0, 46,
0, 0, 221, 0, 58, 278, 257, 0, 0, 0, 271, 149, 91, 0, 224, 95, 152, 0, 0,
81, 49, 198, 121, 74, 0, 0, 0, 0, 0, 94, 247, 41, 0, 0, 0, 10, 140, 0,
0, 0, 119, 25, 0, 106, 0, 195, 115, 35, 0, 162, 0, 81, 0, 23, 76, 0, 272,
86, 72, 52, 0, 0, 118, 0, 125, 0, 145, 0, 214, 0, 145, 228, 0, 0, 121, 0,
0, 110, 60, 18, 7, 5, 190, 276, 96, 0, 57, 249, 0, 65, 31, 213, 0, 0, 29,
178, 108, 125, 30, 0, 0, 0, 0, 0, 200, 250, 0, 35, 0, 103, 230, 243, 276, 17,
268, 147, 180, 46, 55, 26, 4, 269, 16, 0};
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 %= 295;
}
return unmangledkG[sum];
}
int UnmangledPerfectHash(const char *key)
{
if (strlen(key) > 26)
return 0;
return (UnmangledHashG(key, unmangledkT1) + UnmangledHashG(key, unmangledkT2)) % 295;
}
} // 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