blob: 37f6a43c8d0ce974af4001f8dd0596d90d1d7f6f [file]
// 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[] = {1371, 1214, 1028, 1076, 1622, 316, 491, 185, 1338, 378,
1471, 1619, 743, 1462, 58, 1656, 1796, 77, 895, 1048,
782, 500, 1906, 1166, 1416, 193, 1788, 1921, 1526, 1185,
1308, 1650, 455, 1808, 985, 48, 381};
constexpr int mangledkT2[] = {160, 1287, 1429, 1850, 299, 1813, 1618, 125, 1167, 1943,
1304, 19, 1558, 448, 1269, 529, 1882, 819, 334, 552,
1636, 1743, 1913, 1897, 1514, 679, 997, 74, 26, 1595,
456, 1651, 423, 265, 1109, 1542, 1145};
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, 0, 0, 0, 0,
1228, 0, 0, 1928, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 0,
236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 274, 0, 290, 0, 0, 0, 0,
0, 0, 0, 0, 1922, 0, 1199, 0, 0, 0, 0, 0, 0, 352, 0, 338,
1160, 0, 0, 0, 0, 0, 0, 0, 0, 1190, 100, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1350, 0, 0, 0, 833, 0, 0, 21,
0, 405, 0, 0, 0, 1688, 0, 0, 1572, 0, 1642, 1834, 494, 0, 0, 0,
716, 0, 525, 0, 0, 0, 0, 1303, 0, 43, 0, 0, 0, 1771, 0, 320,
0, 0, 0, 0, 0, 674, 0, 1828, 1249, 0, 0, 0, 0, 493, 680, 0,
0, 0, 0, 0, 0, 634, 70, 0, 0, 0, 790, 276, 321, 0, 0, 0,
620, 708, 0, 0, 0, 0, 1961, 0, 560, 0, 111, 0, 354, 343, 0, 0,
145, 1714, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 597, 0, 0,
268, 0, 0, 0, 1718, 0, 774, 0, 0, 0, 548, 0, 0, 448, 0, 0,
0, 124, 0, 0, 847, 0, 0, 0, 0, 0, 0, 0, 1906, 0, 0, 0,
0, 0, 950, 0, 1648, 361, 0, 326, 0, 0, 0, 1844, 0, 429, 195, 0,
1557, 0, 1774, 0, 0, 0, 637, 1623, 0, 0, 0, 0, 705, 0, 874, 542,
0, 0, 0, 714, 0, 331, 0, 0, 0, 0, 0, 0, 0, 182, 0, 0,
0, 0, 0, 0, 5, 0, 741, 0, 771, 153, 0, 0, 0, 844, 521, 0,
1102, 0, 0, 0, 674, 0, 0, 0, 0, 842, 0, 0, 0, 0, 0, 1239,
0, 0, 0, 0, 0, 0, 1662, 52, 0, 10, 0, 0, 0, 0, 0, 99,
0, 938, 1911, 1113, 0, 0, 0, 0, 0, 1755, 0, 0, 0, 0, 0, 0,
0, 76, 1008, 0, 0, 0, 0, 676, 0, 1666, 227, 0, 0, 1161, 975, 0,
0, 299, 0, 312, 1623, 231, 539, 0, 671, 0, 0, 0, 0, 1376, 0, 0,
1198, 0, 0, 0, 0, 0, 915, 514, 0, 0, 0, 1205, 0, 0, 765, 0,
0, 0, 0, 0, 0, 486, 563, 0, 1805, 363, 0, 0, 1957, 0, 772, 0,
0, 0, 0, 0, 0, 828, 413, 0, 0, 0, 0, 0, 1475, 0, 0, 0,
0, 229, 1675, 0, 0, 0, 495, 0, 1489, 626, 0, 0, 0, 1499, 438, 0,
0, 1676, 1079, 8, 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, 0, 0,
0, 0, 1976, 600, 1367, 1666, 0, 1299, 0, 1549, 0, 682, 0, 1492, 1298, 713,
0, 0, 375, 0, 0, 0, 447, 0, 0, 0, 5, 0, 0, 0, 80, 839,
0, 1719, 0, 0, 858, 0, 0, 443, 0, 0, 340, 0, 565, 563, 0, 0,
0, 0, 1483, 342, 103, 586, 1702, 0, 0, 0, 0, 0, 365, 0, 0, 671,
0, 392, 0, 0, 104, 1886, 0, 0, 0, 252, 536, 0, 0, 1885, 1033, 1644,
729, 0, 469, 0, 96, 0, 285, 1584, 373, 0, 0, 0, 0, 0, 0, 0,
0, 492, 0, 506, 1970, 0, 819, 1080, 77, 0, 0, 191, 0, 0, 0, 0,
0, 57, 496, 0, 0, 1967, 0, 0, 0, 0, 581, 1926, 0, 0, 0, 1137,
0, 0, 0, 0, 0, 573, 748, 928, 818, 0, 0, 0, 0, 0, 0, 0,
0, 1097, 331, 630, 252, 0, 0, 495, 64, 261, 0, 329, 0, 0, 633, 1961,
0, 372, 0, 1778, 1351, 1778, 1570, 0, 989, 0, 0, 0, 0, 0, 0, 0,
141, 851, 530, 895, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 776, 482, 773, 806, 714, 0, 104, 0, 0, 279, 96, 292, 488,
908, 0, 1364, 0, 0, 1091, 685, 721, 0, 1843, 546, 0, 0, 1919, 0, 2,
775, 0, 585, 0, 1918, 0, 0, 200, 791, 95, 1698, 1395, 1823, 382, 479, 0,
265, 146, 0, 188, 0, 0, 700, 400, 1240, 0, 0, 1319, 192, 553, 0, 0,
0, 0, 0, 848, 0, 0, 0, 1392, 0, 38, 78, 0, 1213, 0, 1491, 0,
0, 230, 0, 1511, 179, 0, 0, 175, 115, 0, 0, 1348, 0, 1773, 0, 148,
0, 0, 263, 80, 0, 0, 0, 0, 0, 800, 0, 334, 790, 615, 0, 0,
754, 436, 1148, 949, 0, 252, 0, 0, 91, 893, 396, 0, 216, 1249, 0, 396,
0, 220, 0, 0, 0, 42, 0, 511, 628, 0, 856, 0, 0, 0, 506, 696,
0, 0, 0, 157, 456, 272, 269, 0, 1917, 427, 239, 568, 830, 375, 0, 944,
0, 379, 0, 765, 0, 0, 0, 0, 0, 0, 538, 231, 298, 0, 699, 24,
0, 0, 156, 1255, 0, 137, 0, 339, 1779, 0, 1666, 0, 1736, 0, 0, 878,
0, 0, 1723, 0, 619, 398, 0, 215, 569, 0, 0, 1730, 0, 0, 884, 0,
1802, 53, 733, 518, 1614, 0, 0, 559, 1833, 0, 382, 1773, 0, 719, 0, 0,
0, 0, 660, 0, 0, 1973, 0, 131, 100, 197, 0, 1554, 530, 0, 0, 0,
1857, 0, 1229, 829, 501, 0, 481, 0, 745, 0, 844, 296, 403, 703, 941, 0,
0, 580, 837, 1751, 86, 0, 987, 1171, 0, 1174, 0, 0, 1714, 982, 0, 1894,
0, 0, 547, 1619, 0, 0, 0, 0, 0, 627, 0, 325, 0, 1113, 0, 710,
676, 1880, 662, 0, 0, 0, 0, 130, 0, 0, 481, 0, 0, 737, 409, 0,
463, 947, 0, 0, 0, 1913, 0, 0, 0, 347, 1715, 73, 758, 0, 523, 303,
654, 0, 0, 0, 0, 844, 354, 0, 1967, 1601, 0, 955, 152, 1388, 0, 0,
344, 580, 0, 812, 0, 0, 337, 171, 0, 173, 1457, 94, 1834, 165, 0, 1705,
1193, 164, 333, 0, 189, 0, 21, 99, 0, 1074, 0, 353, 41, 397, 0, 0,
0, 0, 273, 689, 102, 0, 1760, 0, 0, 1897, 328, 228, 0, 1520, 58, 1508,
0, 562, 0, 1775, 0, 599, 0, 0, 0, 953, 307, 1068, 1735, 0, 1924, 0,
0, 1727, 0, 0, 0, 0, 45, 0, 21, 1950, 319, 0, 21, 0, 42, 0,
148, 787, 72, 0, 0, 292, 386, 166, 1430, 1029, 0, 89, 0, 258, 1875, 0,
1636, 1893, 794, 634, 275, 0, 0, 0, 0, 1838, 859, 1156, 0, 0, 795, 0,
0, 0, 714, 0, 687, 0, 0, 0, 0, 0, 179, 711, 0, 0, 179, 0,
0, 0, 251, 423, 1455, 0, 185, 0, 433, 413, 0, 0, 523, 0, 532, 551,
703, 679, 0, 495, 85, 0, 92, 761, 0, 0, 0, 0, 0, 0, 1689, 19,
740, 0, 277, 322, 549, 1946, 0, 39, 1896, 276, 0, 0, 107, 0, 287, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, 89, 0, 0, 0, 168,
0, 1829, 810, 243, 0, 0, 305, 992, 20, 0, 36, 0, 378, 670, 1564, 1613,
0, 841, 775, 795, 215, 0, 0, 0, 0, 6, 820, 0, 1513, 186, 660, 0,
0, 1581, 404, 0, 874, 156, 0, 210, 0, 0, 0, 0, 693, 0, 0, 0,
0, 178, 248, 15, 0, 487, 0, 614, 0, 413, 852, 896, 240, 53, 201, 580,
0, 0, 0, 932, 478, 0, 681, 0, 75, 1891, 0, 369, 0, 0, 515, 467,
0, 287, 0, 1699, 20, 691, 0, 0, 569, 1316, 592, 834, 85, 1813, 0, 96,
700, 450, 1186, 0, 0, 0, 0, 1703, 0, 427, 0, 0, 905, 180, 1305, 51,
582, 0, 384, 0, 0, 0, 0, 1226, 172, 693, 0, 268, 1603, 0, 0, 77,
0, 575, 136, 0, 237, 0, 0, 0, 0, 374, 0, 0, 329, 1469, 163, 1941,
0, 524, 0, 492, 1689, 529, 22, 914, 35, 0, 0, 1427, 0, 1412, 1423, 0,
0, 606, 0, 0, 572, 97, 0, 1346, 0, 0, 950, 0, 0, 940, 459, 292,
0, 0, 0, 470, 0, 599, 0, 0, 646, 0, 0, 483, 1533, 923, 354, 1929,
91, 0, 0, 0, 0, 0, 1414, 295, 0, 1676, 0, 0, 462, 95, 348, 0,
882, 0, 40, 190, 0, 1611, 1850, 0, 472, 0, 0, 531, 661, 344, 0, 1419,
354, 655, 0, 174, 1692, 0, 1742, 1879, 494, 0, 215, 1715, 311, 0, 0, 426,
110, 0, 359, 0, 111, 1821, 0, 0, 364, 0, 811, 32, 1749, 781, 0, 224,
734, 439, 618, 0, 1189, 0, 0, 0, 456, 170, 0, 0, 0, 0, 628, 0,
424, 0, 0, 350, 250, 0, 0, 738, 1373, 0, 0, 0, 296, 181, 587, 0,
787, 0, 553, 422, 98, 1111, 0, 0, 0, 0, 35, 88, 5, 958, 265, 902,
0, 0, 0, 366, 947, 0, 541, 0, 241, 733, 308, 533, 1761, 0, 0, 0,
1698, 521, 1768, 0, 0, 0, 466, 653, 428, 1007, 112, 0, 460, 277, 232, 0,
71, 350, 0, 0, 192, 0, 186, 95, 208, 505, 1928, 0, 102, 689, 1180, 0,
0, 0, 155, 126, 623, 178, 17, 103, 845, 154, 0, 0, 90, 0, 0, 1688,
449, 0, 0, 491, 0, 0, 79, 527, 0, 44, 0, 304, 733, 0, 0, 805,
0, 200, 355, 0, 529, 918, 769, 1735, 783, 669, 0, 0, 286, 1660, 32, 3,
576, 0, 0, 343, 923, 0, 1139, 610, 774, 0, 0, 1643, 110, 920, 97, 0,
0, 0, 378, 0, 609, 274, 0, 306, 0, 23, 940, 899, 250, 0, 603, 591,
0, 0, 179, 1046, 1971, 0, 736, 1003, 0, 894, 577, 391, 642, 809, 0, 0,
242, 0, 589, 379, 528, 0, 1892, 347, 692, 0, 0, 0, 0, 0, 20, 0,
0, 0, 752, 299, 0, 0, 121, 0, 515, 1927, 1605, 274, 748, 0, 0, 240,
0, 346, 472, 0, 0, 0, 45, 0, 202, 649, 544, 0, 0, 890, 0, 310,
0, 0, 271, 0, 639, 0, 263, 0, 1552, 0, 401, 644, 1920, 192, 1778, 0,
480, 250, 470, 72, 1708, 1894, 780, 202, 192, 0, 1377, 0, 1821, 0, 16, 0,
1938, 0, 0, 0, 510, 0, 1463, 1027, 1213, 0, 646, 0, 0, 0, 249, 195,
0, 118, 1133, 20, 0, 0, 836, 692, 0, 1262, 301, 0, 686, 751, 0, 368,
886, 0, 0, 0, 0, 550, 278, 0, 835, 1102, 0, 1504, 0, 0, 320, 0,
7, 968, 572, 742, 0, 1157, 26, 0, 686, 0, 231, 0, 0, 807, 1633, 1653,
0, 0, 563, 1837, 0, 0, 836, 0, 189, 410, 943, 394, 465, 0, 904, 437,
1371, 0, 1212, 0, 0, 0, 864, 32, 744, 0, 0, 0, 374, 0, 1908, 443,
479, 0, 319, 0, 639, 0, 337, 607, 361, 233, 237, 922, 0, 33, 0, 0,
1792, 89, 291, 1759, 631, 1624, 156, 0, 463, 1388, 494, 1871, 0, 867, 744, 341,
1670, 0, 0, 1427, 1122, 1695, 0, 0, 1362, 665, 307, 199, 0, 147, 636, 0,
0, 767, 826, 151, 244, 0, 102, 1712, 20, 0, 0, 0, 663, 852, 0, 1686,
233, 1041, 316, 39, 1928, 508, 0, 157, 0, 587, 1429, 257, 745, 643, 789, 406,
614, 49, 53, 580, 0, 0, 1119, 1767, 684, 0, 382, 0, 0, 0, 933, 799,
0, 0, 0, 1702, 211, 0, 50, 0, 599, 1104, 0, 512, 732, 0, 1476, 0,
567, 0, 0, 0, 0, 1241, 0, 238, 1587, 1112, 288, 71, 737, 282, 0, 430,
111, 332, 144, 509, 724, 724, 0, 142, 1917, 349, 596, 0, 1747, 0, 609, 1771,
1739, 0, 0, 475, 892, 0, 1403, 916, 0};
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 %= 1977;
}
return mangledkG[sum];
}
int MangledPerfectHash(const char *key)
{
if (strlen(key) > 37)
return 0;
return (MangledHashG(key, mangledkT1) + MangledHashG(key, mangledkT2)) % 1977;
}
constexpr int unmangledkT1[] = {130, 88, 218, 50, 232, 224, 189, 241, 126, 226, 164, 51, 24,
14, 217, 181, 114, 184, 154, 192, 68, 12, 139, 35, 153, 160};
constexpr int unmangledkT2[] = {76, 220, 83, 9, 117, 230, 211, 225, 87, 243, 68, 154, 111,
241, 174, 60, 102, 57, 266, 71, 240, 175, 184, 45, 131, 226};
constexpr int unmangledkG[] = {
0, 0, 0, 0, 97, 0, 0, 0, 0, 36, 0, 0, 0, 0, 95, 88, 0, 0,
0, 124, 0, 0, 107, 130, 0, 148, 0, 0, 0, 130, 0, 0, 0, 0, 0, 248,
0, 265, 0, 81, 0, 21, 224, 118, 231, 121, 89, 59, 0, 86, 48, 151, 109, 0,
0, 0, 0, 9, 40, 0, 0, 44, 0, 0, 62, 0, 31, 72, 243, 0, 22, 49,
204, 0, 0, 101, 52, 0, 0, 143, 229, 266, 245, 0, 252, 0, 0, 0, 1, 0,
265, 81, 0, 30, 72, 12, 249, 122, 64, 163, 26, 0, 0, 80, 50, 0, 0, 54,
168, 136, 29, 44, 44, 0, 0, 0, 0, 257, 0, 7, 0, 0, 57, 0, 0, 81,
13, 252, 17, 53, 0, 1, 0, 0, 84, 0, 0, 0, 36, 185, 0, 45, 0, 0,
116, 4, 0, 100, 8, 3, 201, 141, 50, 251, 105, 69, 84, 65, 100, 0, 18, 7,
0, 0, 204, 0, 0, 0, 66, 0, 256, 120, 90, 89, 6, 0, 32, 115, 27, 0,
143, 16, 37, 0, 0, 0, 34, 0, 57, 0, 0, 254, 0, 0, 98, 69, 0, 242,
155, 149, 44, 101, 126, 0, 0, 0, 0, 252, 70, 11, 0, 86, 37, 0, 13, 33,
78, 238, 216, 220, 48, 58, 55, 0, 63, 83, 0, 265, 61, 4, 68, 0, 0, 107,
242, 181, 0, 25, 151, 170, 0, 0, 28, 0, 0, 0, 263, 252, 150, 122, 0, 0,
0, 64, 56, 0, 47, 240, 192, 31, 0, 0, 45, 28, 0, 3, 12, 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 %= 268;
}
return unmangledkG[sum];
}
int UnmangledPerfectHash(const char *key)
{
if (strlen(key) > 26)
return 0;
return (UnmangledHashG(key, unmangledkT1) + UnmangledHashG(key, unmangledkT2)) % 268;
}
} // 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