• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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