• 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[] = {1687, 1918, 1635, 89,   1810, 832, 422,  1932, 1379, 706,
28                               1114, 534,  457,  343,  605,  691, 62,   1004, 626,  1437,
29                               1528, 643,  320,  761,  1619, 653, 1176, 1843, 1558, 646,
30                               1281, 751,  996,  1673, 6,    389, 1399};
31 constexpr int mangledkT2[] = {24,   908,  260,  250,  1791, 819,  1942, 1246, 344, 255,
32                               830,  1865, 1511, 411,  312,  236,  326,  828,  951, 441,
33                               1520, 422,  1792, 1138, 106,  1636, 763,  1503, 287, 149,
34                               856,  1312, 1508, 1052, 251,  1939, 897};
35 constexpr int mangledkG[]  = {
36     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    193,  0,    0,    1354,
37     0,    0,    0,    0,    0,    0,    1121, 0,    1738, 0,    1207, 0,    0,    0,    0,    1720,
38     0,    0,    1097, 0,    0,    0,    0,    0,    0,    0,    1859, 0,    0,    0,    0,    0,
39     0,    0,    0,    1604, 0,    0,    0,    215,  0,    1963, 0,    0,    1397, 0,    52,   0,
40     0,    0,    0,    0,    0,    1606, 0,    0,    0,    0,    350,  0,    1235, 212,  0,    0,
41     0,    0,    0,    0,    1595, 0,    0,    602,  16,   0,    713,  1126, 0,    0,    0,    0,
42     0,    1739, 0,    0,    474,  0,    0,    1520, 0,    1856, 0,    0,    0,    0,    0,    0,
43     1572, 0,    0,    0,    0,    1368, 0,    119,  0,    1818, 0,    797,  0,    0,    0,    0,
44     0,    0,    0,    824,  0,    0,    0,    0,    0,    0,    1667, 0,    0,    1956, 0,    149,
45     0,    805,  0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    423,
46     0,    0,    1315, 1801, 0,    0,    969,  0,    0,    0,    0,    229,  0,    831,  0,    190,
47     0,    0,    0,    0,    640,  0,    0,    0,    0,    0,    0,    1928, 59,   720,  897,  0,
48     0,    0,    552,  0,    0,    1079, 0,    0,    0,    0,    0,    0,    0,    0,    693,  0,
49     0,    0,    922,  0,    0,    0,    0,    228,  0,    0,    0,    0,    0,    1044, 1407, 0,
50     0,    54,   0,    0,    697,  0,    630,  980,  300,  0,    450,  693,  0,    0,    0,    0,
51     0,    0,    769,  0,    11,   0,    1728, 0,    0,    1591, 723,  0,    1508, 1928, 0,    0,
52     154,  0,    1088, 0,    1573, 0,    0,    0,    0,    98,   0,    708,  0,    0,    207,  1198,
53     0,    0,    0,    1649, 404,  0,    0,    0,    0,    0,    267,  0,    242,  130,  0,    0,
54     99,   0,    598,  0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    10,   949,
55     0,    0,    112,  959,  536,  695,  1237, 0,    0,    179,  1911, 0,    0,    0,    0,    1812,
56     0,    0,    0,    0,    0,    816,  532,  624,  0,    0,    0,    0,    0,    0,    810,  0,
57     0,    973,  1068, 0,    0,    0,    127,  0,    0,    1201, 0,    1866, 0,    0,    0,    0,
58     628,  0,    0,    0,    0,    1910, 0,    1976, 835,  0,    405,  0,    0,    1220, 0,    1923,
59     305,  0,    0,    0,    955,  851,  0,    0,    0,    997,  0,    0,    0,    0,    1680, 395,
60     2,    0,    969,  668,  1411, 1876, 951,  0,    0,    0,    0,    0,    0,    0,    0,    0,
61     0,    873,  0,    0,    701,  0,    0,    525,  998,  1713, 0,    0,    537,  0,    0,    0,
62     0,    0,    0,    0,    1571, 0,    327,  0,    0,    1409, 1757, 0,    647,  1681, 0,    1861,
63     0,    0,    78,   0,    306,  523,  23,   1412, 1225, 223,  0,    0,    75,   0,    948,  0,
64     167,  1394, 0,    0,    0,    0,    254,  0,    0,    0,    0,    0,    332,  1156, 130,  0,
65     0,    370,  282,  0,    0,    420,  0,    297,  553,  0,    0,    0,    777,  0,    0,    9,
66     192,  537,  1909, 1153, 67,   0,    1881, 823,  0,    0,    10,   0,    603,  0,    187,  0,
67     0,    1604, 798,  827,  1474, 1302, 0,    1349, 893,  0,    1700, 1194, 0,    1444, 0,    0,
68     458,  680,  973,  0,    0,    0,    1195, 0,    0,    0,    220,  1053, 100,  731,  1797, 0,
69     0,    0,    680,  0,    215,  0,    1580, 470,  0,    0,    177,  685,  0,    0,    52,   0,
70     1783, 1547, 11,   446,  0,    523,  0,    0,    0,    1650, 787,  0,    1965, 0,    744,  0,
71     0,    0,    126,  0,    30,   0,    0,    0,    0,    1364, 0,    156,  1580, 1320, 0,    333,
72     0,    0,    0,    0,    0,    0,    699,  0,    990,  368,  1812, 0,    105,  0,    0,    148,
73     0,    0,    0,    759,  0,    310,  0,    0,    0,    0,    0,    0,    0,    1894, 697,  137,
74     211,  913,  328,  861,  1462, 0,    0,    885,  0,    0,    438,  0,    739,  1328, 647,  1898,
75     0,    268,  0,    0,    0,    731,  0,    1349, 1872, 0,    0,    0,    205,  0,    0,    0,
76     0,    0,    1030, 562,  0,    297,  0,    629,  835,  921,  0,    0,    344,  1740, 0,    0,
77     495,  0,    371,  0,    283,  457,  908,  361,  0,    1806, 1411, 863,  0,    0,    796,  146,
78     0,    0,    1590, 0,    0,    0,    1832, 0,    0,    0,    904,  901,  81,   938,  0,    896,
79     903,  1408, 17,   918,  0,    1827, 0,    1737, 0,    0,    1190, 0,    0,    0,    0,    0,
80     0,    1744, 0,    514,  666,  674,  0,    0,    881,  90,   1423, 515,  473,  910,  0,    0,
81     1134, 0,    425,  0,    609,  189,  682,  0,    1699, 0,    628,  156,  0,    0,    0,    0,
82     1124, 0,    0,    0,    1895, 419,  0,    0,    1767, 0,    101,  0,    0,    0,    425,  749,
83     127,  1690, 0,    1900, 0,    533,  1100, 0,    1879, 0,    0,    655,  0,    116,  0,    1734,
84     1051, 0,    521,  0,    0,    1730, 0,    1449, 0,    0,    0,    0,    1903, 0,    0,    311,
85     1006, 0,    0,    1576, 551,  142,  0,    677,  1364, 1515, 0,    0,    0,    0,    0,    1725,
86     1469, 0,    0,    351,  0,    0,    0,    793,  0,    0,    541,  1934, 636,  1010, 0,    1370,
87     0,    0,    0,    618,  1334, 1839, 0,    1002, 0,    431,  1440, 635,  0,    920,  0,    0,
88     0,    403,  0,    1945, 0,    74,   0,    0,    0,    1466, 1095, 0,    981,  0,    0,    0,
89     262,  0,    0,    1495, 0,    0,    0,    0,    1534, 1933, 0,    46,   0,    0,    0,    1393,
90     398,  1105, 0,    735,  371,  115,  39,   613,  255,  0,    1906, 0,    0,    0,    1844, 946,
91     242,  0,    0,    129,  0,    1856, 1145, 1186, 0,    939,  1693, 0,    1581, 0,    1961, 0,
92     65,   139,  984,  1401, 0,    0,    1576, 142,  1937, 0,    0,    987,  130,  889,  0,    347,
93     975,  1463, 0,    456,  1825, 1232, 103,  647,  1609, 0,    0,    0,    123,  267,  642,  0,
94     718,  0,    893,  0,    0,    1198, 602,  285,  1670, 105,  0,    0,    1247, 0,    872,  0,
95     113,  236,  0,    1227, 1217, 0,    0,    391,  0,    1959, 729,  700,  0,    1011, 0,    0,
96     0,    315,  283,  1897, 238,  0,    598,  687,  0,    0,    857,  0,    0,    637,  139,  0,
97     0,    0,    980,  695,  106,  0,    373,  269,  0,    774,  757,  0,    0,    1022, 0,    746,
98     1802, 2,    509,  0,    454,  0,    0,    934,  1615, 0,    0,    77,   0,    355,  0,    1518,
99     1138, 1333, 0,    0,    0,    0,    0,    0,    471,  441,  0,    396,  0,    682,  246,  894,
100     0,    1784, 1647, 677,  0,    847,  0,    0,    0,    0,    0,    0,    327,  0,    203,  1171,
101     266,  1459, 919,  1091, 1126, 515,  0,    1656, 469,  183,  0,    1797, 0,    809,  0,    1523,
102     71,   0,    1387, 0,    347,  0,    539,  301,  56,   110,  21,   1776, 0,    0,    0,    0,
103     0,    0,    0,    0,    0,    274,  0,    298,  1875, 0,    1362, 448,  0,    1052, 1964, 0,
104     0,    678,  0,    0,    501,  0,    0,    765,  923,  0,    539,  410,  885,  0,    261,  1240,
105     0,    446,  339,  876,  0,    616,  1186, 0,    1454, 0,    0,    876,  653,  87,   78,   406,
106     938,  1335, 0,    0,    6,    0,    0,    0,    1594, 0,    1072, 83,   0,    0,    0,    0,
107     0,    1152, 0,    995,  0,    346,  0,    366,  305,  1274, 0,    163,  0,    0,    1756, 0,
108     363,  234,  0,    280,  0,    0,    1660, 897,  0,    125,  1548, 312,  1290, 907,  0,    80,
109     0,    714,  161,  0,    0,    264,  0,    0,    0,    534,  0,    216,  0,    0,    0,    638,
110     0,    49,   0,    803,  0,    1441, 0,    475,  0,    0,    137,  1965, 1181, 0,    883,  0,
111     501,  13,   1693, 0,    924,  0,    0,    0,    536,  248,  0,    672,  0,    0,    513,  908,
112     1045, 0,    142,  374,  128,  0,    210,  1580, 833,  1602, 278,  660,  0,    0,    303,  0,
113     1569, 0,    0,    200,  0,    0,    1085, 0,    0,    0,    1896, 0,    1929, 0,    0,    451,
114     791,  0,    147,  412,  1221, 0,    970,  410,  0,    50,   13,   939,  93,   0,    774,  90,
115     0,    0,    820,  71,   987,  948,  0,    1779, 0,    1318, 475,  1759, 0,    0,    0,    104,
116     0,    0,    467,  12,   1410, 0,    909,  723,  143,  1853, 1481, 0,    773,  0,    107,  0,
117     491,  656,  0,    0,    0,    1778, 1468, 630,  0,    316,  0,    1866, 0,    1139, 919,  1848,
118     0,    1296, 4,    0,    0,    0,    633,  987,  0,    0,    0,    683,  133,  0,    728,  997,
119     190,  230,  1861, 0,    585,  634,  0,    1326, 895,  1335, 0,    0,    0,    422,  667,  221,
120     79,   1937, 0,    0,    457,  845,  1736, 500,  903,  498,  370,  1635, 1409, 9,    15,   0,
121     0,    522,  0,    518,  118,  841,  417,  0,    929,  827,  802,  0,    0,    0,    184,  1639,
122     0,    0,    1731, 261,  0,    0,    0,    886,  454,  0,    1742, 3,    0,    0,    111,  0,
123     0,    0,    552,  0,    0,    376,  966,  0,    0,    516,  254,  900,  0,    0,    0,    0,
124     499,  0,    0,    0,    889,  705,  0,    0,    255,  0,    0,    1907, 0,    1898, 0,    814,
125     0,    605,  0,    412,  222,  790,  335,  0,    0,    142,  794,  0,    0,    972,  0,    0,
126     628,  0,    109,  1553, 1153, 335,  748,  1512, 892,  1355, 1943, 801,  115,  0,    934,  228,
127     428,  0,    0,    0,    255,  0,    1865, 1531, 0,    0,    0,    0,    962,  979,  1268, 237,
128     108,  673,  0,    1560, 0,    0,    712,  1749, 0,    651,  289,  0,    108,  0,    157,  1623,
129     0,    120,  77,   990,  1706, 350,  567,  1837, 1488, 0,    169,  1498, 0,    630,  217,  200,
130     0,    0,    1818, 0,    0,    0,    0,    0,    0,    270,  1599, 632,  1505, 172,  963,  546,
131     0,    613,  929,  0,    0,    214,  1539, 0,    82,   1768, 482,  0,    0,    1957, 0,    96,
132     970,  398,  797,  688,  0,    723,  1379, 952,  661,  0,    1897, 0,    1675, 348,  0,    0,
133     0,    1027, 0,    0,    0,    0,    865,  1550, 1452, 0,    537,  0,    64,   0,    965,  408,
134     1303, 1236, 871,  0,    0,    27,   0,    0,    436,  493,  1723, 577,  1555, 0,    1868, 0,
135     400,  0,    0,    0,    0,    0,    0,    597,  303,  745,  790,  629,  1482, 1010, 737,  0,
136     0,    0,    0,    0,    0,    0,    949,  63,   1460, 753,  0,    0,    0,    435,  326,  0,
137     130,  0,    82,   703,  0,    1759, 826,  0,    0,    0,    0,    1889, 0,    114,  607,  390,
138     506,  0,    557,  1799, 921,  560,  5,    1109, 0,    430,  529,  0,    350,  573,  1399, 0,
139     1050, 592,  0,    0,    118,  446,  830,  1365, 501,  1289, 376,  232,  0,    90,   1956, 0,
140     723,  123,  0,    166,  609,  744,  0,    0,    0,    0,    956,  62,   0,    302,  530,  288,
141     0,    727,  0,    1023, 0,    1388, 1335, 0,    0,    880,  496,  315,  1521, 478,  667,  898,
142     86,   1735, 0,    1683, 178,  566,  1495, 27,   0,    0,    0,    0,    245,  266,  394,  73,
143     0,    780,  280,  577,  0,    1902, 631,  0,    1922, 60,   358,  0,    0,    836,  0,    937,
144     0,    75,   0,    526,  698,  0,    742,  1253, 0,    302,  1938, 506,  0,    862,  41,   0,
145     0,    0,    746,  102,  696,  0,    0,    473,  159,  161,  1885, 0,    15,   1035, 0,    275,
146     0,    301,  19,   0,    762,  0,    563,  286,  1117, 0,    1944, 184,  0,    1175, 760,  0,
147     0,    1737, 0,    86,   1429, 1594, 1868, 440,  560,  1114, 0,    521,  0,    599,  808,  0,
148     0,    1229, 331,  0,    316,  649,  492,  514,  425,  0,    563,  870,  479,  684,  549,  0,
149     1736, 976,  595,  786,  0,    0,    63,   0,    929,  664,  0,    0,    98,   0,    819,  590,
150     0,    1612, 0,    1444, 0,    0,    184,  297,  882,  1322, 702,  219,  1053, 247,  0,    393,
151     1705, 41,   874,  231,  0,    55,   236,  0,    411,  0,    0,    539,  0,    0,    0,    620,
152     878,  942,  329,  1729, 0,    782,  558,  0,    87,   0,    1844, 719,  0,    0,    0,    1261,
153     0,    0,    0,    234,  0,    0,    109,  351,  0,    0,    187,  0,    0,    1944, 852,  0,
154     1703, 68,   958,  5,    296,  0,    1809, 0,    427,  0,    1731, 1757, 0,    357,  1876, 697,
155     174,  0,    51,   0,    0,    0,    30,   0,    0,    0,    0,    415,  824,  1251, 0,    1648,
156     675,  389,  0,    597,  0,    724,  0,    0,    0,    0,    252,  923,  408,  0,    296,  1143,
157     0,    148,  1573, 0,    384,  893,  0,    772,  1843, 0,    375,  232,  882,  0,    619,  0,
158     690,  0,    1374, 516,  356,  0,    1889, 0,    2,    0,    0,    0,    0,    492,  86,   3,
159     0,    953,  1190, 0,    307,  433,  0,    0,    1104};
160 
MangledHashG(const char * key,const int * T)161 int MangledHashG(const char *key, const int *T)
162 {
163     int sum = 0;
164 
165     for (int i = 0; key[i] != '\0'; i++)
166     {
167         sum += T[i] * key[i];
168         sum %= 1977;
169     }
170     return mangledkG[sum];
171 }
172 
MangledPerfectHash(const char * key)173 int MangledPerfectHash(const char *key)
174 {
175     if (strlen(key) > 37)
176         return 0;
177 
178     return (MangledHashG(key, mangledkT1) + MangledHashG(key, mangledkT2)) % 1977;
179 }
180 
181 constexpr int unmangledkT1[] = {163, 200, 23,  188, 228, 164, 235, 223, 155, 227, 190, 135, 61,
182                                 36,  102, 226, 161, 44,  69,  138, 105, 177, 44,  180, 41,  256};
183 constexpr int unmangledkT2[] = {185, 17,  279, 66, 39, 191, 246, 40,  267, 239, 253, 57,  237,
184                                 78,  238, 45,  82, 49, 8,   23,  206, 264, 108, 23,  272, 147};
185 constexpr int unmangledkG[]  = {
186     0,   0,   0,   0,   0,   88,  0,   159, 0,   0,   56,  0,   142, 0,   0,   0,   80,  0,   0,
187     0,   24,  0,   0,   24,  64,  178, 0,   0,   0,   0,   0,   0,   31,  16,  129, 0,   0,   0,
188     0,   267, 0,   120, 0,   0,   84,  0,   270, 263, 101, 0,   77,  149, 0,   0,   0,   0,   0,
189     0,   0,   0,   0,   0,   0,   87,  82,  0,   113, 0,   0,   255, 92,  0,   155, 136, 0,   25,
190     52,  0,   95,  0,   91,  0,   0,   0,   169, 253, 9,   16,  104, 6,   0,   0,   0,   229, 0,
191     102, 254, 40,  0,   75,  6,   117, 253, 0,   0,   138, 0,   147, 0,   0,   0,   0,   0,   0,
192     0,   0,   47,  0,   0,   72,  0,   149, 0,   272, 62,  128, 0,   71,  169, 106, 0,   121, 57,
193     279, 0,   0,   0,   0,   98,  0,   0,   251, 55,  0,   12,  0,   143, 0,   201, 243, 58,  207,
194     0,   160, 52,  0,   0,   0,   0,   3,   0,   190, 0,   22,  0,   0,   67,  10,  56,  0,   268,
195     259, 151, 112, 0,   52,  145, 19,  104, 0,   99,  0,   0,   255, 118, 61,  0,   16,  83,  0,
196     0,   54,  16,  15,  141, 21,  0,   259, 145, 186, 92,  253, 1,   254, 97,  0,   15,  0,   212,
197     111, 18,  215, 50,  0,   0,   27,  36,  59,  157, 256, 272, 0,   267, 180, 0,   31,  0,   13,
198     0,   208, 109, 0,   0,   279, 13,  0,   0,   67,  0,   65,  84,  0,   215, 0,   0,   176, 131,
199     0,   136, 0,   273, 235, 0,   251, 43,  35,  251, 118, 49,  39,  66,  0,   180, 87,  0,   62,
200     191, 0,   8,   158, 203, 196, 58,  185, 136, 139, 126, 0,   0,   0,   0};
201 
UnmangledHashG(const char * key,const int * T)202 int UnmangledHashG(const char *key, const int *T)
203 {
204     int sum = 0;
205 
206     for (int i = 0; key[i] != '\0'; i++)
207     {
208         sum += T[i] * key[i];
209         sum %= 281;
210     }
211     return unmangledkG[sum];
212 }
213 
UnmangledPerfectHash(const char * key)214 int UnmangledPerfectHash(const char *key)
215 {
216     if (strlen(key) > 26)
217         return 0;
218 
219     return (UnmangledHashG(key, unmangledkT1) + UnmangledHashG(key, unmangledkT2)) % 281;
220 }
221 
222 }  // namespace
223 
224 namespace sh
225 {
226 
227 template <>
228 const size_t ImmutableString::FowlerNollVoHash<4>::kFnvPrime = 16777619u;
229 
230 template <>
231 const size_t ImmutableString::FowlerNollVoHash<4>::kFnvOffsetBasis = 0x811c9dc5u;
232 
233 template <>
234 const size_t ImmutableString::FowlerNollVoHash<8>::kFnvPrime =
235     static_cast<size_t>(1099511628211ull);
236 
237 template <>
238 const size_t ImmutableString::FowlerNollVoHash<8>::kFnvOffsetBasis =
239     static_cast<size_t>(0xcbf29ce484222325ull);
240 
mangledNameHash() const241 uint32_t ImmutableString::mangledNameHash() const
242 {
243     return MangledPerfectHash(data());
244 }
245 
unmangledNameHash() const246 uint32_t ImmutableString::unmangledNameHash() const
247 {
248     return UnmangledPerfectHash(data());
249 }
250 
251 }  // namespace sh
252