// 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,    1575, 742,
    0,    1479, 0,    0,    0,    0,    0,    0,    0,    562,  0,    724,  0,    0,    0,    0,
    1657, 438,  0,    0,    41,   0,    1403, 124,  1031, 0,    377,  0,    986,  0,    0,    42,
    565,  1283, 0,    0,    1300, 0,    0,    176,  0,    0,    0,    994,  0,    349,  0,    1423,
    0,    0,    342,  0,    0,    0,    0,    1480, 0,    0,    1004, 197,  0,    0,    0,    0,
    10,   0,    0,    0,    0,    1528, 0,    0,    1412, 0,    0,    0,    0,    0,    144,  0,
    0,    0,    1101, 0,    1489, 0,    0,    0,    1222, 978,  0,    32,   1600, 1093, 931,  0,
    953,  622,  0,    0,    0,    0,    258,  0,    0,    0,    361,  0,    880,  0,    1457, 0,
    755,  0,    0,    0,    0,    0,    0,    0,    1298, 1484, 24,   0,    633,  0,    714,  489,
    0,    523,  0,    555,  1126, 37,   0,    0,    0,    0,    0,    546,  174,  0,    394,  1034,
    0,    543,  1629, 375,  0,    593,  0,    0,    0,    0,    0,    0,    0,    1185, 0,    0,
    0,    262,  583,  0,    0,    0,    1651, 0,    0,    0,    645,  0,    271,  0,    587,  0,
    1573, 544,  1610, 1546, 0,    0,    693,  1293, 0,    294,  0,    1480, 0,    1663, 0,    1518,
    0,    0,    621,  0,    1507, 480,  698,  34,   1263, 43,   766,  869,  859,  0,    0,    182,
    0,    1418, 545,  146,  0,    0,    0,    0,    598,  0,    0,    1624, 0,    325,  0,    0,
    530,  1257, 556,  778,  1608, 0,    54,   0,    0,    0,    1102, 0,    539,  0,    1578, 0,
    0,    51,   0,    0,    491,  375,  1226, 0,    0,    924,  0,    0,    0,    0,    1460, 718,
    0,    0,    0,    1479, 1633, 0,    0,    1114, 1346, 164,  0,    171,  0,    0,    0,    732,
    0,    0,    0,    167,  0,    0,    534,  196,  1160, 0,    0,    1186, 0,    972,  403,  403,
    267,  0,    784,  1230, 0,    1273, 0,    561,  0,    0,    0,    390,  0,    541,  1178, 241,
    136,  241,  1021, 0,    317,  0,    357,  151,  329,  0,    37,   0,    1060, 0,    103,  0,
    0,    312,  0,    0,    0,    0,    0,    0,    0,    596,  0,    0,    0,    794,  0,    836,
    0,    907,  81,   1158, 742,  0,    173,  0,    0,    0,    0,    0,    0,    84,   907,  580,
    0,    0,    0,    462,  0,    25,   687,  0,    0,    373,  0,    0,    0,    0,    0,    1118,
    416,  372,  1124, 527,  0,    0,    670,  493,  954,  1173, 0,    0,    0,    1045, 0,    0,
    0,    155,  0,    899,  0,    0,    37,   915,  190,  1622, 1262, 683,  666,  0,    63,   32,
    934,  1018, 1081, 0,    0,    603,  368,  0,    169,  1264, 1549, 0,    0,    0,    0,    0,
    0,    0,    0,    0,    1408, 0,    522,  775,  0,    0,    949,  224,  1516, 1094, 1199, 645,
    0,    37,   1614, 0,    452,  0,    0,    0,    0,    0,    0,    0,    183,  907,  1266, 1304,
    528,  0,    393,  0,    0,    0,    0,    839,  813,  0,    1032, 0,    0,    1628, 1056, 0,
    0,    0,    365,  0,    291,  1581, 0,    588,  0,    0,    1071, 821,  0,    0,    127,  81,
    0,    0,    0,    0,    1591, 0,    1388, 1570, 1292, 0,    57,   0,    330,  1620, 0,    1240,
    155,  0,    608,  0,    0,    0,    0,    493,  0,    0,    0,    193,  745,  827,  636,  0,
    0,    0,    661,  0,    0,    661,  585,  1587, 0,    0,    1562, 0,    0,    651,  0,    1394,
    0,    320,  0,    1636, 998,  1285, 901,  1593, 0,    0,    0,    0,    0,    0,    262,  1207,
    0,    0,    1663, 1396, 26,   928,  0,    842,  1464, 1271, 648,  0,    934,  856,  0,    418,
    1036, 0,    0,    22,   641,  0,    0,    0,    1181, 174,  1443, 0,    1343, 0,    472,  367,
    134,  0,    1098, 122,  0,    0,    0,    0,    152,  832,  509,  927,  0,    0,    0,    0,
    1284, 0,    0,    0,    0,    0,    1031, 227,  1149, 635,  898,  1026, 7,    723,  232,  282,
    0,    1091, 0,    0,    776,  473,  0,    0,    383,  1098, 466,  0,    0,    407,  82,   518,
    0,    630,  0,    0,    0,    629,  459,  528,  1243, 0,    1164, 1485, 320,  563,  0,    0,
    382,  1500, 681,  207,  0,    735,  0,    0,    0,    464,  356,  1286, 0,    0,    1048, 1019,
    0,    416,  0,    0,    0,    8,    0,    0,    0,    0,    0,    0,    251,  0,    1594, 81,
    1530, 1485, 178,  1282, 18,   463,  0,    0,    195,  1289, 21,   1350, 0,    0,    447,  0,
    1429, 1218, 1596, 0,    1538, 1668, 0,    0,    0,    0,    0,    0,    23,   0,    434,  788,
    0,    864,  0,    0,    0,    1367, 0,    69,   0,    0,    85,   776,  0,    1229, 1524, 1000,
    748,  1593, 1454, 284,  99,   770,  344,  0,    0,    1580, 0,    885,  0,    872,  656,  0,
    246,  731,  122,  592,  0,    675,  216,  186,  1125, 794,  209,  204,  444,  0,    0,    810,
    254,  1043, 0,    1201, 490,  0,    0,    1566, 0,    0,    0,    0,    0,    824,  0,    279,
    141,  0,    0,    0,    767,  0,    645,  0,    0,    637,  0,    398,  0,    1491, 289,  563,
    1441, 600,  1526, 0,    0,    0,    0,    1440, 0,    511,  0,    0,    0,    413,  0,    1654,
    0,    754,  46,   1485, 461,  0,    889,  887,  1532, 0,    504,  335,  854,  0,    1551, 1434,
    0,    226,  1648, 1093, 154,  1249, 0,    1494, 115,  0,    0,    0,    270,  0,    1022, 0,
    0,    556,  0,    362,  416,  420,  964,  995,  34,   1590, 198,  236,  0,    0,    192,  0,
    694,  0,    273,  0,    0,    0,    0,    0,    0,    193,  0,    0,    883,  364,  294,  0,
    0,    642,  0,    202,  0,    0,    572,  635,  0,    0,    980,  704,  0,    1415, 1454, 809,
    0,    963,  1384, 825,  1200, 1660, 0,    0,    1123, 1336, 19,   649,  540,  1472, 1615, 1473,
    0,    1075, 0,    526,  0,    0,    0,    411,  0,    728,  0,    0,    0,    1080, 206,  467,
    760,  0,    0,    0,    362,  397,  755,  0,    0,    0,    251,  376,  1566, 557,  0,    0,
    76,   0,    0,    936,  396,  379,  137,  632,  0,    1012, 733,  0,    522,  0,    0,    0,
    0,    914,  0,    0,    1291, 0,    123,  641,  369,  724,  775,  0,    663,  348,  846,  1457,
    881,  514,  0,    773,  0,    0,    0,    462,  1198, 0,    1242, 0,    0,    0,    573,  922,
    0,    70,   1315, 526,  497,  128,  0,    851,  0,    0,    293,  1426, 0,    0,    44,   625,
    1062, 0,    0,    241,  0,    0,    1505, 0,    1539, 206,  0,    1352, 0,    0,    0,    1174,
    359,  1665, 224,  0,    536,  1582, 586,  0,    697,  249,  0,    0,    99,   1304, 1230, 0,
    0,    231,  0,    977,  0,    352,  0,    0,    312,  0,    0,    139,  0,    0,    1523, 930,
    0,    1027, 1014, 0,    0,    1599, 1644, 0,    0,    11,   217,  410,  0,    280,  68,   337,
    1072, 115,  0,    841,  1210, 333,  0,    1118, 1527, 0,    221,  471,  0,    394,  77,   0,
    14,   272,  1226, 1178, 0,    276,  0,    245,  732,  0,    0,    923,  0,    863,  757,  1200,
    250,  679,  0,    0,    0,    778,  8,    0,    1640, 861,  224,  0,    475,  38,   1049, 1547,
    1439, 854,  0,    1236, 1359, 338,  190,  0,    1387, 130,  1042, 1232, 0,    903,  305,  716,
    529,  1177, 1627, 84,   1591, 596,  520,  0,    0,    0,    58,   0,    179,  0,    0,    187,
    0,    0,    0,    0,    1056, 1135, 0,    1485, 0,    705,  368,  0,    943,  1303, 804,  399,
    487,  0,    1315, 1494, 653,  0,    0,    308,  306,  690,  909,  1004, 1244, 0,    197,  1117,
    983,  903,  405,  0,    230,  391,  111,  1398, 0,    853,  148,  469,  517,  0,    616,  594,
    407,  787,  4,    938,  0,    0,    1580, 0,    707,  0,    0,    0,    0,    0,    336,  682,
    0,    280,  0,    0,    934,  917,  1062, 0,    0,    1476, 246,  141,  0,    1491, 554,  52,
    0,    307,  478,  0,    718,  80,   0,    101,  881,  455,  1587, 1548, 0,    82,   1408, 886,
    78,   67,   708,  275,  791,  0,    0,    0,    0,    542,  1664, 660,  895,  0,    0,    0,
    464,  1503, 1453, 0,    0,    1254, 135,  0,    141,  1383, 94,   0,    0,    0,    0,    1643,
    1196, 0,    568,  796,  1622, 0,    1509, 0,    0,    779,  499,  1198, 429,  0,    1343, 400,
    591,  374,  1409, 0,    147,  0,    0,    1182, 0,    40,   742,  1200, 98,   1395, 195,  0,
    126,  206,  0,    295,  355,  1058, 313,  167,  465,  788,  838,  0,    960,  0,    35,   0,
    551,  1481, 131,  243,  575,  0,    0,    448,  0,    510,  929,  0,    0,    588,  542,  1549,
    1528, 1552, 0,    141,  877,  283,  0,    1024, 369,  0,    0,    0,    1078, 154,  1564, 978,
    755,  0,    1492, 888,  1638, 32,   662,  606,  532,  796,  0,    0,    1378, 0,    928,  501,
    553,  287,  0,    0,    0,    1280, 887,  1036, 1403, 0,    0,    1047, 757,  0,    1333, 107,
    115,  0,    0,    282,  1285, 933,  1355, 0,    837,  926,  840,  511,  688,  1045, 679,  1085,
    298,  509,  0,    1311, 0,    280,  0,    386,  403,  1517, 0,    0,    120,  786,  1161, 345,
    1647, 1316, 485,  0,    763,  1000, 415,  1433, 0,    517,  773,  0,    324,  53,   554,  1124,
    935,  144,  1468, 1480, 627,  1341, 1618, 1439, 1406, 120,  46,   916,  0,    0,    1667, 0,
    1620, 1113, 81,   443,  0,    0,    0,    1276, 0,    0,    609,  0,    239,  0,    0,    0,
    1147, 1452, 285,  0,    0,    747,  1312, 366,  681,  0,    395,  792,  0,    80,   0,    1498,
    1209, 0,    0,    0,    0,    927,  0,    1190, 241,  1245, 1544, 217,  1063, 0,    1357, 47,
    0,    41,   743,  822,  629,  495,  0,    1327, 277,  273,  133,  124,  0,    224,  189,  0,
    0,    0,    153,  0,    654,  81,   0,    465,  0,    0,    868,  1036, 530,  769,  574,  0,
    752,  0,    180,  105,  440,  1325, 0,    0,    0,    1122, 918,  0,    0,    863,  0,    741,
    1452, 0,    0,    437,  0,    0,    604,  1647, 44,   278,  1184, 406,  140,  1507, 275,  874,
    0,    0,    308,  0,    63,   0,    378,  588,  801,  1075, 1188, 150,  0,    407,  187,  0,
    393,  17,   673,  0,    496,  305,  0,    1415, 1419, 0,    0,    0,    1057, 725,  15,   455,
    0,    0,    0,    0,    0,    0,    791,  834,  488,  1485, 0,    1135, 973,  0,    0,    240,
    1035, 0,    644,  445,  657,  1383, 0,    670,  849,  0,    0,    0,    982,  0,    135,  675,
    758,  565,  354,  0,    725,  0,    0,    1095, 131,  0,    0,    0,    595,  1289, 667,  0,
    333,  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,   161, 182,
    0,   158, 0,   0,   0,   51,  0,   0,   0,   0,   0,   0,   26,  111, 0,   0,   106, 0,
    0,   0,   255, 64,  27,  0,   0,   0,   0,   3,   7,   64,  146, 0,   0,   0,   182, 166,
    260, 0,   121, 0,   79,  0,   0,   24,  248, 212, 84,  0,   285, 0,   19,  192, 0,   7,
    33,  0,   0,   0,   0,   0,   137, 0,   0,   46,  0,   32,  20,  0,   0,   234, 0,   0,
    0,   0,   36,  0,   0,   191, 44,  0,   0,   0,   0,   104, 21,  89,  0,   0,   31,  0,
    166, 143, 9,   0,   161, 87,  0,   10,  63,  72,  76,  0,   0,   0,   236, 83,  0,   0,
    129, 0,   0,   7,   0,   0,   125, 0,   43,  0,   179, 0,   92,  0,   81,  268, 0,   0,
    0,   0,   182, 250, 228, 0,   18,  128, 0,   54,  0,   0,   94,  51,  59,  0,   0,   0,
    0,   37,  155, 48,  0,   0,   176, 17,  0,   0,   0,   76,  169, 38,  41,  0,   136, 285,
    0,   192, 0,   0,   135, 251, 0,   0,   105, 0,   98,  139, 228, 0,   0,   64,  0,   206,
    0,   0,   198, 0,   168, 76,  0,   0,   200, 0,   6,   97,  87,  193, 0,   30,  0,   57,
    0,   0,   63,  0,   60,  78,  1,   118, 73,  67,  0,   225, 49,  0,   0,   42,  260, 142,
    0,   264, 28,  4,   67,  286, 260, 0,   0,   19,  46,  111, 21,  14,  85,  0,   195, 77,
    0,   0,   279, 0,   145, 0,   20,  286, 101, 70,  133, 63,  55,  245, 68,  25,  24,  52,
    38,  0,   34,  94,  0,   70,  243, 0,   0,   225, 126, 283, 11,  0,   35,  0,   61};

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
