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