| // 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 |