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_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 #ifndef ANGLE_TRANSLATOR_ESSL_ONLY
14
15 # include "compiler/translator/ImmutableString.h"
16
operator <<(std::ostream & os,const sh::ImmutableString & str)17 std::ostream &operator<<(std::ostream &os, const sh::ImmutableString &str)
18 {
19 return os.write(str.data(), str.length());
20 }
21
22 # if defined(_MSC_VER)
23 # pragma warning(disable : 4309) // truncation of constant value
24 # endif
25
26 namespace
27 {
28
29 constexpr int mangledkT1[] = {3102, 1325, 1351, 3001, 1248, 3253, 589, 739, 2360, 2951,
30 1700, 3759, 2038, 664, 3245, 3120, 1585, 527, 2294, 2587,
31 1485, 188, 2635, 932, 884, 1991, 918, 320, 2213, 3603,
32 676, 1242, 115, 2611, 2163, 2535, 3233, 54, 3230, 1500};
33 constexpr int mangledkT2[] = {1129, 226, 3871, 1567, 3267, 3307, 452, 3099, 2330, 3246,
34 3512, 1556, 3216, 909, 1679, 1812, 3619, 2551, 2821, 3333,
35 3764, 2526, 2149, 2101, 1636, 2341, 2985, 454, 627, 1307,
36 466, 537, 2536, 736, 2238, 1704, 1050, 3135, 564, 182};
37 constexpr int mangledkG[] = {
38 0, 0, 0, 0, 0, 0, 0, 0, 0, 973, 0, 0, 2762, 0, 0, 3695,
39 2780, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2474,
40 0, 616, 0, 0, 0, 0, 0, 626, 0, 0, 0, 0, 0, 242, 0, 0,
41 0, 2505, 1729, 3344, 0, 0, 362, 0, 139, 0, 0, 0, 0, 3022, 2925, 0,
42 0, 0, 0, 0, 0, 961, 0, 2450, 0, 0, 0, 0, 0, 0, 0, 0,
43 0, 1206, 0, 0, 0, 0, 0, 2292, 0, 0, 0, 0, 0, 0, 0, 0,
44 0, 0, 0, 0, 2294, 0, 0, 0, 0, 0, 0, 3243, 0, 0, 1832, 1889,
45 3015, 2347, 397, 0, 0, 0, 0, 0, 2268, 487, 1220, 0, 0, 2970, 0, 0,
46 0, 0, 0, 0, 0, 192, 1062, 0, 0, 0, 0, 0, 0, 0, 0, 1118,
47 0, 0, 1389, 0, 0, 0, 0, 3334, 0, 0, 1866, 0, 0, 0, 3268, 0,
48 0, 1397, 0, 0, 0, 0, 0, 735, 0, 0, 0, 193, 15, 0, 3158, 0,
49 0, 0, 3298, 2376, 0, 1462, 2924, 183, 0, 2649, 0, 0, 3226, 3552, 3343, 0,
50 2502, 3258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1942, 0, 0, 397,
51 1413, 2818, 0, 0, 0, 0, 2738, 2414, 3786, 0, 0, 0, 67, 0, 0, 236,
52 0, 0, 0, 0, 2668, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1223, 0,
53 0, 0, 0, 0, 264, 1411, 0, 0, 820, 0, 1770, 0, 806, 833, 0, 0,
54 1814, 3051, 0, 3651, 2100, 0, 66, 0, 878, 0, 0, 0, 1974, 854, 0, 2011,
55 0, 0, 0, 0, 3393, 1300, 0, 0, 0, 109, 0, 0, 0, 0, 3313, 0,
56 3075, 0, 0, 0, 617, 0, 0, 2650, 0, 0, 465, 3456, 152, 84, 3232, 752,
57 1075, 0, 0, 1699, 0, 224, 863, 0, 0, 0, 0, 0, 0, 2953, 0, 0,
58 0, 3203, 0, 121, 0, 2641, 0, 0, 0, 204, 0, 0, 1953, 0, 0, 0,
59 0, 3898, 3511, 0, 1586, 696, 0, 0, 2698, 0, 2432, 3277, 0, 0, 1511, 663,
60 0, 0, 1570, 0, 604, 3199, 0, 0, 1463, 393, 0, 0, 0, 0, 2089, 1937,
61 752, 0, 532, 0, 1645, 0, 939, 3461, 2351, 1982, 0, 3505, 0, 661, 0, 0,
62 0, 0, 0, 1720, 753, 3334, 0, 2086, 164, 0, 2217, 1863, 0, 0, 0, 0,
63 0, 3788, 1074, 0, 1229, 0, 403, 0, 910, 345, 0, 1835, 129, 2886, 0, 0,
64 0, 0, 2440, 2572, 0, 0, 0, 0, 0, 3718, 0, 3856, 13, 0, 2909, 449,
65 0, 0, 0, 0, 0, 3898, 0, 0, 0, 0, 0, 0, 0, 1796, 0, 3301,
66 0, 3374, 0, 0, 0, 2637, 0, 0, 0, 0, 0, 2487, 24, 1432, 0, 1127,
67 99, 0, 0, 0, 0, 3601, 3638, 2083, 0, 3667, 676, 1955, 0, 0, 0, 0,
68 0, 0, 0, 0, 0, 0, 2263, 2650, 0, 0, 813, 2872, 0, 0, 1530, 1263,
69 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 509, 2814,
70 1472, 1384, 0, 0, 0, 0, 0, 3528, 0, 0, 0, 0, 923, 649, 0, 0,
71 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 183, 0, 439,
72 1359, 0, 0, 0, 0, 1291, 167, 0, 0, 591, 0, 1224, 0, 1753, 0, 0,
73 0, 0, 418, 3560, 0, 1326, 2703, 0, 0, 2694, 0, 104, 440, 0, 0, 0,
74 0, 0, 0, 0, 0, 2005, 0, 2661, 0, 0, 2969, 1668, 3653, 0, 0, 0,
75 0, 0, 0, 3832, 0, 2835, 380, 0, 3081, 0, 0, 0, 199, 0, 653, 3303,
76 0, 3432, 0, 1524, 1795, 2718, 0, 2461, 0, 0, 1838, 0, 0, 724, 1453, 0,
77 0, 578, 2660, 2676, 1297, 0, 0, 0, 0, 3364, 0, 0, 0, 0, 0, 1997,
78 0, 0, 0, 79, 0, 319, 1270, 1804, 515, 254, 0, 0, 0, 0, 0, 0,
79 0, 0, 0, 0, 0, 0, 0, 1728, 0, 938, 2011, 1135, 419, 3847, 0, 0,
80 992, 0, 1601, 0, 0, 0, 0, 0, 3562, 867, 0, 0, 0, 27, 0, 0,
81 1426, 0, 0, 2559, 686, 0, 0, 0, 0, 608, 1880, 3358, 0, 0, 76, 0,
82 0, 0, 0, 1686, 1122, 780, 0, 0, 2811, 0, 805, 0, 3568, 3098, 0, 0,
83 0, 0, 0, 0, 0, 0, 2172, 429, 3755, 0, 819, 0, 0, 0, 538, 3871,
84 3617, 2269, 0, 147, 0, 3475, 2291, 0, 0, 868, 2865, 2720, 738, 0, 9, 766,
85 353, 2940, 521, 0, 0, 0, 0, 0, 3649, 1789, 121, 0, 0, 438, 2023, 0,
86 0, 1124, 0, 0, 0, 0, 0, 469, 3089, 0, 3837, 2214, 273, 1776, 722, 0,
87 0, 0, 0, 0, 0, 3583, 3394, 0, 0, 1302, 3405, 0, 1191, 1277, 0, 3244,
88 0, 1010, 0, 771, 775, 0, 1234, 340, 0, 0, 0, 1029, 0, 0, 1037, 306,
89 2918, 0, 0, 1276, 2437, 948, 3700, 2008, 0, 0, 0, 486, 0, 3645, 510, 287,
90 1555, 1946, 483, 0, 3344, 0, 3126, 0, 0, 0, 0, 0, 0, 0, 0, 0,
91 0, 3249, 0, 0, 0, 2124, 1044, 0, 2645, 0, 0, 0, 0, 3079, 0, 0,
92 0, 0, 0, 0, 0, 581, 3109, 0, 934, 0, 0, 0, 0, 0, 3881, 1317,
93 0, 1109, 781, 1122, 0, 1191, 1355, 3154, 0, 817, 3560, 765, 2974, 0, 0, 461,
94 2776, 1285, 154, 0, 0, 1414, 0, 0, 0, 0, 525, 0, 0, 0, 0, 0,
95 2040, 0, 1688, 1493, 342, 0, 1988, 2055, 3664, 0, 0, 0, 0, 3009, 1412, 1879,
96 0, 3385, 0, 0, 0, 2079, 0, 0, 1781, 1010, 108, 723, 0, 1690, 2810, 3783,
97 0, 3575, 0, 3907, 0, 0, 0, 0, 0, 270, 0, 0, 0, 2331, 0, 2006,
98 3770, 0, 0, 1036, 632, 0, 0, 0, 0, 2318, 0, 0, 0, 0, 3878, 1634,
99 0, 0, 1529, 0, 0, 2716, 0, 0, 0, 0, 1054, 0, 896, 0, 0, 0,
100 0, 2124, 481, 0, 2613, 0, 912, 0, 0, 3746, 305, 2703, 0, 0, 1175, 1283,
101 3886, 2628, 0, 92, 0, 0, 0, 0, 1490, 178, 0, 503, 702, 158, 0, 2096,
102 0, 0, 0, 0, 1670, 1409, 0, 0, 0, 0, 2260, 0, 0, 1825, 0, 1631,
103 635, 330, 0, 0, 1900, 2157, 3669, 3727, 1122, 2498, 0, 0, 1377, 2971, 321, 1839,
104 0, 0, 3277, 141, 2528, 0, 0, 227, 1866, 0, 0, 339, 0, 0, 404, 0,
105 2374, 1075, 2268, 1018, 2103, 0, 0, 0, 0, 0, 922, 0, 0, 2266, 0, 2027,
106 0, 3904, 0, 654, 0, 484, 2286, 0, 0, 1868, 161, 0, 3515, 255, 1416, 3170,
107 0, 0, 0, 528, 711, 1932, 0, 0, 0, 0, 288, 0, 3459, 0, 0, 0,
108 655, 0, 2951, 571, 2357, 0, 0, 0, 0, 0, 0, 0, 2590, 1535, 0, 0,
109 912, 0, 0, 0, 1011, 821, 0, 0, 1799, 0, 0, 0, 0, 0, 0, 0,
110 0, 2238, 0, 1591, 0, 3622, 2020, 2798, 0, 0, 0, 3522, 0, 87, 2687, 3437,
111 0, 0, 0, 0, 3307, 386, 2148, 0, 1410, 0, 0, 3563, 3214, 0, 0, 2854,
112 3813, 0, 480, 1560, 1760, 0, 0, 871, 0, 0, 0, 2318, 1249, 1689, 1358, 2132,
113 2163, 2945, 0, 991, 332, 2860, 139, 63, 0, 2621, 2871, 1084, 0, 0, 470, 729,
114 0, 0, 0, 0, 1442, 485, 3878, 740, 267, 0, 3366, 1, 2026, 0, 0, 214,
115 914, 2285, 0, 0, 1395, 0, 0, 0, 848, 1362, 0, 1670, 0, 0, 0, 1754,
116 0, 240, 0, 2923, 803, 0, 3737, 0, 932, 0, 2561, 0, 0, 2481, 0, 1902,
117 2426, 1238, 2118, 1248, 0, 3123, 0, 3614, 0, 0, 1562, 0, 0, 1264, 0, 0,
118 2517, 1042, 0, 1322, 1074, 397, 0, 0, 3245, 0, 307, 0, 0, 2735, 0, 0,
119 0, 2187, 3421, 0, 78, 1464, 0, 2229, 1124, 1620, 0, 1851, 1266, 3861, 3570, 2512,
120 3721, 0, 2434, 0, 898, 595, 1028, 0, 0, 674, 552, 1303, 107, 0, 2828, 1223,
121 2115, 488, 1162, 1495, 297, 1451, 0, 1263, 2406, 2547, 3691, 58, 0, 0, 901, 0,
122 188, 3764, 552, 1100, 2652, 1908, 0, 0, 3509, 2174, 0, 2721, 1608, 3120, 0, 0,
123 2208, 2502, 0, 0, 0, 141, 0, 0, 3513, 1495, 1346, 0, 0, 0, 3470, 212,
124 1489, 558, 414, 0, 286, 1218, 0, 0, 1959, 397, 0, 687, 0, 3477, 0, 1961,
125 0, 1080, 0, 3273, 3838, 2167, 0, 539, 259, 2751, 2004, 591, 1961, 0, 0, 3217,
126 2929, 0, 55, 1744, 0, 1974, 1200, 3712, 0, 1782, 437, 0, 0, 0, 0, 0,
127 2641, 1928, 0, 3837, 0, 0, 3330, 2153, 1863, 170, 55, 0, 607, 0, 157, 0,
128 1080, 622, 0, 0, 2132, 3659, 0, 0, 1926, 327, 1581, 580, 0, 1385, 0, 279,
129 0, 590, 2185, 0, 0, 3600, 655, 1765, 0, 0, 0, 2349, 0, 1604, 0, 0,
130 0, 378, 821, 0, 9, 1375, 1667, 787, 0, 0, 1331, 0, 0, 30, 1701, 3175,
131 0, 0, 520, 3496, 1961, 0, 0, 0, 2421, 328, 0, 0, 0, 705, 0, 196,
132 649, 0, 2141, 0, 0, 0, 3375, 142, 0, 1235, 467, 1317, 0, 0, 0, 2020,
133 1310, 1774, 0, 1984, 1970, 1576, 1253, 1666, 5, 0, 0, 0, 0, 3866, 1608, 1022,
134 2036, 1541, 0, 0, 3463, 2681, 0, 151, 0, 1514, 1431, 0, 0, 657, 2420, 1138,
135 0, 511, 0, 2862, 0, 0, 2112, 335, 374, 0, 1633, 3431, 2234, 0, 1917, 0,
136 0, 0, 1463, 0, 1479, 2534, 0, 0, 3101, 3053, 2960, 426, 3640, 2198, 2870, 1132,
137 3408, 0, 2876, 1012, 0, 0, 0, 0, 3071, 0, 0, 1005, 315, 44, 0, 0,
138 1002, 1920, 1183, 0, 0, 2613, 2154, 1517, 0, 3444, 0, 3593, 0, 2733, 1891, 3882,
139 40, 918, 242, 0, 3341, 1565, 2210, 1290, 1846, 3872, 2684, 1526, 58, 815, 1012, 2657,
140 1402, 0, 0, 0, 84, 2751, 0, 0, 0, 3074, 0, 3785, 1199, 0, 924, 3605,
141 0, 0, 1074, 0, 3857, 167, 2251, 0, 0, 0, 0, 0, 1650, 1696, 0, 0,
142 0, 0, 910, 2774, 1579, 643, 0, 1834, 0, 3599, 0, 0, 0, 116, 2817, 754,
143 0, 0, 0, 3835, 662, 826, 638, 0, 818, 0, 2527, 0, 0, 0, 376, 0,
144 2114, 0, 523, 2881, 1323, 3508, 293, 830, 2124, 490, 1006, 3688, 0, 3863, 2800, 0,
145 0, 878, 0, 2214, 0, 0, 210, 1404, 0, 0, 0, 0, 3177, 255, 0, 0,
146 3673, 540, 1528, 2066, 452, 1568, 1052, 2062, 0, 2630, 2504, 0, 448, 408, 0, 672,
147 1255, 720, 0, 1607, 1228, 0, 1921, 0, 0, 2585, 0, 34, 0, 0, 1571, 3473,
148 0, 315, 409, 628, 0, 0, 0, 3006, 1559, 2084, 1538, 1570, 2157, 0, 582, 0,
149 0, 1519, 0, 1262, 0, 3257, 2850, 0, 0, 1074, 0, 0, 0, 748, 1477, 1600,
150 0, 0, 0, 2851, 3302, 0, 0, 0, 0, 219, 1185, 2753, 1834, 0, 3303, 0,
151 2714, 0, 908, 0, 3167, 1033, 1614, 0, 2484, 0, 0, 138, 285, 0, 0, 83,
152 0, 1725, 1523, 0, 782, 0, 1889, 1651, 2226, 0, 2741, 1363, 1560, 0, 0, 2891,
153 0, 1451, 0, 493, 0, 2128, 403, 1797, 3240, 1981, 1644, 3337, 260, 39, 614, 1547,
154 1877, 1072, 1355, 0, 0, 0, 2458, 645, 2145, 181, 1081, 0, 0, 0, 0, 0,
155 0, 1268, 0, 0, 0, 0, 0, 693, 2656, 326, 0, 689, 582, 2199, 3405, 1820,
156 1081, 1843, 634, 0, 0, 0, 0, 3336, 0, 3418, 0, 1685, 0, 0, 0, 0,
157 1697, 2997, 2608, 409, 921, 0, 0, 624, 3482, 0, 0, 1992, 1272, 2445, 0, 0,
158 1328, 0, 989, 3597, 0, 3585, 3883, 3195, 1598, 0, 0, 1417, 0, 2660, 2003, 0,
159 0, 0, 0, 1971, 0, 431, 160, 512, 1344, 863, 0, 1273, 1499, 3397, 1480, 0,
160 0, 0, 3238, 0, 0, 1553, 0, 0, 0, 2065, 0, 143, 733, 910, 1186, 1340,
161 0, 0, 0, 1678, 0, 0, 736, 0, 2918, 699, 0, 0, 33, 478, 3397, 0,
162 2897, 2569, 2150, 701, 2982, 3486, 0, 2549, 998, 0, 2305, 412, 149, 1843, 498, 3831,
163 245, 0, 2317, 1282, 0, 0, 3008, 0, 0, 0, 771, 5, 0, 2406, 481, 333,
164 0, 3753, 0, 0, 0, 1925, 0, 1245, 2106, 133, 0, 942, 563, 1043, 0, 54,
165 0, 0, 2897, 3358, 0, 213, 1382, 0, 0, 1246, 0, 0, 3242, 0, 2560, 1193,
166 1880, 3657, 0, 0, 0, 0, 3103, 1572, 3218, 976, 1336, 1869, 0, 3441, 0, 0,
167 0, 1761, 0, 475, 3499, 2223, 1580, 3241, 1448, 1505, 340, 2161, 971, 2778, 0, 0,
168 0, 0, 2277, 1238, 0, 0, 0, 0, 1550, 2419, 3198, 269, 0, 215, 1443, 1331,
169 0, 0, 0, 0, 312, 1759, 644, 0, 2454, 2484, 0, 1085, 2497, 1881, 0, 733,
170 2926, 2823, 2087, 0, 3876, 2674, 1042, 1476, 0, 825, 0, 0, 2309, 0, 3179, 1074,
171 0, 2737, 0, 2037, 164, 1974, 0, 0, 3615, 0, 557, 2285, 543, 0, 3274, 0,
172 0, 0, 1549, 3418, 3545, 1415, 0, 3788, 927, 3182, 0, 0, 0, 147, 0, 2151,
173 929, 0, 575, 0, 2082, 0, 0, 0, 2292, 2688, 0, 1215, 2858, 3040, 0, 0,
174 0, 727, 0, 486, 0, 0, 0, 2010, 0, 3631, 791, 3414, 2056, 0, 0, 0,
175 0, 0, 320, 0, 1929, 1448, 2701, 867, 44, 0, 827, 8, 0, 2172, 0, 3685,
176 1006, 1809, 421, 1808, 1618, 2961, 1651, 0, 2796, 0, 0, 276, 0, 141, 0, 0,
177 0, 1427, 0, 0, 3638, 0, 0, 0, 2652, 1428, 2064, 558, 3346, 0, 0, 0,
178 1444, 2779, 0, 1502, 0, 0, 7, 523, 3403, 3075, 454, 0, 0, 0, 963, 1610,
179 1687, 753, 0, 0, 0, 2369, 348, 0, 0, 0, 1220, 3088, 1970, 1862, 0, 2015,
180 0, 0, 861, 69, 947, 1072, 0, 0, 0, 2095, 1403, 0, 0, 0, 668, 3574,
181 0, 0, 1587, 0, 2643, 766, 3064, 839, 1646, 1932, 967, 0, 1379, 159, 747, 0,
182 2986, 0, 1369, 0, 0, 2173, 0, 0, 0, 2164, 2861, 0, 1971, 0, 924, 2951,
183 1118, 0, 3774, 54, 1008, 0, 3208, 0, 1540, 1133, 0, 1514, 0, 3621, 737, 3311,
184 0, 0, 0, 0, 0, 235, 1998, 776, 0, 1671, 214, 2035, 0, 0, 0, 0,
185 500, 0, 191, 0, 0, 3520, 0, 2050, 1952, 3160, 0, 2269, 222, 1112, 229, 716,
186 140, 0, 1725, 2620, 1604, 3612, 2868, 670, 1860, 1275, 1799, 123, 0, 1244, 2992, 0,
187 0, 3772, 0, 1911, 0, 2896, 1208, 52, 594, 20, 0, 0, 0, 0, 3813, 673,
188 543, 521, 2132, 0, 2137, 2681, 0, 496, 2754, 369, 0, 3887, 0, 1005, 1821, 0,
189 3674, 996, 0, 1672, 1164, 0, 1661, 3564, 564, 0, 151, 2700, 0, 0, 0, 1941,
190 683, 0, 0, 0, 2105, 0, 1640, 1792, 1356, 2551, 1462, 2050, 0, 823, 646, 0,
191 91, 0, 0, 2709, 798, 0, 1885, 3777, 0, 1968, 2045, 3416, 3606, 1968, 3614, 2815,
192 54, 2233, 0, 0, 0, 2119, 1871, 0, 1299, 217, 0, 0, 0, 753, 0, 0,
193 1621, 2166, 2026, 778, 1997, 732, 2396, 0, 0, 310, 882, 1292, 0, 886, 3716, 3263,
194 338, 0, 0, 0, 0, 3015, 3108, 2660, 1977, 0, 776, 1231, 0, 550, 432, 1992,
195 276, 0, 0, 0, 0, 0, 2115, 2554, 2917, 915, 1098, 0, 439, 0, 630, 2970,
196 0, 626, 2180, 1762, 0, 966, 66, 760, 1864, 1993, 951, 357, 0, 0, 1268, 0,
197 0, 259, 0, 0, 3066, 2879, 0, 0, 1747, 3380, 0, 1650, 352, 2055, 626, 1650,
198 0, 2663, 0, 0, 102, 0, 2088, 0, 1340, 3313, 1109, 650, 0, 0, 0, 2916,
199 3143, 972, 1052, 2786, 0, 0, 1334, 1546, 672, 381, 3707, 2004, 0, 3114, 1348, 0,
200 55, 0, 2183, 0, 2973, 1513, 1206, 0, 742, 2276, 0, 2719, 0, 0, 315, 0,
201 0, 1075, 684, 3143, 3873, 3825, 1541, 1932, 0, 1638, 0, 0, 0, 3215, 3824, 2212,
202 2929, 560, 748, 0, 1287, 3340, 410, 2005, 1419, 3408, 2366, 0, 0, 0, 2126, 3536,
203 1576, 1016, 0, 3899, 0, 593, 2370, 0, 0, 2878, 0, 40, 1304, 1411, 0, 816,
204 3294, 0, 2800, 0, 3428, 578, 3641, 3056, 129, 3496, 709, 2110, 0, 0, 1387, 69,
205 873, 3302, 3226, 0, 1736, 3183, 566, 531, 0, 3203, 687, 3338, 0, 202, 2062, 0,
206 0, 895, 0, 0, 1546, 0, 1288, 2919, 1815, 0, 0, 1287, 0, 3736, 1315, 266,
207 821, 2741, 33, 0, 3497, 0, 1059, 3896, 0, 0, 0, 1379, 1597, 118, 1255, 3567,
208 3067, 0, 3673, 1079, 0, 275, 1694, 51, 3858, 0, 353, 2263, 0, 3597, 1664, 381,
209 1902, 0, 2133, 1741, 898, 0, 1995, 0, 0, 0, 0, 843, 1864, 3428, 2262, 3349,
210 0, 2645, 1507, 725, 210, 258, 2887, 0, 681, 2731, 17, 948, 0, 2977, 0, 2370,
211 3597, 349, 2424, 2150, 3421, 2596, 1164, 210, 2153, 53, 1962, 471, 99, 2018, 1728, 0,
212 0, 2155, 2013, 595, 3828, 2895, 2329, 984, 0, 204, 453, 1341, 1667, 3773, 0, 1817,
213 0, 3108, 3707, 1093, 508, 349, 578, 0, 2159, 0, 0, 974, 2466, 3540, 0, 856,
214 3793, 1704, 1090, 0, 1657, 470, 0, 0, 1637, 2749, 0, 2442, 3890, 1344, 356, 0,
215 63, 2310, 1212, 0, 0, 1520, 2167, 1233, 0, 0, 2035, 2484, 3569, 2255, 0, 0,
216 2198, 3562, 0, 927, 1927, 1159, 0, 3827, 1770, 973, 2030, 0, 3891, 0, 0, 2649,
217 354, 0, 0, 2788, 0, 2069, 0, 52, 0, 508, 0, 418, 1919, 2246, 884, 1128,
218 571, 1174, 1465, 1946, 1264, 3418, 527, 0, 0, 0, 1243, 481, 0, 836, 2770, 1577,
219 2660, 3473, 0, 0, 71, 3828, 1713, 0, 1228, 2355, 1192, 0, 1790, 738, 0, 3738,
220 3650, 0, 73, 0, 1702, 1863, 0, 617, 0, 0, 1530, 0, 2405, 1775, 929, 0,
221 0, 0, 2080, 2768, 0, 3012, 0, 935, 0, 0, 0, 1003, 0, 3536, 0, 1845,
222 3873, 3629, 967, 0, 1653, 1452, 2371, 0, 0, 116, 1012, 2871, 0, 0, 855, 3097,
223 0, 208, 2550, 0, 2060, 0, 0, 861, 3686, 1367, 3365, 0, 0, 0, 84, 0,
224 1296, 1430, 1322, 0, 0, 0, 1698, 2567, 1659, 533, 3172, 3401, 23, 3182, 0, 1090,
225 1740, 1020, 0, 0, 0, 0, 0, 1681, 427, 2766, 2834, 2909, 1449, 197, 0, 877,
226 285, 3718, 162, 567, 1071, 75, 3783, 0, 635, 0, 2080, 1818, 0, 0, 2750, 0,
227 255, 351, 0, 0, 1196, 0, 1084, 0, 810, 2790, 0, 2276, 0, 3083, 2887, 0,
228 1301, 617, 3341, 1907, 2568, 2996, 946, 3338, 0, 1090, 898, 521, 0, 1203, 1921, 0,
229 2995, 0, 2073, 0, 3755, 0, 2973, 0, 742, 3720, 1032, 493, 42, 2256, 0, 0,
230 1189, 2243, 904, 0, 0, 0, 0, 532, 310, 2242, 0, 2165, 0, 3791, 0, 2406,
231 0, 0, 1277, 774, 1326, 662, 0, 505, 1959, 3652, 594, 999, 1303, 0, 1756, 0,
232 1077, 1337, 2229, 2158, 0, 0, 1816, 0, 348, 1764, 1873, 3387, 3181, 49, 1999, 0,
233 929, 82, 0, 0, 0, 1000, 1311, 3475, 507, 1749, 798, 1128, 0, 2962, 1515, 422,
234 1931, 256, 0, 0, 1089, 0, 392, 0, 190, 0, 0, 2007, 0, 2846, 2930, 1950,
235 0, 940, 0, 3178, 3521, 1228, 1240, 0, 515, 746, 0, 1097, 404, 1554, 3192, 388,
236 3497, 715, 1118, 3907, 2484, 1613, 786, 852, 24, 0, 1019, 0, 3664, 0, 81, 0,
237 1065, 1587, 1434, 0, 1032, 3497, 1920, 2071, 251, 1394, 0, 3717, 235, 0, 0, 3880,
238 323, 0, 0, 182, 0, 2350, 210, 56, 1538, 1135, 819, 2434, 423, 2662, 1661, 0,
239 0, 190, 0, 2191, 0, 1829, 3781, 703, 14, 0, 0, 3759, 2941, 0, 968, 0,
240 1718, 0, 2519, 3033, 1851, 797, 2103, 2602, 2372, 0, 0, 0, 0, 3672, 0, 3417,
241 0, 1068, 758, 3885, 0, 3359, 157, 0, 1456, 1946, 2636, 0, 984, 3785, 3502, 2470,
242 2911, 273, 361, 187, 559, 1561, 754, 1164, 0, 1829, 131, 0, 2173, 0, 0, 429,
243 1648, 3554, 0, 0, 0, 0, 0, 2723, 1456, 2893, 0, 3325, 920, 0, 1278, 1415,
244 870, 0, 1202, 301, 0, 0, 2119, 0, 2843, 0, 865, 1455, 3408, 1013, 0, 3761,
245 2880, 1846, 0, 1986, 1336, 0, 0, 0, 3325, 679, 2137, 0, 747, 61, 0, 3632,
246 724, 1253, 1210, 0, 1026, 543, 1075, 2140, 1769, 1444, 898, 728, 3618, 3121, 1167, 0,
247 0, 1207, 0, 832, 3100, 2689, 0, 0, 0, 0, 0, 1148, 1496, 0, 1068, 379,
248 2170, 1804, 3492, 462, 3818, 0, 1488, 1143, 1894, 1053, 0, 2106, 2699, 986, 0, 1591,
249 3767, 1635, 420, 2928, 0, 0, 0, 0, 0, 194, 0, 553, 0, 1270, 0, 1388,
250 1274, 2357, 159, 1175, 0, 2959, 2994, 0, 1557, 0, 398, 3809, 946, 1030, 0, 1274,
251 0, 870, 0, 2234, 3167, 0, 2329, 0, 1596, 0, 0, 57, 1748, 1362, 3827, 1303,
252 0, 0, 0, 3452, 0, 1579, 2160, 1638, 3335, 451, 1783, 1139, 2761, 463, 602, 0,
253 1461, 0, 1261, 146, 0, 612, 0, 0, 1987, 846, 3795, 211, 598, 0, 0, 979,
254 0, 0, 2009, 2219, 53, 2346, 3000, 658, 624, 698, 0, 3845, 2293, 0, 0, 0,
255 1642, 0, 0, 711, 2977, 2381, 470, 2439, 14, 1300, 0, 3020, 654, 0, 1307, 541,
256 467, 322, 966, 0, 3758, 3079, 0, 0, 646, 594, 2445, 0, 0, 282, 0, 1600,
257 0, 660, 430, 1050, 2570, 2336, 1306, 0, 0, 2560, 227, 0, 3467, 1714, 1026, 3810,
258 0, 2372, 0, 0, 1855, 0, 0, 1725, 3572, 3321, 0, 0, 0, 72, 448, 0,
259 1816, 0, 1048, 3814, 2844, 0, 0, 1786, 2735, 1808, 2014, 703, 0, 0, 0, 0,
260 499, 687, 3740, 0, 803, 3524, 447, 747, 456, 3216, 1880, 2958, 0, 103, 341, 812,
261 3732, 0, 216, 441, 1629, 1804, 1117, 0, 2048, 0, 0, 253, 1574, 177, 1932, 648,
262 1705, 0, 0, 1780, 3640, 236, 0, 3881, 2044, 1761, 552, 983, 465, 3346, 1482, 1918,
263 633, 1984, 2185, 2179, 996, 580, 1853, 387, 2568, 0, 1221, 0, 1881, 3433, 962, 3650,
264 1942, 0, 351, 0, 0, 0, 0, 2090, 0, 1138, 0, 1539, 1706, 127, 0, 958,
265 1263, 3282, 1796, 280, 0, 692, 0, 1164, 463, 2582, 0, 722, 0, 0, 0, 3517,
266 0, 0, 311, 1146, 2765, 0, 353, 252, 0, 0, 0, 0, 580, 0, 0, 3907,
267 420, 2946, 0, 2534, 1985, 596, 74, 10, 0, 0, 0, 0, 0, 1914, 0, 3602,
268 2121, 0, 0, 3874, 0, 1719, 507, 1037, 0, 0, 532, 0, 1720, 958, 700, 2964,
269 405, 0, 0, 0, 1373, 576, 204, 1618, 0, 0, 0, 0, 478, 2877, 104, 966,
270 0, 3745, 839, 526, 0, 66, 1675, 0, 1136, 3165, 1399, 2593, 0, 41, 783, 0,
271 0, 1271, 636, 0, 1738, 1800, 0, 2813, 530, 1144, 692, 1594, 797, 1260, 2077, 0,
272 0, 0, 0, 0, 2201, 2617, 1101, 29, 0, 3363, 474, 0, 0, 833, 980, 0,
273 623, 1926, 2010, 602, 0, 373, 1501, 784, 1252, 601, 1760, 0, 1921, 0, 0, 1690,
274 0, 549, 321, 0, 0, 1382, 1924, 869, 1, 717, 1573, 1272, 840, 67, 1776, 827,
275 246, 397, 1012, 206, 3230, 0, 557, 0, 1454, 0, 2327, 3180, 3134, 2236, 3342, 1649,
276 1942, 3752, 0, 0, 238, 510, 1887, 2231, 3144, 309, 1591, 0, 3625, 0, 1143, 0,
277 794, 0, 0, 0, 0, 0, 514, 0, 0, 0, 1699, 1158, 1604, 226, 0, 3901,
278 0, 1753, 3618, 1600, 2160, 719, 658, 0, 0, 2870, 1425, 555, 0, 321, 0, 0,
279 1282, 1168, 0, 0, 0, 0, 3295, 1959, 0, 3542, 825, 3888, 0, 2118, 0, 0,
280 513, 3796, 944, 1189, 2590, 0, 0, 3440, 0, 99, 0, 1078, 2205, 0, 0, 560,
281 3491, 562, 864, 0, 851, 3573, 1087, 0, 1405, 0, 1024, 1590, 0, 75, 3130, 0,
282 1195, 0, 784, 0, 0, 0};
283
MangledHashG(const char * key,const int * T)284 int MangledHashG(const char *key, const int *T)
285 {
286 int sum = 0;
287
288 for (int i = 0; key[i] != '\0'; i++)
289 {
290 sum += T[i] * key[i];
291 sum %= 3910;
292 }
293 return mangledkG[sum];
294 }
295
MangledPerfectHash(const char * key)296 int MangledPerfectHash(const char *key)
297 {
298 if (strlen(key) > 40)
299 return 0;
300
301 return (MangledHashG(key, mangledkT1) + MangledHashG(key, mangledkT2)) % 3910;
302 }
303
304 constexpr int unmangledkT1[] = {361, 84, 287, 107, 189, 235, 216, 268, 315, 73, 365, 67, 31,
305 103, 108, 1, 206, 276, 63, 133, 161, 27, 70, 359, 69, 354};
306 constexpr int unmangledkT2[] = {116, 270, 65, 391, 92, 345, 246, 10, 306, 20, 206, 346, 291,
307 195, 244, 398, 269, 237, 25, 394, 247, 248, 315, 180, 233, 167};
308 constexpr int unmangledkG[] = {
309 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 34, 0, 0, 0, 0,
310 0, 0, 0, 0, 0, 0, 0, 42, 391, 0, 0, 0, 0, 7, 0, 187, 0, 64, 237,
311 350, 377, 112, 192, 0, 217, 0, 133, 0, 0, 0, 0, 0, 384, 0, 0, 0, 0, 0,
312 122, 0, 107, 0, 283, 276, 9, 317, 215, 0, 147, 167, 232, 169, 15, 0, 0, 247, 25,
313 348, 0, 364, 68, 195, 0, 345, 0, 0, 154, 31, 0, 0, 180, 0, 0, 342, 321, 0,
314 0, 0, 0, 2, 244, 73, 61, 0, 0, 259, 0, 51, 178, 0, 0, 12, 28, 202, 0,
315 113, 144, 0, 0, 0, 196, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
316 0, 309, 0, 232, 56, 0, 315, 358, 0, 0, 0, 341, 21, 360, 0, 0, 0, 0, 0,
317 46, 0, 325, 17, 11, 272, 0, 0, 126, 401, 0, 85, 40, 305, 0, 0, 0, 0, 0,
318 0, 0, 7, 201, 56, 142, 405, 0, 0, 0, 339, 164, 0, 192, 0, 109, 206, 60, 40,
319 0, 0, 243, 17, 0, 145, 0, 163, 88, 0, 0, 0, 128, 0, 117, 0, 0, 0, 257,
320 285, 0, 16, 0, 191, 0, 0, 12, 0, 339, 71, 323, 21, 99, 0, 0, 187, 0, 22,
321 167, 274, 0, 258, 0, 0, 0, 17, 30, 0, 0, 0, 181, 218, 0, 0, 109, 0, 212,
322 154, 332, 54, 259, 0, 0, 0, 319, 14, 149, 82, 50, 0, 0, 15, 218, 0, 0, 0,
323 0, 123, 0, 218, 162, 0, 50, 226, 219, 0, 86, 120, 310, 197, 101, 0, 0, 0, 0,
324 127, 1, 207, 86, 0, 0, 0, 377, 0, 8, 75, 0, 0, 395, 106, 374, 0, 197, 0,
325 356, 179, 297, 0, 3, 70, 0, 164, 7, 0, 0, 136, 0, 250, 193, 0, 52, 319, 248,
326 0, 357, 112, 0, 77, 0, 0, 0, 230, 136, 81, 101, 0, 217, 0, 0, 0, 37, 0,
327 172, 0, 0, 0, 14, 175, 0, 53, 361, 0, 134, 191, 304, 43, 0, 0, 198, 0, 82,
328 0, 336, 0, 0, 0, 338, 280, 0, 386, 360, 8, 139, 87, 30, 281, 0, 0, 0, 11,
329 262, 389, 301, 236, 36, 190, 150, 0, 0, 0, 325, 0, 388, 0, 155, 33, 379, 6, 4,
330 0, 165, 129, 214, 369, 0, 0, 17};
331
UnmangledHashG(const char * key,const int * T)332 int UnmangledHashG(const char *key, const int *T)
333 {
334 int sum = 0;
335
336 for (int i = 0; key[i] != '\0'; i++)
337 {
338 sum += T[i] * key[i];
339 sum %= 407;
340 }
341 return unmangledkG[sum];
342 }
343
UnmangledPerfectHash(const char * key)344 int UnmangledPerfectHash(const char *key)
345 {
346 if (strlen(key) > 26)
347 return 0;
348
349 return (UnmangledHashG(key, unmangledkT1) + UnmangledHashG(key, unmangledkT2)) % 407;
350 }
351
352 } // namespace
353
354 namespace sh
355 {
356
357 template <>
358 const size_t ImmutableString::FowlerNollVoHash<4>::kFnvPrime = 16777619u;
359
360 template <>
361 const size_t ImmutableString::FowlerNollVoHash<4>::kFnvOffsetBasis = 0x811c9dc5u;
362
363 template <>
364 const size_t ImmutableString::FowlerNollVoHash<8>::kFnvPrime =
365 static_cast<size_t>(1099511628211ull);
366
367 template <>
368 const size_t ImmutableString::FowlerNollVoHash<8>::kFnvOffsetBasis =
369 static_cast<size_t>(0xcbf29ce484222325ull);
370
mangledNameHash() const371 uint32_t ImmutableString::mangledNameHash() const
372 {
373 return MangledPerfectHash(data());
374 }
375
unmangledNameHash() const376 uint32_t ImmutableString::unmangledNameHash() const
377 {
378 return UnmangledPerfectHash(data());
379 }
380
381 } // namespace sh
382
383 #endif // ANGLE_TRANSLATOR_ESSL_ONLY
384