// GENERATED FILE - DO NOT EDIT.
// Generated by gen_builtin_symbols.py using data from builtin_variables.json and
// builtin_function_declarations.txt.
//
// Copyright 2019 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// ImmutableString_ESSL_autogen.cpp: Wrapper for static or pool allocated char arrays, that are
// guaranteed to be valid and unchanged for the duration of the compilation. Implements
// mangledNameHash using perfect hash function from gen_builtin_symbols.py

#include "compiler/translator/ImmutableString.h"

std::ostream &operator<<(std::ostream &os, const sh::ImmutableString &str)
{
    return os.write(str.data(), str.length());
}

#if defined(_MSC_VER)
#    pragma warning(disable : 4309)  // truncation of constant value
#endif

namespace
{

constexpr int mangledkT1[] = {179, 465, 780,  37,   427,  988,  839,  569,  1032, 221,
                              251, 467, 1589, 703,  528,  1241, 1408, 255,  1521, 1362,
                              620, 967, 982,  1547, 1602, 1192, 277,  1199, 294,  822,
                              265, 167, 1299, 1659, 1357, 205,  530};
constexpr int mangledkT2[] = {329,  825,  1399, 348, 282, 1332, 1006, 1217, 826, 518,
                              1610, 399,  1114, 534, 22,  873,  1193, 1375, 859, 17,
                              546,  1240, 208,  558, 123, 1357, 861,  60,   341, 939,
                              181,  1606, 1280, 498, 336, 1172, 198};
constexpr int mangledkG[]  = {
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    694,  0,    1577, 738,
    0,    1483, 0,    0,    0,    0,    0,    0,    0,    560,  0,    724,  0,    0,    0,    0,
    1654, 1576, 0,    0,    41,   0,    1405, 126,  1034, 0,    376,  0,    987,  0,    0,    45,
    562,  1287, 0,    0,    1305, 0,    0,    177,  0,    0,    0,    997,  0,    351,  0,    1427,
    0,    0,    344,  0,    0,    0,    0,    1476, 0,    0,    1537, 194,  0,    0,    0,    0,
    10,   0,    0,    0,    0,    1531, 0,    0,    1415, 0,    0,    0,    0,    0,    144,  0,
    0,    0,    1104, 0,    1497, 0,    0,    0,    1222, 976,  0,    33,   1602, 1097, 929,  0,
    951,  626,  0,    0,    0,    0,    259,  0,    0,    0,    357,  0,    880,  0,    1452, 0,
    753,  0,    0,    0,    0,    0,    0,    0,    1295, 1486, 24,   0,    629,  0,    714,  491,
    0,    523,  0,    555,  1127, 37,   0,    0,    0,    0,    0,    544,  174,  0,    396,  1031,
    0,    543,  1629, 374,  0,    593,  0,    0,    0,    0,    0,    0,    0,    1183, 0,    0,
    0,    260,  582,  0,    0,    0,    1651, 0,    0,    0,    645,  0,    273,  0,    583,  0,
    1576, 544,  1610, 1549, 0,    0,    692,  1293, 0,    294,  0,    1483, 0,    1663, 0,    1520,
    0,    0,    624,  0,    1511, 482,  699,  34,   1263, 43,   768,  869,  857,  0,    0,    183,
    0,    1417, 546,  152,  0,    0,    0,    0,    598,  0,    0,    1628, 0,    329,  0,    0,
    530,  1258, 556,  774,  1608, 0,    590,  0,    0,    0,    1435, 0,    542,  0,    1574, 0,
    0,    51,   0,    0,    493,  377,  1228, 0,    0,    921,  0,    0,    0,    0,    1463, 721,
    0,    0,    0,    1478, 1633, 0,    0,    1115, 1348, 165,  0,    171,  0,    0,    0,    194,
    0,    0,    0,    167,  0,    0,    533,  194,  1162, 0,    0,    1192, 0,    972,  405,  401,
    268,  0,    784,  1226, 0,    1275, 0,    561,  0,    0,    0,    385,  0,    541,  1175, 243,
    136,  241,  1021, 0,    315,  0,    359,  151,  331,  0,    37,   0,    1060, 0,    105,  0,
    0,    310,  0,    0,    0,    0,    0,    0,    0,    596,  0,    0,    0,    791,  0,    836,
    0,    904,  81,   1155, 744,  0,    173,  0,    0,    0,    0,    0,    0,    84,   907,  577,
    0,    0,    0,    464,  0,    25,   689,  0,    0,    375,  0,    0,    0,    0,    0,    1115,
    415,  369,  1125, 527,  0,    0,    667,  495,  951,  1175, 0,    0,    0,    1045, 0,    0,
    0,    159,  0,    899,  0,    0,    40,   915,  728,  1621, 125,  683,  669,  0,    63,   35,
    934,  1015, 1084, 0,    0,    603,  364,  0,    169,  1264, 1552, 0,    0,    0,    0,    0,
    0,    0,    0,    0,    1410, 0,    522,  776,  0,    0,    947,  221,  1515, 1094, 1199, 645,
    0,    37,   1611, 0,    454,  0,    0,    0,    0,    0,    0,    0,    187,  903,  1269, 1302,
    528,  0,    395,  0,    0,    0,    0,    839,  815,  0,    1365, 0,    0,    1630, 1056, 0,
    0,    0,    364,  0,    293,  1580, 0,    586,  0,    0,    1070, 820,  0,    0,    127,  81,
    0,    0,    0,    0,    1588, 0,    1389, 1570, 1295, 0,    57,   0,    332,  1621, 0,    1238,
    155,  0,    608,  0,    0,    0,    0,    493,  0,    0,    0,    198,  745,  825,  636,  0,
    0,    0,    665,  0,    0,    661,  585,  1586, 0,    0,    1559, 0,    0,    649,  0,    1391,
    0,    321,  0,    1636, 999,  1280, 902,  1592, 0,    0,    0,    0,    0,    0,    263,  1206,
    0,    0,    1662, 1397, 26,   928,  0,    842,  1466, 1269, 648,  0,    935,  854,  0,    415,
    1040, 0,    0,    25,   644,  0,    0,    0,    1183, 172,  1442, 0,    1345, 0,    474,  365,
    139,  0,    1099, 120,  0,    0,    0,    0,    152,  834,  663,  925,  0,    0,    0,    0,
    1283, 0,    0,    0,    0,    0,    1034, 227,  1146, 635,  898,  1029, 7,    721,  230,  280,
    0,    1096, 0,    0,    776,  477,  0,    0,    386,  1100, 468,  0,    0,    405,  82,   520,
    0,    630,  0,    0,    0,    628,  461,  531,  1241, 0,    1164, 1481, 318,  563,  0,    0,
    916,  1503, 681,  208,  0,    736,  0,    0,    0,    459,  358,  1287, 0,    0,    1048, 1019,
    0,    415,  0,    0,    0,    8,    0,    0,    0,    0,    0,    0,    255,  0,    1593, 85,
    1529, 952,  179,  1283, 21,   464,  0,    0,    196,  1288, 21,   1348, 0,    0,    449,  0,
    1428, 1215, 1594, 0,    1541, 0,    0,    0,    0,    0,    0,    0,    20,   0,    436,  784,
    0,    864,  0,    0,    0,    1370, 0,    71,   0,    0,    85,   777,  0,    1227, 1527, 997,
    748,  1593, 1457, 283,  103,  770,  344,  0,    0,    1576, 0,    884,  0,    871,  656,  0,
    244,  730,  123,  591,  0,    675,  217,  187,  1129, 792,  210,  208,  446,  0,    0,    810,
    250,  1044, 0,    1198, 492,  0,    0,    1566, 0,    0,    0,    0,    0,    291,  0,    280,
    142,  0,    0,    0,    766,  0,    648,  0,    0,    637,  0,    396,  0,    1495, 290,  561,
    1442, 594,  1526, 0,    0,    0,    0,    1442, 0,    512,  0,    0,    0,    415,  0,    1658,
    0,    754,  46,   1489, 463,  0,    889,  887,  1535, 0,    506,  336,  856,  0,    1550, 1435,
    0,    227,  1646, 1095, 155,  1253, 0,    1496, 116,  0,    0,    0,    266,  0,    1022, 0,
    0,    558,  0,    25,   418,  422,  965,  991,  33,   1588, 195,  234,  0,    0,    193,  0,
    693,  0,    277,  0,    0,    0,    0,    0,    0,    193,  0,    0,    883,  363,  295,  0,
    0,    642,  0,    204,  0,    0,    572,  634,  0,    0,    975,  704,  0,    1413, 1458, 809,
    0,    963,  1387, 830,  1197, 1656, 0,    0,    1125, 1338, 18,   649,  540,  1474, 1618, 1475,
    0,    1073, 0,    526,  0,    0,    0,    409,  0,    728,  0,    0,    0,    1081, 207,  465,
    760,  0,    0,    0,    364,  396,  755,  0,    0,    0,    1387, 378,  1565, 557,  0,    0,
    76,   0,    0,    938,  398,  381,  141,  630,  0,    1013, 733,  0,    522,  0,    0,    0,
    0,    914,  0,    0,    1288, 0,    124,  644,  367,  727,  779,  0,    330,  345,  846,  1460,
    881,  512,  0,    770,  0,    0,    0,    464,  1202, 0,    708,  0,    0,    0,    577,  922,
    0,    71,   1316, 528,  496,  128,  0,    850,  0,    0,    294,  1426, 0,    0,    44,   623,
    1062, 0,    0,    242,  0,    0,    1507, 0,    1542, 207,  0,    1353, 0,    0,    0,    1173,
    364,  1666, 225,  0,    534,  1582, 586,  0,    699,  249,  0,    0,    99,   166,  1231, 0,
    0,    236,  0,    983,  0,    354,  0,    0,    312,  0,    0,    139,  0,    0,    1523, 930,
    0,    1026, 1017, 0,    0,    1599, 1644, 0,    0,    11,   218,  412,  0,    277,  64,   339,
    1069, 115,  0,    843,  72,   331,  0,    1116, 993,  0,    222,  473,  0,    393,  77,   0,
    10,   273,  1229, 1182, 0,    277,  0,    246,  732,  0,    0,    923,  0,    863,  760,  1202,
    251,  676,  0,    0,    0,    778,  11,   0,    1642, 861,  227,  0,    477,  38,   1048, 1547,
    1444, 857,  0,    1238, 221,  340,  190,  0,    1389, 130,  1041, 1232, 0,    903,  302,  716,
    529,  1177, 1627, 84,   1591, 592,  520,  0,    0,    0,    62,   0,    180,  0,    0,    187,
    0,    0,    0,    0,    1059, 1137, 0,    1483, 0,    705,  370,  0,    944,  1303, 804,  401,
    489,  0,    1313, 1494, 652,  0,    0,    306,  308,  690,  909,  1006, 1249, 0,    199,  1116,
    987,  905,  407,  0,    232,  393,  114,  1399, 0,    850,  148,  471,  513,  0,    615,  56,
    409,  787,  4,    936,  0,    0,    1581, 0,    707,  0,    0,    0,    0,    0,    338,  684,
    0,    280,  0,    0,    937,  917,  1065, 0,    0,    1474, 243,  141,  0,    1494, 554,  56,
    0,    311,  480,  0,    718,  84,   0,    100,  878,  457,  1587, 1548, 0,    82,   1407, 886,
    78,   65,   708,  272,  793,  0,    0,    0,    0,    540,  1664, 660,  895,  0,    0,    0,
    466,  1501, 1452, 0,    0,    1258, 135,  0,    142,  1388, 94,   0,    0,    0,    0,    1640,
    1200, 0,    568,  796,  1624, 0,    1513, 0,    0,    779,  499,  1197, 431,  0,    1344, 402,
    591,  372,  1411, 0,    143,  0,    0,    1183, 0,    40,   739,  666,  96,   1400, 196,  0,
    126,  207,  0,    298,  353,  1592, 314,  167,  467,  791,  838,  0,    962,  0,    39,   0,
    550,  1480, 131,  242,  579,  0,    0,    446,  0,    513,  927,  0,    0,    587,  540,  1551,
    1527, 1551, 0,    679,  877,  284,  0,    1025, 371,  0,    0,    0,    1080, 151,  1564, 979,
    755,  0,    1491, 888,  1636, 32,   662,  606,  530,  795,  0,    0,    1376, 0,    926,  503,
    553,  289,  0,    0,    0,    1281, 884,  1037, 1409, 0,    0,    1046, 757,  0,    1336, 107,
    116,  0,    0,    285,  1288, 933,  1353, 0,    839,  926,  840,  514,  688,  1045, 678,  1084,
    302,  508,  0,    1312, 0,    280,  0,    388,  404,  1517, 0,    0,    120,  786,  1157, 344,
    1647, 1318, 484,  0,    763,  997,  417,  1435, 0,    516,  773,  0,    327,  55,   554,  1126,
    931,  144,  1467, 1483, 627,  1338, 1618, 1444, 1402, 121,  46,   916,  0,    0,    1667, 0,
    1620, 1114, 81,   445,  0,    0,    0,    1281, 0,    0,    609,  0,    240,  0,    0,    0,
    1148, 1449, 283,  0,    0,    746,  1314, 368,  681,  0,    397,  792,  0,    80,   0,    1497,
    76,   0,    0,    0,    0,    927,  0,    1187, 245,  1243, 1548, 215,  1066, 0,    1360, 47,
    0,    41,   739,  822,  629,  497,  0,    1326, 278,  274,  133,  124,  0,    225,  190,  0,
    0,    0,    153,  0,    654,  81,   0,    463,  0,    0,    868,  1033, 530,  769,  574,  0,
    753,  0,    181,  105,  442,  1326, 0,    0,    0,    1124, 918,  0,    0,    864,  0,    740,
    1454, 0,    0,    435,  0,    0,    604,  1651, 44,   279,  1181, 408,  140,  1511, 276,  874,
    0,    0,    309,  0,    63,   0,    380,  586,  801,  1077, 1188, 150,  0,    406,  188,  0,
    395,  17,   673,  0,    494,  306,  0,    1418, 1422, 0,    0,    0,    1057, 724,  16,   453,
    0,    0,    0,    0,    0,    0,    791,  834,  490,  1489, 0,    1132, 973,  0,    0,    241,
    501,  0,    644,  444,  657,  1381, 0,    670,  850,  0,    0,    0,    983,  0,    136,  672,
    757,  561,  356,  0,    725,  0,    0,    1096, 129,  0,    0,    0,    595,  1288, 667,  0,
    330,  1072, 1619, 0,    622,  855,  826,  921};

int MangledHashG(const char *key, const int *T)
{
    int sum = 0;

    for (int i = 0; key[i] != '\0'; i++)
    {
        sum += T[i] * key[i];
        sum %= 1672;
    }
    return mangledkG[sum];
}

int MangledPerfectHash(const char *key)
{
    if (strlen(key) > 37)
        return 0;

    return (MangledHashG(key, mangledkT1) + MangledHashG(key, mangledkT2)) % 1672;
}

constexpr int unmangledkT1[] = {277, 59,  31,  44,  197, 182, 56,  205, 196, 115, 78,  90, 14,
                                17,  268, 111, 200, 47,  166, 160, 180, 146, 157, 131, 29, 198};
constexpr int unmangledkT2[] = {65, 240, 118, 268, 65,  272, 67, 89,  124, 39,  161, 140, 164,
                                62, 37,  125, 263, 194, 237, 86, 191, 157, 254, 179, 95,  256};
constexpr int unmangledkG[]  = {
    0,   0,   0,   0,   0,   0,   0,   0,   0,   84,  0,   0,   0,   0,   0,   0,   159, 181,
    0,   158, 0,   0,   0,   52,  0,   0,   0,   0,   0,   0,   26,  111, 0,   0,   107, 0,
    0,   0,   256, 64,  27,  0,   0,   0,   0,   3,   8,   63,  146, 0,   0,   0,   181, 166,
    261, 0,   122, 0,   78,  0,   0,   24,  248, 211, 85,  0,   285, 0,   21,  191, 0,   8,
    34,  0,   0,   0,   0,   0,   136, 0,   0,   46,  0,   32,  20,  0,   0,   236, 0,   0,
    0,   0,   36,  0,   0,   193, 43,  0,   0,   0,   0,   102, 21,  88,  0,   0,   33,  0,
    165, 143, 9,   0,   162, 88,  0,   10,  63,  73,  77,  0,   0,   0,   236, 84,  0,   0,
    129, 0,   0,   9,   0,   0,   126, 0,   43,  0,   178, 0,   93,  0,   82,  267, 0,   0,
    0,   0,   181, 252, 227, 0,   17,  130, 0,   54,  0,   0,   94,  51,  59,  0,   0,   0,
    0,   38,  158, 48,  0,   0,   174, 18,  0,   0,   0,   76,  170, 38,  42,  0,   136, 284,
    0,   194, 0,   0,   135, 252, 0,   0,   106, 0,   99,  140, 226, 0,   0,   66,  0,   205,
    0,   0,   200, 0,   167, 77,  0,   0,   202, 0,   6,   98,  88,  193, 0,   30,  0,   57,
    0,   0,   64,  0,   60,  78,  1,   119, 73,  69,  0,   223, 48,  0,   0,   42,  257, 142,
    0,   264, 29,  4,   68,  285, 261, 0,   0,   19,  46,  112, 21,  14,  86,  0,   194, 77,
    0,   0,   279, 0,   145, 0,   20,  286, 103, 70,  133, 63,  54,  246, 68,  25,  23,  53,
    38,  0,   35,  95,  0,   70,  244, 0,   0,   225, 79,  284, 11,  0,   35,  0,   60};

int UnmangledHashG(const char *key, const int *T)
{
    int sum = 0;

    for (int i = 0; key[i] != '\0'; i++)
    {
        sum += T[i] * key[i];
        sum %= 287;
    }
    return unmangledkG[sum];
}

int UnmangledPerfectHash(const char *key)
{
    if (strlen(key) > 26)
        return 0;

    return (UnmangledHashG(key, unmangledkT1) + UnmangledHashG(key, unmangledkT2)) % 287;
}

}  // namespace

namespace sh
{

template <>
const size_t ImmutableString::FowlerNollVoHash<4>::kFnvPrime = 16777619u;

template <>
const size_t ImmutableString::FowlerNollVoHash<4>::kFnvOffsetBasis = 0x811c9dc5u;

template <>
const size_t ImmutableString::FowlerNollVoHash<8>::kFnvPrime =
    static_cast<size_t>(1099511628211ull);

template <>
const size_t ImmutableString::FowlerNollVoHash<8>::kFnvOffsetBasis =
    static_cast<size_t>(0xcbf29ce484222325ull);

uint32_t ImmutableString::mangledNameHash() const
{
    return MangledPerfectHash(data());
}

uint32_t ImmutableString::unmangledNameHash() const
{
    return UnmangledPerfectHash(data());
}

}  // namespace sh
