// 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[] = {843, 1411, 1006, 814, 1696, 1696, 363, 1756, 83, 206, 203, 679, 658, 7, 423, 1083, 728, 1753, 519, 221, 22, 265, 1927, 702, 1552, 623, 1283, 1185, 527, 570, 1194, 1669, 842, 353, 1512, 58, 1640}; constexpr int mangledkT2[] = {908, 1530, 528, 154, 570, 249, 1822, 24, 154, 1693, 337, 1383, 664, 955, 1965, 1327, 501, 1141, 1305, 1740, 72, 215, 1441, 1626, 325, 299, 986, 1478, 1188, 1623, 1858, 179, 1589, 1247, 1628, 1890, 471}; constexpr int mangledkG[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 966, 0, 0, 0, 0, 0, 0, 170, 448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1479, 0, 0, 0, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1139, 0, 0, 376, 0, 0, 0, 0, 0, 0, 744, 0, 0, 0, 0, 0, 0, 0, 1888, 0, 1668, 0, 0, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 0, 0, 852, 0, 0, 0, 0, 814, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 149, 0, 0, 0, 0, 0, 0, 0, 789, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1554, 0, 0, 997, 0, 0, 0, 0, 1872, 0, 0, 0, 0, 786, 0, 0, 0, 1121, 0, 748, 0, 0, 409, 0, 501, 147, 0, 0, 656, 0, 0, 335, 1603, 274, 0, 1328, 0, 0, 0, 0, 0, 355, 0, 0, 0, 910, 0, 0, 248, 845, 0, 0, 0, 1110, 82, 0, 1701, 0, 0, 0, 0, 563, 0, 0, 817, 1696, 0, 0, 305, 0, 0, 0, 387, 998, 0, 0, 0, 0, 0, 0, 0, 0, 785, 0, 1944, 0, 0, 0, 0, 0, 1821, 0, 190, 0, 1830, 0, 0, 0, 0, 0, 0, 0, 0, 757, 0, 0, 1891, 0, 0, 29, 143, 0, 1979, 1949, 832, 226, 0, 1872, 0, 0, 0, 0, 0, 1716, 0, 1190, 0, 1750, 0, 0, 0, 0, 0, 0, 0, 431, 292, 0, 0, 1489, 82, 0, 0, 0, 0, 0, 967, 0, 0, 585, 0, 0, 1955, 0, 0, 0, 1646, 670, 0, 0, 0, 0, 398, 0, 313, 0, 0, 0, 653, 0, 0, 0, 557, 669, 0, 206, 15, 536, 0, 639, 0, 1310, 0, 0, 354, 0, 1887, 0, 0, 1875, 0, 0, 0, 0, 0, 1827, 498, 0, 402, 1223, 0, 698, 0, 0, 0, 0, 0, 0, 875, 119, 0, 0, 1635, 1313, 0, 870, 0, 0, 0, 0, 0, 0, 744, 89, 0, 0, 0, 345, 964, 0, 438, 18, 0, 0, 0, 807, 0, 0, 0, 1669, 0, 0, 0, 0, 1568, 772, 0, 522, 926, 0, 923, 0, 0, 0, 0, 1889, 0, 513, 1222, 0, 0, 0, 0, 0, 0, 0, 485, 960, 0, 1151, 518, 1202, 0, 0, 7, 0, 0, 1073, 1870, 530, 1492, 0, 1854, 0, 0, 326, 0, 0, 665, 1378, 311, 0, 0, 368, 0, 0, 122, 1743, 603, 0, 0, 0, 0, 0, 509, 214, 0, 6, 0, 0, 130, 938, 1942, 0, 184, 714, 0, 0, 0, 93, 0, 739, 307, 0, 1696, 530, 0, 0, 1258, 184, 958, 61, 472, 614, 1953, 0, 1320, 573, 0, 0, 0, 266, 749, 0, 441, 845, 805, 0, 441, 570, 0, 0, 0, 0, 89, 718, 187, 748, 35, 0, 0, 0, 794, 1993, 0, 149, 0, 0, 592, 0, 0, 1431, 0, 430, 1479, 0, 48, 894, 172, 0, 89, 0, 864, 1975, 0, 337, 672, 0, 1738, 0, 1653, 0, 139, 0, 690, 0, 0, 0, 813, 0, 1368, 395, 145, 15, 0, 344, 44, 0, 0, 0, 211, 0, 0, 0, 634, 1346, 444, 0, 0, 0, 678, 0, 1692, 366, 0, 0, 0, 0, 0, 0, 0, 0, 0, 652, 0, 381, 406, 0, 0, 0, 0, 547, 1985, 353, 0, 0, 0, 1369, 35, 0, 876, 1803, 0, 206, 0, 0, 0, 530, 119, 0, 0, 1714, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 277, 1660, 0, 695, 0, 1978, 632, 0, 0, 0, 0, 0, 0, 0, 0, 0, 711, 0, 1667, 0, 621, 0, 696, 0, 0, 14, 725, 0, 512, 0, 459, 713, 34, 0, 0, 883, 0, 1270, 3, 0, 0, 999, 0, 947, 679, 0, 0, 0, 0, 1700, 164, 0, 0, 0, 0, 1901, 269, 0, 1888, 927, 1815, 0, 1998, 401, 591, 0, 1976, 0, 957, 253, 132, 0, 0, 0, 8, 0, 0, 1854, 1447, 229, 0, 363, 1554, 253, 38, 1712, 0, 0, 33, 0, 207, 0, 1916, 0, 0, 840, 1651, 0, 213, 0, 489, 57, 0, 0, 0, 820, 612, 715, 0, 0, 1252, 0, 0, 0, 220, 1876, 0, 121, 31, 120, 196, 0, 867, 924, 1468, 1884, 752, 842, 0, 0, 89, 1951, 11, 0, 329, 1626, 0, 0, 0, 0, 731, 0, 0, 487, 0, 0, 1688, 0, 1368, 0, 210, 1616, 1384, 0, 1458, 1448, 0, 0, 0, 0, 1076, 380, 184, 344, 0, 405, 248, 0, 0, 0, 1368, 820, 517, 0, 0, 190, 1077, 585, 0, 364, 0, 0, 127, 45, 17, 0, 0, 0, 0, 4, 0, 1207, 0, 0, 317, 552, 444, 432, 367, 0, 0, 0, 0, 320, 311, 554, 0, 443, 1054, 0, 0, 0, 1849, 0, 0, 633, 1437, 0, 876, 484, 0, 0, 0, 0, 0, 48, 0, 0, 1926, 718, 0, 0, 0, 164, 0, 0, 544, 1784, 800, 0, 0, 1562, 0, 565, 0, 0, 0, 0, 0, 0, 0, 0, 905, 798, 0, 1170, 0, 0, 0, 1551, 407, 0, 0, 0, 929, 0, 0, 986, 0, 1409, 0, 1999, 1142, 1178, 1042, 114, 0, 0, 362, 964, 56, 0, 232, 0, 0, 0, 702, 1561, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1450, 851, 0, 0, 0, 1878, 1635, 0, 1756, 376, 0, 417, 0, 1676, 630, 0, 21, 920, 108, 1679, 0, 1770, 160, 0, 829, 1828, 0, 0, 0, 464, 1067, 0, 1607, 322, 727, 12, 0, 0, 618, 0, 287, 0, 0, 0, 240, 1593, 531, 449, 810, 0, 0, 0, 0, 0, 551, 0, 733, 0, 0, 283, 1796, 0, 192, 0, 0, 559, 1213, 0, 0, 0, 0, 204, 146, 28, 236, 1875, 0, 680, 0, 761, 410, 0, 0, 0, 934, 638, 0, 0, 849, 0, 1286, 81, 0, 928, 1931, 0, 1762, 0, 1485, 1203, 1771, 0, 478, 50, 159, 382, 0, 824, 0, 0, 216, 0, 347, 0, 0, 0, 0, 446, 925, 0, 295, 1874, 0, 1142, 0, 0, 908, 0, 419, 0, 1394, 80, 0, 0, 1697, 0, 415, 0, 0, 1691, 0, 0, 0, 0, 0, 0, 360, 0, 0, 200, 77, 726, 284, 1501, 483, 0, 0, 0, 0, 0, 164, 667, 664, 586, 578, 1911, 99, 1737, 0, 0, 950, 0, 361, 0, 0, 0, 23, 0, 0, 219, 1677, 0, 462, 0, 0, 0, 0, 732, 54, 248, 548, 1738, 0, 0, 0, 0, 0, 0, 308, 0, 0, 0, 274, 0, 0, 0, 123, 0, 0, 665, 670, 468, 747, 0, 906, 1407, 0, 257, 1439, 858, 85, 404, 269, 1783, 858, 774, 115, 0, 0, 0, 321, 1625, 1621, 298, 0, 224, 0, 0, 369, 707, 881, 534, 822, 0, 0, 1794, 488, 0, 0, 0, 655, 743, 0, 965, 472, 1548, 564, 0, 0, 306, 1205, 1759, 0, 789, 0, 962, 0, 0, 583, 359, 0, 0, 0, 0, 823, 1986, 615, 1120, 257, 709, 0, 0, 0, 1748, 0, 233, 0, 0, 0, 0, 0, 1700, 0, 0, 560, 855, 219, 165, 0, 0, 52, 0, 413, 360, 0, 0, 0, 0, 722, 126, 231, 0, 0, 0, 808, 0, 0, 0, 0, 0, 1487, 1953, 1706, 1474, 0, 1126, 1429, 1790, 0, 659, 0, 0, 1369, 40, 1193, 185, 0, 1141, 0, 255, 0, 0, 0, 0, 1671, 0, 0, 1131, 242, 0, 732, 0, 0, 0, 1746, 0, 1681, 0, 1505, 0, 0, 0, 515, 0, 0, 0, 1288, 0, 343, 0, 0, 0, 217, 0, 88, 1921, 0, 0, 0, 0, 832, 941, 0, 0, 180, 0, 161, 0, 0, 153, 233, 0, 700, 0, 205, 209, 1267, 0, 1502, 159, 0, 0, 1886, 6, 0, 0, 1809, 0, 126, 1572, 613, 1901, 0, 348, 1853, 0, 0, 285, 1081, 0, 1324, 0, 1659, 922, 0, 1622, 0, 0, 464, 229, 913, 0, 1136, 335, 248, 0, 138, 0, 0, 0, 393, 0, 779, 820, 144, 0, 0, 531, 1, 0, 0, 0, 0, 0, 1833, 1993, 1902, 0, 0, 912, 0, 0, 332, 331, 0, 328, 776, 1931, 0, 0, 0, 450, 1837, 0, 0, 0, 158, 0, 411, 0, 549, 413, 0, 0, 0, 0, 624, 1412, 0, 0, 353, 361, 0, 1615, 1557, 445, 0, 0, 78, 107, 402, 0, 0, 0, 1767, 0, 1709, 600, 0, 735, 810, 0, 0, 0, 414, 1102, 193, 224, 0, 0, 0, 431, 1000, 701, 454, 312, 702, 849, 224, 1853, 0, 811, 1459, 499, 0, 880, 562, 66, 0, 1520, 0, 0, 0, 0, 730, 0, 0, 1189, 590, 404, 0, 0, 0, 210, 136, 0, 0, 687, 789, 256, 0, 630, 626, 0, 364, 0, 314, 0, 0, 638, 1645, 0, 1697, 1740, 0, 0, 87, 15, 381, 370, 27, 0, 564, 557, 1655, 257, 48, 0, 902, 269, 239, 0, 1726, 1214, 1464, 292, 1055, 65, 275, 451, 0, 0, 0, 0, 848, 414, 246, 716, 31, 0, 0, 0, 119, 658, 0, 474, 0, 1004, 127, 825, 592, 240, 1249, 0, 0, 0, 766, 0, 558, 0, 1656, 0, 1360, 0, 1913, 0, 50, 0, 0, 129, 229, 0, 0, 130, 0, 371, 550, 0, 535, 0, 911, 0, 456, 835, 0, 238, 0, 878, 0, 617, 0, 810, 1839, 138, 1161, 1347, 0, 906, 214, 265, 0, 796, 556, 876, 1852, 262, 1649, 358, 713, 934, 0, 0, 237, 258, 575, 106, 0, 0, 821, 1088, 826, 0, 0, 516, 384, 0, 1747, 0, 1397, 808, 366, 0, 252, 145, 752, 49, 0, 1976, 521, 0, 0, 1076, 180, 799, 1930, 14, 1046, 510, 0, 0, 137, 0, 0, 0, 481, 0, 704, 366, 0, 0, 0, 681, 379, 0, 0, 692, 479, 0, 0, 0, 0, 0, 891, 0, 1401, 684, 561, 0, 698, 0, 512, 1930, 0, 286, 1460, 0, 0, 0, 614, 0, 563, 0, 0, 0, 0, 0, 0, 730, 844, 1220, 0, 124, 605, 1049, 1739, 20, 194, 0, 100, 0, 0, 0, 24, 0, 0, 805, 129, 22, 1910, 425, 1857, 530, 870, 243, 0, 590, 492, 850, 1783, 497, 1967, 0, 1693, 348, 0, 0, 0, 86, 0, 1698, 799, 677, 48, 0, 0, 0, 566, 0, 102, 793, 0, 60, 905, 0, 0, 251, 672, 342, 194, 0, 685, 439, 1509, 0, 764, 0, 0, 1277, 0, 1528, 0, 1633, 176, 0, 766, 0, 200, 0, 1746, 380, 1014, 288, 1907, 0, 553, 0, 0, 0, 1736, 1607, 0, 0, 21, 615, 0, 860, 750, 0, 0, 369, 451, 0, 1993, 669, 123, 0, 0, 841, 96, 1793, 0, 964, 153, 595, 192, 0, 583, 666, 0, 0, 0, 0, 280, 27, 0, 0, 375, 0, 469, 0, 0, 0, 1594, 595, 1949, 0, 0, 356, 1885, 359, 447, 0, 589, 226, 1785, 1298, 0, 480, 0, 0, 0, 1364, 250, 832, 0, 600, 0, 804, 234, 149, 395, 0, 0, 188, 1499, 366, 594, 152, 0, 728, 1960, 1824, 0, 0, 0, 1413, 401, 620, 0, 1125, 0, 509, 790, 0, 273, 0, 305, 1016, 1409, 0, 0, 856, 325, 375, 1609, 0, 317, 788, 375, 0, 0, 379, 1693, 0, 0, 1462, 165, 874, 1997, 420, 0, 459, 228, 0, 0, 0, 0, 0, 0, 0, 836, 0, 1992, 1922, 0, 849, 0, 1610, 345, 437, 0, 739, 643, 289, 0, 0, 867, 366, 0, 1999, 660, 15, 0, 0, 555, 0, 0, 0, 1248, 420, 0, 0, 511, 353, 469, 1877, 440, 0, 0, 1960, 755, 819, 426, 814, 92, 0, 1362, 0, 723, 709, 1410, 70, 0, 854, 252, 632, 99, 1748, 381, 882, 0, 679, 0, 255, 197, 1000, 0, 0, 1584, 1473, 84, 0, 6, 0, 878, 1098, 0, 335, 254, 461, 0, 86, 0, 66, 0, 610, 385, 1782, 0, 0, 405, 0, 1872, 0, 1705, 0, 516, 1748}; 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 %= 2000; } return mangledkG[sum]; } int MangledPerfectHash(const char *key) { if (strlen(key) > 37) return 0; return (MangledHashG(key, mangledkT1) + MangledHashG(key, mangledkT2)) % 2000; } constexpr int unmangledkT1[] = {106, 74, 160, 233, 129, 60, 173, 200, 22, 250, 77, 232, 216, 212, 46, 117, 211, 120, 41, 5, 26, 229, 270, 162, 1, 143}; constexpr int unmangledkT2[] = {115, 145, 241, 228, 32, 82, 122, 36, 100, 26, 40, 279, 197, 70, 264, 76, 72, 204, 184, 115, 8, 56, 64, 272, 72, 217}; constexpr int unmangledkG[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 0, 0, 61, 242, 0, 17, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 259, 99, 0, 0, 0, 139, 0, 174, 4, 0, 0, 120, 0, 0, 83, 83, 280, 0, 51, 119, 44, 0, 0, 0, 0, 212, 0, 0, 125, 240, 79, 42, 0, 224, 268, 0, 165, 120, 168, 87, 0, 0, 0, 0, 261, 143, 0, 132, 0, 101, 235, 57, 24, 92, 0, 94, 55, 95, 0, 85, 189, 257, 0, 280, 0, 0, 0, 0, 0, 217, 0, 39, 0, 62, 0, 215, 166, 0, 182, 13, 0, 243, 121, 110, 228, 239, 84, 0, 0, 0, 0, 160, 9, 0, 0, 0, 90, 89, 0, 0, 72, 105, 215, 211, 230, 0, 0, 0, 0, 0, 0, 0, 77, 0, 132, 90, 133, 156, 249, 0, 0, 0, 40, 72, 254, 0, 131, 12, 0, 0, 0, 48, 0, 268, 0, 0, 116, 182, 80, 0, 2, 131, 133, 0, 0, 0, 47, 0, 0, 114, 129, 0, 0, 116, 6, 0, 251, 152, 0, 81, 30, 0, 128, 0, 175, 189, 0, 142, 182, 60, 238, 0, 29, 0, 54, 0, 0, 0, 22, 58, 0, 9, 240, 16, 14, 69, 0, 151, 0, 274, 180, 18, 188, 2, 3, 217, 91, 0, 3, 200, 125, 0, 21, 51, 0, 0, 21, 68, 136, 0, 0, 110, 166, 101, 148, 53, 201, 59, 93, 0, 109, 173, 214, 239, 0, 262, 50, 0, 256, 218, 269, 96, 263, 48, 223, 52, 144, 0, 84, 0, 0, 204, 277, 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 %= 281; } return unmangledkG[sum]; } int UnmangledPerfectHash(const char *key) { if (strlen(key) > 26) return 0; return (UnmangledHashG(key, unmangledkT1) + UnmangledHashG(key, unmangledkT2)) % 281; } } // 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(1099511628211ull); template <> const size_t ImmutableString::FowlerNollVoHash<8>::kFnvOffsetBasis = static_cast(0xcbf29ce484222325ull); uint32_t ImmutableString::mangledNameHash() const { return MangledPerfectHash(data()); } uint32_t ImmutableString::unmangledNameHash() const { return UnmangledPerfectHash(data()); } } // namespace sh