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.
4 //
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.
8 //
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
12
13 #include "compiler/translator/ImmutableString.h"
14
operator <<(std::ostream & os,const sh::ImmutableString & str)15 std::ostream &operator<<(std::ostream &os, const sh::ImmutableString &str)
16 {
17 return os.write(str.data(), str.length());
18 }
19
20 #if defined(_MSC_VER)
21 # pragma warning(disable : 4309) // truncation of constant value
22 #endif
23
24 namespace
25 {
26
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};
161
MangledHashG(const char * key,const int * T)162 int MangledHashG(const char *key, const int *T)
163 {
164 int sum = 0;
165
166 for (int i = 0; key[i] != '\0'; i++)
167 {
168 sum += T[i] * key[i];
169 sum %= 2000;
170 }
171 return mangledkG[sum];
172 }
173
MangledPerfectHash(const char * key)174 int MangledPerfectHash(const char *key)
175 {
176 if (strlen(key) > 37)
177 return 0;
178
179 return (MangledHashG(key, mangledkT1) + MangledHashG(key, mangledkT2)) % 2000;
180 }
181
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};
202
UnmangledHashG(const char * key,const int * T)203 int UnmangledHashG(const char *key, const int *T)
204 {
205 int sum = 0;
206
207 for (int i = 0; key[i] != '\0'; i++)
208 {
209 sum += T[i] * key[i];
210 sum %= 281;
211 }
212 return unmangledkG[sum];
213 }
214
UnmangledPerfectHash(const char * key)215 int UnmangledPerfectHash(const char *key)
216 {
217 if (strlen(key) > 26)
218 return 0;
219
220 return (UnmangledHashG(key, unmangledkT1) + UnmangledHashG(key, unmangledkT2)) % 281;
221 }
222
223 } // namespace
224
225 namespace sh
226 {
227
228 template <>
229 const size_t ImmutableString::FowlerNollVoHash<4>::kFnvPrime = 16777619u;
230
231 template <>
232 const size_t ImmutableString::FowlerNollVoHash<4>::kFnvOffsetBasis = 0x811c9dc5u;
233
234 template <>
235 const size_t ImmutableString::FowlerNollVoHash<8>::kFnvPrime =
236 static_cast<size_t>(1099511628211ull);
237
238 template <>
239 const size_t ImmutableString::FowlerNollVoHash<8>::kFnvOffsetBasis =
240 static_cast<size_t>(0xcbf29ce484222325ull);
241
mangledNameHash() const242 uint32_t ImmutableString::mangledNameHash() const
243 {
244 return MangledPerfectHash(data());
245 }
246
unmangledNameHash() const247 uint32_t ImmutableString::unmangledNameHash() const
248 {
249 return UnmangledPerfectHash(data());
250 }
251
252 } // namespace sh
253