// GENERATED FILE - DO NOT EDIT.
// Generated by gen_builtin_symbols.py using data from builtin_function_declarations.txt.
//
// Copyright 2018 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_test_autogen.cpp:
//   Tests for matching script-generated hashes with runtime computed hashes.

#include "compiler/translator/ImmutableString.h"
#include "gtest/gtest.h"

namespace sh
{

TEST(ImmutableStringTest, ScriptGeneratedHashesMatch)
{
    ASSERT_EQ(0xa30cdef4u, ImmutableString("frexp").hash32());
    ASSERT_EQ(0x8c63f160u, ImmutableString("ldexp").hash32());
    ASSERT_EQ(0xae0f4e53u, ImmutableString("packUnorm4x8").hash32());
    ASSERT_EQ(0x4d4a19b5u, ImmutableString("packSnorm4x8").hash32());
    ASSERT_EQ(0x33b8cbf8u, ImmutableString("unpackUnorm4x8").hash32());
    ASSERT_EQ(0x7c07f1eeu, ImmutableString("unpackSnorm4x8").hash32());
    ASSERT_EQ(0xf50788fdu, ImmutableString("bitfieldExtract").hash32());
    ASSERT_EQ(0xf81301b9u, ImmutableString("bitfieldInsert").hash32());
    ASSERT_EQ(0xe5c5029au, ImmutableString("bitfieldReverse").hash32());
    ASSERT_EQ(0x2568837fu, ImmutableString("bitCount").hash32());
    ASSERT_EQ(0x310cbdf3u, ImmutableString("findLSB").hash32());
    ASSERT_EQ(0x7ba9e270u, ImmutableString("findMSB").hash32());
    ASSERT_EQ(0xca0f40eeu, ImmutableString("uaddCarry").hash32());
    ASSERT_EQ(0xb82cbfe3u, ImmutableString("usubBorrow").hash32());
    ASSERT_EQ(0xebfef903u, ImmutableString("umulExtended").hash32());
    ASSERT_EQ(0x55fde64fu, ImmutableString("imulExtended").hash32());
    ASSERT_EQ(0x44a612d1u, ImmutableString("texelFetch").hash32());
    ASSERT_EQ(0xa3a03233u, ImmutableString("textureGather").hash32());
    ASSERT_EQ(0xb24338c0u, ImmutableString("textureGatherOffset").hash32());
    ASSERT_EQ(0xc1e02fa4u, ImmutableString("atomicCounter").hash32());
    ASSERT_EQ(0x666490f9u, ImmutableString("atomicCounterIncrement").hash32());
    ASSERT_EQ(0xd651bc5du, ImmutableString("atomicCounterDecrement").hash32());
    ASSERT_EQ(0x026813a3u, ImmutableString("atomicAdd").hash32());
    ASSERT_EQ(0x23647d3cu, ImmutableString("atomicMin").hash32());
    ASSERT_EQ(0x1150d92eu, ImmutableString("atomicMax").hash32());
    ASSERT_EQ(0xe676f219u, ImmutableString("atomicAnd").hash32());
    ASSERT_EQ(0xd2b1c53du, ImmutableString("atomicOr").hash32());
    ASSERT_EQ(0xbfd854b5u, ImmutableString("atomicXor").hash32());
    ASSERT_EQ(0xb94d85ddu, ImmutableString("atomicExchange").hash32());
    ASSERT_EQ(0xf3bd9210u, ImmutableString("atomicCompSwap").hash32());
    ASSERT_EQ(0x6ef2b1c3u, ImmutableString("imageSize").hash32());
    ASSERT_EQ(0x493c8c52u, ImmutableString("imageLoad").hash32());
    ASSERT_EQ(0x4f0e8e9bu, ImmutableString("imageStore").hash32());
    ASSERT_EQ(0x3815d075u, ImmutableString("memoryBarrier").hash32());
    ASSERT_EQ(0xb5e7ff54u, ImmutableString("memoryBarrierAtomicCounter").hash32());
    ASSERT_EQ(0x6fdf21cbu, ImmutableString("memoryBarrierBuffer").hash32());
    ASSERT_EQ(0x4dafa4aau, ImmutableString("memoryBarrierImage").hash32());
    ASSERT_EQ(0x3d693fa0u, ImmutableString("barrier").hash32());
    ASSERT_EQ(0xe85fa9e4u, ImmutableString("memoryBarrierShared").hash32());
    ASSERT_EQ(0x7afaf16eu, ImmutableString("groupMemoryBarrier").hash32());
    ASSERT_EQ(0xb5d34358u, ImmutableString("EmitVertex").hash32());
    ASSERT_EQ(0xb413b257u, ImmutableString("EndPrimitive").hash32());
    ASSERT_EQ(0x10d2583fu, ImmutableString("sinh").hash32());
    ASSERT_EQ(0xf45c461cu, ImmutableString("cosh").hash32());
    ASSERT_EQ(0x092855d0u, ImmutableString("tanh").hash32());
    ASSERT_EQ(0xbab19e4au, ImmutableString("asinh").hash32());
    ASSERT_EQ(0xedf2c855u, ImmutableString("acosh").hash32());
    ASSERT_EQ(0x07275075u, ImmutableString("atanh").hash32());
    ASSERT_EQ(0x2a48023bu, ImmutableString("abs").hash32());
    ASSERT_EQ(0x0cbc8ba4u, ImmutableString("sign").hash32());
    ASSERT_EQ(0xd55e61e5u, ImmutableString("trunc").hash32());
    ASSERT_EQ(0x4f0be23bu, ImmutableString("round").hash32());
    ASSERT_EQ(0xa4639127u, ImmutableString("roundEven").hash32());
    ASSERT_EQ(0xc98f4557u, ImmutableString("min").hash32());
    ASSERT_EQ(0xd7a2e319u, ImmutableString("max").hash32());
    ASSERT_EQ(0xa82efcbcu, ImmutableString("clamp").hash32());
    ASSERT_EQ(0xd78f5b61u, ImmutableString("mix").hash32());
    ASSERT_EQ(0xeb6ede7fu, ImmutableString("modf").hash32());
    ASSERT_EQ(0xb1b3c06au, ImmutableString("isnan").hash32());
    ASSERT_EQ(0x26ac11d8u, ImmutableString("isinf").hash32());
    ASSERT_EQ(0xb15a3cc9u, ImmutableString("floatBitsToInt").hash32());
    ASSERT_EQ(0xc8575388u, ImmutableString("floatBitsToUint").hash32());
    ASSERT_EQ(0xfc501e17u, ImmutableString("intBitsToFloat").hash32());
    ASSERT_EQ(0xc29ffa7eu, ImmutableString("uintBitsToFloat").hash32());
    ASSERT_EQ(0x4326f80au, ImmutableString("packSnorm2x16").hash32());
    ASSERT_EQ(0x6ff78d04u, ImmutableString("packUnorm2x16").hash32());
    ASSERT_EQ(0x5bd36438u, ImmutableString("packHalf2x16").hash32());
    ASSERT_EQ(0x6e02ba1bu, ImmutableString("unpackSnorm2x16").hash32());
    ASSERT_EQ(0x25680679u, ImmutableString("unpackUnorm2x16").hash32());
    ASSERT_EQ(0x28cedbc3u, ImmutableString("unpackHalf2x16").hash32());
    ASSERT_EQ(0xd5f05125u, ImmutableString("matrixCompMult").hash32());
    ASSERT_EQ(0x8f8617abu, ImmutableString("outerProduct").hash32());
    ASSERT_EQ(0xc03183c0u, ImmutableString("transpose").hash32());
    ASSERT_EQ(0x767e36c0u, ImmutableString("determinant").hash32());
    ASSERT_EQ(0xb201f283u, ImmutableString("inverse").hash32());
    ASSERT_EQ(0x05fc75c3u, ImmutableString("lessThan").hash32());
    ASSERT_EQ(0x0491f109u, ImmutableString("lessThanEqual").hash32());
    ASSERT_EQ(0x04644cdeu, ImmutableString("greaterThan").hash32());
    ASSERT_EQ(0xed7dc722u, ImmutableString("greaterThanEqual").hash32());
    ASSERT_EQ(0x2f7508efu, ImmutableString("equal").hash32());
    ASSERT_EQ(0x2485bbbeu, ImmutableString("notEqual").hash32());
    ASSERT_EQ(0x3c6468f4u, ImmutableString("texture").hash32());
    ASSERT_EQ(0x94b08f7fu, ImmutableString("textureProj").hash32());
    ASSERT_EQ(0x023feff3u, ImmutableString("textureLod").hash32());
    ASSERT_EQ(0xc73e788du, ImmutableString("textureSize").hash32());
    ASSERT_EQ(0xb755b482u, ImmutableString("textureProjLod").hash32());
    ASSERT_EQ(0x33a56e6cu, ImmutableString("textureGrad").hash32());
    ASSERT_EQ(0x7bf8de3bu, ImmutableString("textureProjGrad").hash32());
    ASSERT_EQ(0x88c917cfu, ImmutableString("textureOffset").hash32());
    ASSERT_EQ(0xa5212424u, ImmutableString("textureProjOffset").hash32());
    ASSERT_EQ(0x39d34980u, ImmutableString("textureLodOffset").hash32());
    ASSERT_EQ(0x1535b7a5u, ImmutableString("textureProjLodOffset").hash32());
    ASSERT_EQ(0x12b2640eu, ImmutableString("texelFetchOffset").hash32());
    ASSERT_EQ(0x6b0ca057u, ImmutableString("textureGradOffset").hash32());
    ASSERT_EQ(0x8b45ed38u, ImmutableString("textureProjGradOffset").hash32());
    ASSERT_EQ(0xa6789406u, ImmutableString("rgb_2_yuv").hash32());
    ASSERT_EQ(0xc7818fa2u, ImmutableString("yuv_2_rgb").hash32());
    ASSERT_EQ(0xc8859a8bu, ImmutableString("dFdx").hash32());
    ASSERT_EQ(0xc78598f8u, ImmutableString("dFdy").hash32());
    ASSERT_EQ(0x4b6e55d3u, ImmutableString("fwidth").hash32());
    ASSERT_EQ(0x18a9c042u, ImmutableString("texture2D").hash32());
    ASSERT_EQ(0xc7cb8969u, ImmutableString("texture2DProj").hash32());
    ASSERT_EQ(0xfece2a39u, ImmutableString("textureCube").hash32());
    ASSERT_EQ(0x3d4abf10u, ImmutableString("texture2DRect").hash32());
    ASSERT_EQ(0x6dc0e8e3u, ImmutableString("texture2DRectProj").hash32());
    ASSERT_EQ(0xd1836639u, ImmutableString("texture2DGradEXT").hash32());
    ASSERT_EQ(0x4040698cu, ImmutableString("texture2DProjGradEXT").hash32());
    ASSERT_EQ(0x1d18f29cu, ImmutableString("textureCubeGradEXT").hash32());
    ASSERT_EQ(0x7150ceb8u, ImmutableString("texture2DLodEXT").hash32());
    ASSERT_EQ(0xbacaedf7u, ImmutableString("texture2DProjLodEXT").hash32());
    ASSERT_EQ(0x7309b987u, ImmutableString("textureCubeLodEXT").hash32());
    ASSERT_EQ(0xfa79f401u, ImmutableString("texture2DLod").hash32());
    ASSERT_EQ(0x30ed9cfcu, ImmutableString("texture2DProjLod").hash32());
    ASSERT_EQ(0xb35e342cu, ImmutableString("textureCubeLod").hash32());
    ASSERT_EQ(0x856a57e1u, ImmutableString("radians").hash32());
    ASSERT_EQ(0xaf5442eeu, ImmutableString("degrees").hash32());
    ASSERT_EQ(0xe0302a4du, ImmutableString("sin").hash32());
    ASSERT_EQ(0xfb8de29cu, ImmutableString("cos").hash32());
    ASSERT_EQ(0x9cf73498u, ImmutableString("tan").hash32());
    ASSERT_EQ(0xfeae7ea6u, ImmutableString("asin").hash32());
    ASSERT_EQ(0x3c01df1fu, ImmutableString("acos").hash32());
    ASSERT_EQ(0x0678cabfu, ImmutableString("atan").hash32());
    ASSERT_EQ(0x58336ad5u, ImmutableString("pow").hash32());
    ASSERT_EQ(0x72a68728u, ImmutableString("exp").hash32());
    ASSERT_EQ(0x3f515151u, ImmutableString("log").hash32());
    ASSERT_EQ(0x9626adeeu, ImmutableString("exp2").hash32());
    ASSERT_EQ(0x10031ed9u, ImmutableString("log2").hash32());
    ASSERT_EQ(0x7dee3bcfu, ImmutableString("sqrt").hash32());
    ASSERT_EQ(0xe8b548a5u, ImmutableString("inversesqrt").hash32());
    ASSERT_EQ(0xb8e70c1du, ImmutableString("floor").hash32());
    ASSERT_EQ(0x62e4e208u, ImmutableString("ceil").hash32());
    ASSERT_EQ(0xeef29a67u, ImmutableString("fract").hash32());
    ASSERT_EQ(0xdf9e7283u, ImmutableString("mod").hash32());
    ASSERT_EQ(0xc7441a0fu, ImmutableString("step").hash32());
    ASSERT_EQ(0x95964e7du, ImmutableString("smoothstep").hash32());
    ASSERT_EQ(0x83d03615u, ImmutableString("length").hash32());
    ASSERT_EQ(0x2eb31462u, ImmutableString("distance").hash32());
    ASSERT_EQ(0xd3689f20u, ImmutableString("dot").hash32());
    ASSERT_EQ(0x29f5189bu, ImmutableString("cross").hash32());
    ASSERT_EQ(0xce79296cu, ImmutableString("normalize").hash32());
    ASSERT_EQ(0x5fd55fe1u, ImmutableString("faceforward").hash32());
    ASSERT_EQ(0x92c778aau, ImmutableString("reflect").hash32());
    ASSERT_EQ(0x066c705cu, ImmutableString("refract").hash32());
    ASSERT_EQ(0x2c29f04du, ImmutableString("any").hash32());
    ASSERT_EQ(0x13254bc4u, ImmutableString("all").hash32());
    ASSERT_EQ(0x29b19c8au, ImmutableString("not").hash32());
    ASSERT_EQ(0xf3de0717u, ImmutableString("frexp(0B0C").hash32());
    ASSERT_EQ(0xa30b98d3u, ImmutableString("frexp(1B1C").hash32());
    ASSERT_EQ(0x17aa3bbfu, ImmutableString("frexp(2B2C").hash32());
    ASSERT_EQ(0x7dbee433u, ImmutableString("frexp(3B3C").hash32());
    ASSERT_EQ(0x57b9431bu, ImmutableString("ldexp(0B0C").hash32());
    ASSERT_EQ(0x124f3157u, ImmutableString("ldexp(1B1C").hash32());
    ASSERT_EQ(0x94d22cc3u, ImmutableString("ldexp(2B2C").hash32());
    ASSERT_EQ(0xfae6d537u, ImmutableString("ldexp(3B3C").hash32());
    ASSERT_EQ(0x82b86afcu, ImmutableString("packUnorm4x8(3B").hash32());
    ASSERT_EQ(0x6d7cd09au, ImmutableString("packSnorm4x8(3B").hash32());
    ASSERT_EQ(0x7e0ed3ccu, ImmutableString("unpackUnorm4x8(0D").hash32());
    ASSERT_EQ(0x2bceb1c6u, ImmutableString("unpackSnorm4x8(0D").hash32());
    ASSERT_EQ(0x2c65fc52u, ImmutableString("bitfieldExtract(0C0C0C").hash32());
    ASSERT_EQ(0x301e7aa3u, ImmutableString("bitfieldExtract(1C0C0C").hash32());
    ASSERT_EQ(0x1bc77874u, ImmutableString("bitfieldExtract(2C0C0C").hash32());
    ASSERT_EQ(0x2e198dddu, ImmutableString("bitfieldExtract(3C0C0C").hash32());
    ASSERT_EQ(0x1ef52e53u, ImmutableString("bitfieldExtract(0D0C0C").hash32());
    ASSERT_EQ(0xbecd46a2u, ImmutableString("bitfieldExtract(1D0C0C").hash32());
    ASSERT_EQ(0x50828f41u, ImmutableString("bitfieldExtract(2D0C0C").hash32());
    ASSERT_EQ(0x26e63818u, ImmutableString("bitfieldExtract(3D0C0C").hash32());
    ASSERT_EQ(0xbcfd7f73u, ImmutableString("bitfieldInsert(0C0C0C0C").hash32());
    ASSERT_EQ(0x221a7f03u, ImmutableString("bitfieldInsert(1C1C0C0C").hash32());
    ASSERT_EQ(0xf4fc8897u, ImmutableString("bitfieldInsert(2C2C0C0C").hash32());
    ASSERT_EQ(0x100c00dfu, ImmutableString("bitfieldInsert(3C3C0C0C").hash32());
    ASSERT_EQ(0x6bd9dd3bu, ImmutableString("bitfieldInsert(0D0D0C0C").hash32());
    ASSERT_EQ(0x3d7510bbu, ImmutableString("bitfieldInsert(1D1D0C0C").hash32());
    ASSERT_EQ(0x70f71a0bu, ImmutableString("bitfieldInsert(2D2D0C0C").hash32());
    ASSERT_EQ(0x0a15fba3u, ImmutableString("bitfieldInsert(3D3D0C0C").hash32());
    ASSERT_EQ(0x380ee623u, ImmutableString("bitfieldReverse(0C").hash32());
    ASSERT_EQ(0xe0122d32u, ImmutableString("bitfieldReverse(1C").hash32());
    ASSERT_EQ(0xf009f79du, ImmutableString("bitfieldReverse(2C").hash32());
    ASSERT_EQ(0x100c6894u, ImmutableString("bitfieldReverse(3C").hash32());
    ASSERT_EQ(0x3d0eee02u, ImmutableString("bitfieldReverse(0D").hash32());
    ASSERT_EQ(0xdb122553u, ImmutableString("bitfieldReverse(1D").hash32());
    ASSERT_EQ(0xe909ec98u, ImmutableString("bitfieldReverse(2D").hash32());
    ASSERT_EQ(0x0f0c6701u, ImmutableString("bitfieldReverse(3D").hash32());
    ASSERT_EQ(0x3827bbd4u, ImmutableString("bitCount(0C").hash32());
    ASSERT_EQ(0x18254addu, ImmutableString("bitCount(1C").hash32());
    ASSERT_EQ(0x082bed72u, ImmutableString("bitCount(2C").hash32());
    ASSERT_EQ(0x602a3963u, ImmutableString("bitCount(3C").hash32());
    ASSERT_EQ(0x3727ba41u, ImmutableString("bitCount(0D").hash32());
    ASSERT_EQ(0x11253fd8u, ImmutableString("bitCount(1D").hash32());
    ASSERT_EQ(0x032be593u, ImmutableString("bitCount(2D").hash32());
    ASSERT_EQ(0x652a4142u, ImmutableString("bitCount(3D").hash32());
    ASSERT_EQ(0xc1b44a60u, ImmutableString("findLSB(0C").hash32());
    ASSERT_EQ(0xa1b1d969u, ImmutableString("findLSB(1C").hash32());
    ASSERT_EQ(0x91ba0efeu, ImmutableString("findLSB(2C").hash32());
    ASSERT_EQ(0xe9b6c7efu, ImmutableString("findLSB(3C").hash32());
    ASSERT_EQ(0xc8b45565u, ImmutableString("findLSB(0D").hash32());
    ASSERT_EQ(0xa2b1dafcu, ImmutableString("findLSB(1D").hash32());
    ASSERT_EQ(0x94ba13b7u, ImmutableString("findLSB(2D").hash32());
    ASSERT_EQ(0xe6b6c336u, ImmutableString("findLSB(3D").hash32());
    ASSERT_EQ(0x129034f1u, ImmutableString("findMSB(0C").hash32());
    ASSERT_EQ(0x3292a5e8u, ImmutableString("findMSB(1C").hash32());
    ASSERT_EQ(0xda9459f7u, ImmutableString("findMSB(2C").hash32());
    ASSERT_EQ(0x0296d786u, ImmutableString("findMSB(3C").hash32());
    ASSERT_EQ(0x13903684u, ImmutableString("findMSB(0D").hash32());
    ASSERT_EQ(0x3992b0edu, ImmutableString("findMSB(1D").hash32());
    ASSERT_EQ(0xd794553eu, ImmutableString("findMSB(2D").hash32());
    ASSERT_EQ(0x0596dc3fu, ImmutableString("findMSB(3D").hash32());
    ASSERT_EQ(0x76d26c06u, ImmutableString("uaddCarry(0D0D0D").hash32());
    ASSERT_EQ(0x8638ea07u, ImmutableString("uaddCarry(1D1D1D").hash32());
    ASSERT_EQ(0x830df594u, ImmutableString("uaddCarry(2D2D2D").hash32());
    ASSERT_EQ(0x859069e5u, ImmutableString("uaddCarry(3D3D3D").hash32());
    ASSERT_EQ(0xee0c9f85u, ImmutableString("usubBorrow(0D0D0D").hash32());
    ASSERT_EQ(0x56a8a0b4u, ImmutableString("usubBorrow(1D1D1D").hash32());
    ASSERT_EQ(0x2d76ad27u, ImmutableString("usubBorrow(2D2D2D").hash32());
    ASSERT_EQ(0x1e102f26u, ImmutableString("usubBorrow(3D3D3D").hash32());
    ASSERT_EQ(0x2691af51u, ImmutableString("umulExtended(0D0D0D0D").hash32());
    ASSERT_EQ(0x6b51f121u, ImmutableString("umulExtended(1D1D1D1D").hash32());
    ASSERT_EQ(0x4d3ff831u, ImmutableString("umulExtended(2D2D2D2D").hash32());
    ASSERT_EQ(0x282a4a31u, ImmutableString("umulExtended(3D3D3D3D").hash32());
    ASSERT_EQ(0x84d951b5u, ImmutableString("imulExtended(0C0C0C0C").hash32());
    ASSERT_EQ(0xcc193b45u, ImmutableString("imulExtended(1C1C1C1C").hash32());
    ASSERT_EQ(0x0a58432du, ImmutableString("imulExtended(2C2C2C2C").hash32());
    ASSERT_EQ(0x8277ae4du, ImmutableString("imulExtended(3C3C3C3C").hash32());
    ASSERT_EQ(0x2e205f43u, ImmutableString("texelFetch(0O1C0C").hash32());
    ASSERT_EQ(0x83a9e786u, ImmutableString("texelFetch(0T1C0C").hash32());
    ASSERT_EQ(0xbbdb8c61u, ImmutableString("texelFetch(0Y1C0C").hash32());
    ASSERT_EQ(0x573d1826u, ImmutableString("textureGather(0H1B").hash32());
    ASSERT_EQ(0x0f61635eu, ImmutableString("textureGather(0P1B").hash32());
    ASSERT_EQ(0x181a7211u, ImmutableString("textureGather(0U1B").hash32());
    ASSERT_EQ(0x98b5c033u, ImmutableString("textureGather(0H1B0C").hash32());
    ASSERT_EQ(0x1230974bu, ImmutableString("textureGather(0P1B0C").hash32());
    ASSERT_EQ(0x047e2010u, ImmutableString("textureGather(0U1B0C").hash32());
    ASSERT_EQ(0x889130b4u, ImmutableString("textureGather(0K2B").hash32());
    ASSERT_EQ(0x80649bccu, ImmutableString("textureGather(0S2B").hash32());
    ASSERT_EQ(0x77ff0931u, ImmutableString("textureGather(0X2B").hash32());
    ASSERT_EQ(0xf0b36e1du, ImmutableString("textureGather(0K2B0C").hash32());
    ASSERT_EQ(0x7e927bd5u, ImmutableString("textureGather(0S2B0C").hash32());
    ASSERT_EQ(0x36e78b70u, ImmutableString("textureGather(0X2B0C").hash32());
    ASSERT_EQ(0xf05b183bu, ImmutableString("textureGather(0J2B").hash32());
    ASSERT_EQ(0xe6f2e1d3u, ImmutableString("textureGather(0R2B").hash32());
    ASSERT_EQ(0x7bff68f8u, ImmutableString("textureGather(0W2B").hash32());
    ASSERT_EQ(0x91e7b756u, ImmutableString("textureGather(0J2B0C").hash32());
    ASSERT_EQ(0xb00a70eeu, ImmutableString("textureGather(0R2B0C").hash32());
    ASSERT_EQ(0xd840ea01u, ImmutableString("textureGather(0W2B0C").hash32());
    ASSERT_EQ(0xc3dadff4u, ImmutableString("textureGather(0Z1B").hash32());
    ASSERT_EQ(0xbcf1974au, ImmutableString("textureGather(0Z1B0B").hash32());
    ASSERT_EQ(0xdc0090e3u, ImmutableString("textureGather(0b2B").hash32());
    ASSERT_EQ(0x36e65c71u, ImmutableString("textureGather(0b2B0B").hash32());
    ASSERT_EQ(0x5e97fd5au, ImmutableString("textureGather(0a2B").hash32());
    ASSERT_EQ(0xafef0c94u, ImmutableString("textureGather(0a2B0B").hash32());
    ASSERT_EQ(0xe3b7a4efu, ImmutableString("textureGatherOffset(0H1B1C").hash32());
    ASSERT_EQ(0x38ee90d7u, ImmutableString("textureGatherOffset(0P1B1C").hash32());
    ASSERT_EQ(0xf91ef410u, ImmutableString("textureGatherOffset(0U1B1C").hash32());
    ASSERT_EQ(0x8fa34bcau, ImmutableString("textureGatherOffset(0H1B1C0C").hash32());
    ASSERT_EQ(0xb7b5eb12u, ImmutableString("textureGatherOffset(0P1B1C0C").hash32());
    ASSERT_EQ(0x59490119u, ImmutableString("textureGatherOffset(0U1B1C0C").hash32());
    ASSERT_EQ(0x3f682f01u, ImmutableString("textureGatherOffset(0K2B1C").hash32());
    ASSERT_EQ(0x50a3ba69u, ImmutableString("textureGatherOffset(0S2B1C").hash32());
    ASSERT_EQ(0xe3bd7c3cu, ImmutableString("textureGatherOffset(0X2B1C").hash32());
    ASSERT_EQ(0x899b1520u, ImmutableString("textureGatherOffset(0K2B1C0C").hash32());
    ASSERT_EQ(0x01a83888u, ImmutableString("textureGatherOffset(0S2B1C0C").hash32());
    ASSERT_EQ(0x38ed38e5u, ImmutableString("textureGatherOffset(0X2B1C0C").hash32());
    ASSERT_EQ(0xb006f693u, ImmutableString("textureGatherOffset(0Z1B0B1C").hash32());
    ASSERT_EQ(0xd26cea7cu, ImmutableString("textureGatherOffset(0b2B0B1C").hash32());
    ASSERT_EQ(0x0b8d8d0eu, ImmutableString("atomicCounter(0F").hash32());
    ASSERT_EQ(0xf0f5289du, ImmutableString("atomicCounterIncrement(0F").hash32());
    ASSERT_EQ(0xf5adf6d1u, ImmutableString("atomicCounterDecrement(0F").hash32());
    ASSERT_EQ(0x48923c61u, ImmutableString("atomicAdd(0D0D").hash32());
    ASSERT_EQ(0x174429d9u, ImmutableString("atomicAdd(0C0C").hash32());
    ASSERT_EQ(0x7de6c91cu, ImmutableString("atomicMin(0D0D").hash32());
    ASSERT_EQ(0x2f35a524u, ImmutableString("atomicMin(0C0C").hash32());
    ASSERT_EQ(0x7a93e532u, ImmutableString("atomicMax(0D0D").hash32());
    ASSERT_EQ(0xf35a12fau, ImmutableString("atomicMax(0C0C").hash32());
    ASSERT_EQ(0xc90f20b3u, ImmutableString("atomicAnd(0D0D").hash32());
    ASSERT_EQ(0x8f5a420bu, ImmutableString("atomicAnd(0C0C").hash32());
    ASSERT_EQ(0x449a297fu, ImmutableString("atomicOr(0D0D").hash32());
    ASSERT_EQ(0x797c3e57u, ImmutableString("atomicOr(0C0C").hash32());
    ASSERT_EQ(0xe0d1d797u, ImmutableString("atomicXor(0D0D").hash32());
    ASSERT_EQ(0x16f120efu, ImmutableString("atomicXor(0C0C").hash32());
    ASSERT_EQ(0x32d4301fu, ImmutableString("atomicExchange(0D0D").hash32());
    ASSERT_EQ(0x68f37977u, ImmutableString("atomicExchange(0C0C").hash32());
    ASSERT_EQ(0x529504a4u, ImmutableString("atomicCompSwap(0D0D0D").hash32());
    ASSERT_EQ(0x0fab9dd9u, ImmutableString("atomicCompSwap(0C0C0C").hash32());
    ASSERT_EQ(0xb32c4610u, ImmutableString("imageSize(0c").hash32());
    ASSERT_EQ(0xba2c5115u, ImmutableString("imageSize(0d").hash32());
    ASSERT_EQ(0xb92c4f82u, ImmutableString("imageSize(0e").hash32());
    ASSERT_EQ(0xb82c4defu, ImmutableString("imageSize(0f").hash32());
    ASSERT_EQ(0xb72c4c5cu, ImmutableString("imageSize(0g").hash32());
    ASSERT_EQ(0xbe2c5761u, ImmutableString("imageSize(0h").hash32());
    ASSERT_EQ(0xbd2c55ceu, ImmutableString("imageSize(0i").hash32());
    ASSERT_EQ(0xbc2c543bu, ImmutableString("imageSize(0j").hash32());
    ASSERT_EQ(0xbb2c52a8u, ImmutableString("imageSize(0k").hash32());
    ASSERT_EQ(0xc22c5dadu, ImmutableString("imageSize(0l").hash32());
    ASSERT_EQ(0xc12c5c1au, ImmutableString("imageSize(0m").hash32());
    ASSERT_EQ(0xc02c5a87u, ImmutableString("imageSize(0n").hash32());
    ASSERT_EQ(0x6c195e87u, ImmutableString("imageLoad(0c1C").hash32());
    ASSERT_EQ(0x753e7136u, ImmutableString("imageLoad(0d1C").hash32());
    ASSERT_EQ(0xa9d0e5b5u, ImmutableString("imageLoad(0e1C").hash32());
    ASSERT_EQ(0x9ad4e7a3u, ImmutableString("imageLoad(0f2C").hash32());
    ASSERT_EQ(0x00a05f04u, ImmutableString("imageLoad(0g2C").hash32());
    ASSERT_EQ(0x11c8ccddu, ImmutableString("imageLoad(0h2C").hash32());
    ASSERT_EQ(0xa7a68486u, ImmutableString("imageLoad(0i2C").hash32());
    ASSERT_EQ(0x28a31a5fu, ImmutableString("imageLoad(0j2C").hash32());
    ASSERT_EQ(0x8d315d40u, ImmutableString("imageLoad(0k2C").hash32());
    ASSERT_EQ(0xce50b7e9u, ImmutableString("imageLoad(0l2C").hash32());
    ASSERT_EQ(0x62f2ce12u, ImmutableString("imageLoad(0m2C").hash32());
    ASSERT_EQ(0x243de78bu, ImmutableString("imageLoad(0n2C").hash32());
    ASSERT_EQ(0xaf6251f9u, ImmutableString("imageStore(0c1C3B").hash32());
    ASSERT_EQ(0x5ba8f703u, ImmutableString("imageStore(0d1C3C").hash32());
    ASSERT_EQ(0xe495b7e1u, ImmutableString("imageStore(0e1C3D").hash32());
    ASSERT_EQ(0x886bdcd5u, ImmutableString("imageStore(0f2C3B").hash32());
    ASSERT_EQ(0xb0002869u, ImmutableString("imageStore(0g2C3C").hash32());
    ASSERT_EQ(0xf0cb4011u, ImmutableString("imageStore(0h2C3D").hash32());
    ASSERT_EQ(0xfa7d2618u, ImmutableString("imageStore(0i2C3B").hash32());
    ASSERT_EQ(0xcf4a9cdeu, ImmutableString("imageStore(0j2C3C").hash32());
    ASSERT_EQ(0x008583a0u, ImmutableString("imageStore(0k2C3D").hash32());
    ASSERT_EQ(0xbaead883u, ImmutableString("imageStore(0l2C3B").hash32());
    ASSERT_EQ(0xc4d9f177u, ImmutableString("imageStore(0m2C3C").hash32());
    ASSERT_EQ(0xd8dff3cbu, ImmutableString("imageStore(0n2C3D").hash32());
    ASSERT_EQ(0xa7570267u, ImmutableString("memoryBarrier(").hash32());
    ASSERT_EQ(0xd8373034u, ImmutableString("memoryBarrierAtomicCounter(").hash32());
    ASSERT_EQ(0xff425859u, ImmutableString("memoryBarrierBuffer(").hash32());
    ASSERT_EQ(0xcd7ff8a6u, ImmutableString("memoryBarrierImage(").hash32());
    ASSERT_EQ(0x2c4d0487u, ImmutableString("gl_MaxImageUnits").hash32());
    ASSERT_EQ(0xeacd9c77u, ImmutableString("gl_MaxVertexImageUniforms").hash32());
    ASSERT_EQ(0xe9637851u, ImmutableString("gl_MaxFragmentImageUniforms").hash32());
    ASSERT_EQ(0x551515f4u, ImmutableString("gl_MaxComputeImageUniforms").hash32());
    ASSERT_EQ(0x37f0f1d0u, ImmutableString("gl_MaxCombinedImageUniforms").hash32());
    ASSERT_EQ(0x8dd1ae75u, ImmutableString("gl_MaxCombinedShaderOutputResources").hash32());
    ASSERT_EQ(0xd54f2797u, ImmutableString("gl_MaxComputeWorkGroupCount").hash32());
    ASSERT_EQ(0xec875d49u, ImmutableString("gl_MaxComputeWorkGroupSize").hash32());
    ASSERT_EQ(0x6c3a75d8u, ImmutableString("gl_MaxComputeUniformComponents").hash32());
    ASSERT_EQ(0x029d3b2bu, ImmutableString("gl_MaxComputeTextureImageUnits").hash32());
    ASSERT_EQ(0xc3a870f0u, ImmutableString("gl_MaxComputeAtomicCounters").hash32());
    ASSERT_EQ(0xacde249eu, ImmutableString("gl_MaxComputeAtomicCounterBuffers").hash32());
    ASSERT_EQ(0x4cbd309du, ImmutableString("gl_MaxVertexAtomicCounters").hash32());
    ASSERT_EQ(0x4591b147u, ImmutableString("gl_MaxFragmentAtomicCounters").hash32());
    ASSERT_EQ(0x82903444u, ImmutableString("gl_MaxCombinedAtomicCounters").hash32());
    ASSERT_EQ(0x5aeafb40u, ImmutableString("gl_MaxAtomicCounterBindings").hash32());
    ASSERT_EQ(0x107540dfu, ImmutableString("gl_MaxVertexAtomicCounterBuffers").hash32());
    ASSERT_EQ(0xf6212c11u, ImmutableString("gl_MaxFragmentAtomicCounterBuffers").hash32());
    ASSERT_EQ(0x3d856f72u, ImmutableString("gl_MaxCombinedAtomicCounterBuffers").hash32());
    ASSERT_EQ(0x98a09aa9u, ImmutableString("gl_MaxAtomicCounterBufferSize").hash32());
    ASSERT_EQ(0x8539932du, ImmutableString("gl_MaxGeometryInputComponents").hash32());
    ASSERT_EQ(0xd26bc9eau, ImmutableString("gl_MaxGeometryOutputComponents").hash32());
    ASSERT_EQ(0x3dc1da39u, ImmutableString("gl_MaxGeometryImageUniforms").hash32());
    ASSERT_EQ(0x361fe182u, ImmutableString("gl_MaxGeometryTextureImageUnits").hash32());
    ASSERT_EQ(0x3620853du, ImmutableString("gl_MaxGeometryOutputVertices").hash32());
    ASSERT_EQ(0x9923396au, ImmutableString("gl_MaxGeometryTotalOutputComponents").hash32());
    ASSERT_EQ(0xc0ec9f01u, ImmutableString("gl_MaxGeometryUniformComponents").hash32());
    ASSERT_EQ(0xd96c18afu, ImmutableString("gl_MaxGeometryAtomicCounters").hash32());
    ASSERT_EQ(0xe353b519u, ImmutableString("gl_MaxGeometryAtomicCounterBuffers").hash32());
    ASSERT_EQ(0x7dab4220u, ImmutableString("gl_in").hash32());
    ASSERT_EQ(0x34af0318u, ImmutableString("barrier(").hash32());
    ASSERT_EQ(0x9a984c24u, ImmutableString("memoryBarrierShared(").hash32());
    ASSERT_EQ(0xdf09d132u, ImmutableString("groupMemoryBarrier(").hash32());
    ASSERT_EQ(0x56624254u, ImmutableString("gl_NumWorkGroups").hash32());
    ASSERT_EQ(0x121ffe70u, ImmutableString("gl_WorkGroupSize").hash32());
    ASSERT_EQ(0x6fced514u, ImmutableString("gl_WorkGroupID").hash32());
    ASSERT_EQ(0x4bbe0c1du, ImmutableString("gl_LocalInvocationID").hash32());
    ASSERT_EQ(0xa34369b3u, ImmutableString("gl_GlobalInvocationID").hash32());
    ASSERT_EQ(0x99f53c3cu, ImmutableString("gl_LocalInvocationIndex").hash32());
    ASSERT_EQ(0xab932950u, ImmutableString("EmitVertex(").hash32());
    ASSERT_EQ(0xfa01fdedu, ImmutableString("EndPrimitive(").hash32());
    ASSERT_EQ(0xc91ada96u, ImmutableString("gl_PrimitiveIDIn").hash32());
    ASSERT_EQ(0xfc2907ccu, ImmutableString("gl_InvocationID").hash32());
    ASSERT_EQ(0x863d719du, ImmutableString("gl_PrimitiveID").hash32());
    ASSERT_EQ(0x02731c1cu, ImmutableString("gl_Layer").hash32());
    ASSERT_EQ(0xe29142f0u, ImmutableString("gl_PerVertex").hash32());
    ASSERT_EQ(0x02c4bde0u, ImmutableString("gl_Position").hash32());
    ASSERT_EQ(0x556a8827u, ImmutableString("sinh(0B").hash32());
    ASSERT_EQ(0x3368140au, ImmutableString("sinh(1B").hash32());
    ASSERT_EQ(0x25704cc5u, ImmutableString("sinh(2B").hash32());
    ASSERT_EQ(0x7b6d0290u, ImmutableString("sinh(3B").hash32());
    ASSERT_EQ(0x68fefbb2u, ImmutableString("cosh(0B").hash32());
    ASSERT_EQ(0x8b016fcfu, ImmutableString("cosh(1B").hash32());
    ASSERT_EQ(0xb103ea38u, ImmutableString("cosh(2B").hash32());
    ASSERT_EQ(0xdb066aedu, ImmutableString("cosh(3B").hash32());
    ASSERT_EQ(0x119658feu, ImmutableString("tanh(0B").hash32());
    ASSERT_EQ(0x3398cd1bu, ImmutableString("tanh(1B").hash32());
    ASSERT_EQ(0x599b4784u, ImmutableString("tanh(2B").hash32());
    ASSERT_EQ(0x039cfeb9u, ImmutableString("tanh(3B").hash32());
    ASSERT_EQ(0xca4a7880u, ImmutableString("asinh(0B").hash32());
    ASSERT_EQ(0xf44cf935u, ImmutableString("asinh(1B").hash32());
    ASSERT_EQ(0x0246537au, ImmutableString("asinh(2B").hash32());
    ASSERT_EQ(0x2448c797u, ImmutableString("asinh(3B").hash32());
    ASSERT_EQ(0xc114b5b5u, ImmutableString("acosh(0B").hash32());
    ASSERT_EQ(0x97123500u, ImmutableString("acosh(1B").hash32());
    ASSERT_EQ(0xf1108417u, ImmutableString("acosh(2B").hash32());
    ASSERT_EQ(0xcf0e0ffau, ImmutableString("acosh(3B").hash32());
    ASSERT_EQ(0xb11b8a15u, ImmutableString("atanh(0B").hash32());
    ASSERT_EQ(0x87190960u, ImmutableString("atanh(1B").hash32());
    ASSERT_EQ(0x61168ef7u, ImmutableString("atanh(2B").hash32());
    ASSERT_EQ(0xbf14e45au, ImmutableString("atanh(3B").hash32());
    ASSERT_EQ(0x10769e08u, ImmutableString("abs(0C").hash32());
    ASSERT_EQ(0xf0742d11u, ImmutableString("abs(1C").hash32());
    ASSERT_EQ(0xe07acfa6u, ImmutableString("abs(2C").hash32());
    ASSERT_EQ(0x38791b97u, ImmutableString("abs(3C").hash32());
    ASSERT_EQ(0xbb7088edu, ImmutableString("sign(0C").hash32());
    ASSERT_EQ(0x5b723064u, ImmutableString("sign(1C").hash32());
    ASSERT_EQ(0x8374adf3u, ImmutableString("sign(2C").hash32());
    ASSERT_EQ(0xab772b82u, ImmutableString("sign(3C").hash32());
    ASSERT_EQ(0x26c07245u, ImmutableString("trunc(0B").hash32());
    ASSERT_EQ(0x7cbd2810u, ImmutableString("trunc(1B").hash32());
    ASSERT_EQ(0x56baada7u, ImmutableString("trunc(2B").hash32());
    ASSERT_EQ(0x34b8398au, ImmutableString("trunc(3B").hash32());
    ASSERT_EQ(0x0c793f9bu, ImmutableString("round(0B").hash32());
    ASSERT_EQ(0xea76cb7eu, ImmutableString("round(1B").hash32());
    ASSERT_EQ(0xdc7d7139u, ImmutableString("round(2B").hash32());
    ASSERT_EQ(0x327bba04u, ImmutableString("round(3B").hash32());
    ASSERT_EQ(0xdb3a3b0fu, ImmutableString("roundEven(0B").hash32());
    ASSERT_EQ(0xb937c6f2u, ImmutableString("roundEven(1B").hash32());
    ASSERT_EQ(0x2b3f362du, ImmutableString("roundEven(2B").hash32());
    ASSERT_EQ(0x013cb578u, ImmutableString("roundEven(3B").hash32());
    ASSERT_EQ(0xbdf50df5u, ImmutableString("min(0C0C").hash32());
    ASSERT_EQ(0x80de719du, ImmutableString("min(1C1C").hash32());
    ASSERT_EQ(0x81dadab1u, ImmutableString("min(2C2C").hash32());
    ASSERT_EQ(0x5997f741u, ImmutableString("min(3C3C").hash32());
    ASSERT_EQ(0xa0e0e294u, ImmutableString("min(1C0C").hash32());
    ASSERT_EQ(0x49e092b7u, ImmutableString("min(2C0C").hash32());
    ASSERT_EQ(0x499e99d6u, ImmutableString("min(3C0C").hash32());
    ASSERT_EQ(0x405da95du, ImmutableString("min(0D0D").hash32());
    ASSERT_EQ(0x95954a75u, ImmutableString("min(1D1D").hash32());
    ASSERT_EQ(0x47bb8b0du, ImmutableString("min(2D2D").hash32());
    ASSERT_EQ(0x61bd085du, ImmutableString("min(3D3D").hash32());
    ASSERT_EQ(0x6f92d00cu, ImmutableString("min(1D0D").hash32());
    ASSERT_EQ(0x13bfb65fu, ImmutableString("min(2D0D").hash32());
    ASSERT_EQ(0x7fbf762eu, ImmutableString("min(3D0D").hash32());
    ASSERT_EQ(0xaaa9d50bu, ImmutableString("max(0C0C").hash32());
    ASSERT_EQ(0xf6fdcb9bu, ImmutableString("max(1C1C").hash32());
    ASSERT_EQ(0x9b0b952fu, ImmutableString("max(2C2C").hash32());
    ASSERT_EQ(0x919deb77u, ImmutableString("max(3C3C").hash32());
    ASSERT_EQ(0x1f00492au, ImmutableString("max(1C0C").hash32());
    ASSERT_EQ(0x5306a6a9u, ImmutableString("max(2C0C").hash32());
    ASSERT_EQ(0xe99c3768u, ImmutableString("max(3C0C").hash32());
    ASSERT_EQ(0xe45eb3b3u, ImmutableString("max(0D0D").hash32());
    ASSERT_EQ(0xc2ff54b3u, ImmutableString("max(1D1D").hash32());
    ASSERT_EQ(0x505a7783u, ImmutableString("max(2D2D").hash32());
    ASSERT_EQ(0x593a41bbu, ImmutableString("max(3D3D").hash32());
    ASSERT_EQ(0xa4fce6e2u, ImmutableString("max(1D0D").hash32());
    ASSERT_EQ(0x8454b931u, ImmutableString("max(2D0D").hash32());
    ASSERT_EQ(0xe732d280u, ImmutableString("max(3D0D").hash32());
    ASSERT_EQ(0x40b0dfadu, ImmutableString("clamp(0C0C0C").hash32());
    ASSERT_EQ(0x1b502a44u, ImmutableString("clamp(1C0C0C").hash32());
    ASSERT_EQ(0xc2b695f3u, ImmutableString("clamp(2C0C0C").hash32());
    ASSERT_EQ(0x4ba47222u, ImmutableString("clamp(3C0C0C").hash32());
    ASSERT_EQ(0x5729921cu, ImmutableString("clamp(1C1C1C").hash32());
    ASSERT_EQ(0x000dfdb7u, ImmutableString("clamp(2C2C2C").hash32());
    ASSERT_EQ(0xaec45456u, ImmutableString("clamp(3C3C3C").hash32());
    ASSERT_EQ(0xc3bc1280u, ImmutableString("clamp(0D0D0D").hash32());
    ASSERT_EQ(0x0ad28199u, ImmutableString("clamp(1D0D0D").hash32());
    ASSERT_EQ(0x45e11f4au, ImmutableString("clamp(2D0D0D").hash32());
    ASSERT_EQ(0xb6f9d1ebu, ImmutableString("clamp(3D0D0D").hash32());
    ASSERT_EQ(0x61475731u, ImmutableString("clamp(1D1D1D").hash32());
    ASSERT_EQ(0x9d0abd32u, ImmutableString("clamp(2D2D2D").hash32());
    ASSERT_EQ(0xeb86dc53u, ImmutableString("clamp(3D3D3D").hash32());
    ASSERT_EQ(0xb6c1d1ecu, ImmutableString("mix(0B0B0E").hash32());
    ASSERT_EQ(0xfc8b17f5u, ImmutableString("mix(1B1B1E").hash32());
    ASSERT_EQ(0x95305b7au, ImmutableString("mix(2B2B2E").hash32());
    ASSERT_EQ(0xcc917983u, ImmutableString("mix(3B3B3E").hash32());
    ASSERT_EQ(0x7f4a0e15u, ImmutableString("modf(0B0B").hash32());
    ASSERT_EQ(0x515a7a59u, ImmutableString("modf(1B1B").hash32());
    ASSERT_EQ(0xf4880c75u, ImmutableString("modf(2B2B").hash32());
    ASSERT_EQ(0x01cd0981u, ImmutableString("modf(3B3B").hash32());
    ASSERT_EQ(0xd43b6ae0u, ImmutableString("isnan(0B").hash32());
    ASSERT_EQ(0xfe3deb95u, ImmutableString("isnan(1B").hash32());
    ASSERT_EQ(0x0c3745dau, ImmutableString("isnan(2B").hash32());
    ASSERT_EQ(0xae38f077u, ImmutableString("isnan(3B").hash32());
    ASSERT_EQ(0x84bc1fc6u, ImmutableString("isinf(0B").hash32());
    ASSERT_EQ(0xa6be93e3u, ImmutableString("isinf(1B").hash32());
    ASSERT_EQ(0x4cc044ccu, ImmutableString("isinf(2B").hash32());
    ASSERT_EQ(0x76c2c581u, ImmutableString("isinf(3B").hash32());
    ASSERT_EQ(0x5fb09d21u, ImmutableString("floatBitsToInt(0B").hash32());
    ASSERT_EQ(0x35ae1c6cu, ImmutableString("floatBitsToInt(1B").hash32());
    ASSERT_EQ(0x0faba203u, ImmutableString("floatBitsToInt(2B").hash32());
    ASSERT_EQ(0xeda92de6u, ImmutableString("floatBitsToInt(3B").hash32());
    ASSERT_EQ(0x04a657b6u, ImmutableString("floatBitsToUint(0B").hash32());
    ASSERT_EQ(0xa6a99553u, ImmutableString("floatBitsToUint(1B").hash32());
    ASSERT_EQ(0xccac0fbcu, ImmutableString("floatBitsToUint(2B").hash32());
    ASSERT_EQ(0xf6ae9071u, ImmutableString("floatBitsToUint(3B").hash32());
    ASSERT_EQ(0x3c11a2ecu, ImmutableString("intBitsToFloat(0C").hash32());
    ASSERT_EQ(0x1c0f31f5u, ImmutableString("intBitsToFloat(1C").hash32());
    ASSERT_EQ(0x0c15d48au, ImmutableString("intBitsToFloat(2C").hash32());
    ASSERT_EQ(0x6414207bu, ImmutableString("intBitsToFloat(3C").hash32());
    ASSERT_EQ(0x7a053116u, ImmutableString("uintBitsToFloat(0D").hash32());
    ASSERT_EQ(0xa807b817u, ImmutableString("uintBitsToFloat(1D").hash32());
    ASSERT_EQ(0xb5ff7f5cu, ImmutableString("uintBitsToFloat(2D").hash32());
    ASSERT_EQ(0x5c02c345u, ImmutableString("uintBitsToFloat(3D").hash32());
    ASSERT_EQ(0x9ef04df5u, ImmutableString("packSnorm2x16(1B").hash32());
    ASSERT_EQ(0xe73def97u, ImmutableString("packUnorm2x16(1B").hash32());
    ASSERT_EQ(0xbfd16903u, ImmutableString("packHalf2x16(1B").hash32());
    ASSERT_EQ(0xab46cb2du, ImmutableString("unpackSnorm2x16(0D").hash32());
    ASSERT_EQ(0xe12111f7u, ImmutableString("unpackUnorm2x16(0D").hash32());
    ASSERT_EQ(0xbb0a6cb5u, ImmutableString("unpackHalf2x16(0D").hash32());
    ASSERT_EQ(0x0f88eaa3u, ImmutableString("matrixCompMult(9B9B").hash32());
    ASSERT_EQ(0x93b01b17u, ImmutableString("matrixCompMult(6B6B").hash32());
    ASSERT_EQ(0xd7cedc37u, ImmutableString("matrixCompMult(DBDB").hash32());
    ASSERT_EQ(0x346dec93u, ImmutableString("matrixCompMult(7B7B").hash32());
    ASSERT_EQ(0xf68d511bu, ImmutableString("matrixCompMult(EBEB").hash32());
    ASSERT_EQ(0x987daeb7u, ImmutableString("matrixCompMult(BBBB").hash32());
    ASSERT_EQ(0x12fad71du, ImmutableString("outerProduct(1B1B").hash32());
    ASSERT_EQ(0xb6286939u, ImmutableString("outerProduct(2B2B").hash32());
    ASSERT_EQ(0xc36ef945u, ImmutableString("outerProduct(3B3B").hash32());
    ASSERT_EQ(0xc421c37eu, ImmutableString("outerProduct(2B1B").hash32());
    ASSERT_EQ(0x20f43162u, ImmutableString("outerProduct(1B2B").hash32());
    ASSERT_EQ(0xf36934a7u, ImmutableString("outerProduct(3B1B").hash32());
    ASSERT_EQ(0x42f6a57fu, ImmutableString("outerProduct(1B3B").hash32());
    ASSERT_EQ(0x196baf10u, ImmutableString("outerProduct(3B2B").hash32());
    ASSERT_EQ(0x0c26b204u, ImmutableString("outerProduct(2B3B").hash32());
    ASSERT_EQ(0xfbc1e56fu, ImmutableString("transpose(5B").hash32());
    ASSERT_EQ(0x04cd89bbu, ImmutableString("transpose(AB").hash32());
    ASSERT_EQ(0xc2d9edc8u, ImmutableString("transpose(FB").hash32());
    ASSERT_EQ(0xa1c52958u, ImmutableString("transpose(6B").hash32());
    ASSERT_EQ(0xb3a4f203u, ImmutableString("transpose(9B").hash32());
    ASSERT_EQ(0xcbc7aa0du, ImmutableString("transpose(7B").hash32());
    ASSERT_EQ(0xfad5c8c2u, ImmutableString("transpose(DB").hash32());
    ASSERT_EQ(0xaad0cda4u, ImmutableString("transpose(BB").hash32());
    ASSERT_EQ(0x9cd7735fu, ImmutableString("transpose(EB").hash32());
    ASSERT_EQ(0xd763566fu, ImmutableString("determinant(5B").hash32());
    ASSERT_EQ(0xe06efabbu, ImmutableString("determinant(AB").hash32());
    ASSERT_EQ(0x9e7b5ec8u, ImmutableString("determinant(FB").hash32());
    ASSERT_EQ(0x0671c30au, ImmutableString("inverse(5B").hash32());
    ASSERT_EQ(0x0f7d6756u, ImmutableString("inverse(AB").hash32());
    ASSERT_EQ(0x198ec035u, ImmutableString("inverse(FB").hash32());
    ASSERT_EQ(0xae3dea39u, ImmutableString("lessThan(1D1D").hash32());
    ASSERT_EQ(0x2cbb3831u, ImmutableString("lessThan(2D2D").hash32());
    ASSERT_EQ(0x0b5bd931u, ImmutableString("lessThan(3D3D").hash32());
    ASSERT_EQ(0xbc4bed83u, ImmutableString("lessThanEqual(1D1D").hash32());
    ASSERT_EQ(0x4869dbd3u, ImmutableString("lessThanEqual(2D2D").hash32());
    ASSERT_EQ(0xdf2d350bu, ImmutableString("lessThanEqual(3D3D").hash32());
    ASSERT_EQ(0x2d7ebf02u, ImmutableString("greaterThan(1D1D").hash32());
    ASSERT_EQ(0x3ba7cb8au, ImmutableString("greaterThan(2D2D").hash32());
    ASSERT_EQ(0x2620dd52u, ImmutableString("greaterThan(3D3D").hash32());
    ASSERT_EQ(0xd8a05eaeu, ImmutableString("greaterThanEqual(1D1D").hash32());
    ASSERT_EQ(0x267a1e16u, ImmutableString("greaterThanEqual(2D2D").hash32());
    ASSERT_EQ(0xd1427cfeu, ImmutableString("greaterThanEqual(3D3D").hash32());
    ASSERT_EQ(0xc011536du, ImmutableString("equal(1D1D").hash32());
    ASSERT_EQ(0x4b343265u, ImmutableString("equal(2D2D").hash32());
    ASSERT_EQ(0xd75220b5u, ImmutableString("equal(3D3D").hash32());
    ASSERT_EQ(0x593a5ce2u, ImmutableString("notEqual(1D1D").hash32());
    ASSERT_EQ(0xce15eaeau, ImmutableString("notEqual(2D2D").hash32());
    ASSERT_EQ(0xc53620b2u, ImmutableString("notEqual(3D3D").hash32());
    ASSERT_EQ(0xc5a2d6f5u, ImmutableString("texture(0N1B").hash32());
    ASSERT_EQ(0xd934e233u, ImmutableString("textureProj(0N2B").hash32());
    ASSERT_EQ(0xb7326e16u, ImmutableString("textureProj(0N3B").hash32());
    ASSERT_EQ(0xbed19cffu, ImmutableString("texture(0H1B").hash32());
    ASSERT_EQ(0xe4231ee7u, ImmutableString("texture(0P1B").hash32());
    ASSERT_EQ(0xdb6a1034u, ImmutableString("texture(0U1B").hash32());
    ASSERT_EQ(0x4b60ca6fu, ImmutableString("texture(0I2B").hash32());
    ASSERT_EQ(0x71ef80d7u, ImmutableString("texture(0Q2B").hash32());
    ASSERT_EQ(0x393c36c2u, ImmutableString("texture(0V2B").hash32());
    ASSERT_EQ(0x8ee6e7c6u, ImmutableString("texture(0J2B").hash32());
    ASSERT_EQ(0xf486ed4eu, ImmutableString("texture(0R2B").hash32());
    ASSERT_EQ(0x8f8e3971u, ImmutableString("texture(0W2B").hash32());
    ASSERT_EQ(0x25876e15u, ImmutableString("texture(0K2B").hash32());
    ASSERT_EQ(0x0b283d1du, ImmutableString("texture(0S2B").hash32());
    ASSERT_EQ(0x938e9938u, ImmutableString("texture(0X2B").hash32());
    ASSERT_EQ(0x2db85505u, ImmutableString("textureProj(0H2B").hash32());
    ASSERT_EQ(0x37221e6du, ImmutableString("textureProj(0P2B").hash32());
    ASSERT_EQ(0xe3f81a12u, ImmutableString("textureProj(0U2B").hash32());
    ASSERT_EQ(0x83b69dd0u, ImmutableString("textureProj(0H3B").hash32());
    ASSERT_EQ(0x0d1f9db8u, ImmutableString("textureProj(0P3B").hash32());
    ASSERT_EQ(0x05fa8e2fu, ImmutableString("textureProj(0U3B").hash32());
    ASSERT_EQ(0xb91a42d3u, ImmutableString("textureProj(0I3B").hash32());
    ASSERT_EQ(0xc282793bu, ImmutableString("textureProj(0Q3B").hash32());
    ASSERT_EQ(0x3f5e397eu, ImmutableString("textureProj(0V3B").hash32());
    ASSERT_EQ(0x66fac460u, ImmutableString("textureLod(0H1B0B").hash32());
    ASSERT_EQ(0xf9c25078u, ImmutableString("textureLod(0P1B0B").hash32());
    ASSERT_EQ(0xee116f63u, ImmutableString("textureLod(0U1B0B").hash32());
    ASSERT_EQ(0xa78e0f2cu, ImmutableString("textureLod(0I2B0B").hash32());
    ASSERT_EQ(0x12a67064u, ImmutableString("textureLod(0Q2B0B").hash32());
    ASSERT_EQ(0x339c450du, ImmutableString("textureLod(0V2B0B").hash32());
    ASSERT_EQ(0x622e51a9u, ImmutableString("textureLod(0J2B0B").hash32());
    ASSERT_EQ(0x999dc041u, ImmutableString("textureLod(0R2B0B").hash32());
    ASSERT_EQ(0xa687812eu, ImmutableString("textureLod(0W2B0B").hash32());
    ASSERT_EQ(0xd846ba4au, ImmutableString("textureLod(0K2B0B").hash32());
    ASSERT_EQ(0x4cd78002u, ImmutableString("textureLod(0S2B0B").hash32());
    ASSERT_EQ(0x072c92c3u, ImmutableString("textureLod(0X2B0B").hash32());
    ASSERT_EQ(0x3da16996u, ImmutableString("texture(0Z2B").hash32());
    ASSERT_EQ(0xc3be50cau, ImmutableString("texture(0a3B").hash32());
    ASSERT_EQ(0x8b97d9fbu, ImmutableString("texture(0b3B").hash32());
    ASSERT_EQ(0x8411eff2u, ImmutableString("textureProj(0Z3B").hash32());
    ASSERT_EQ(0xfcf90ed9u, ImmutableString("textureLod(0Z2B0B").hash32());
    ASSERT_EQ(0x85509e6au, ImmutableString("textureSize(0H0C").hash32());
    ASSERT_EQ(0xcd2de632u, ImmutableString("textureSize(0P0C").hash32());
    ASSERT_EQ(0x154b0321u, ImmutableString("textureSize(0U0C").hash32());
    ASSERT_EQ(0x077c06e5u, ImmutableString("textureSize(0I0C").hash32());
    ASSERT_EQ(0xd095b9adu, ImmutableString("textureSize(0Q0C").hash32());
    ASSERT_EQ(0x4bfe4a10u, ImmutableString("textureSize(0V0C").hash32());
    ASSERT_EQ(0x3e30e0d4u, ImmutableString("textureSize(0J0C").hash32());
    ASSERT_EQ(0xc799e0bcu, ImmutableString("textureSize(0R0C").hash32());
    ASSERT_EQ(0x8e78ffabu, ImmutableString("textureSize(0W0C").hash32());
    ASSERT_EQ(0xc1997dcfu, ImmutableString("textureSize(0K0C").hash32());
    ASSERT_EQ(0x4b027db7u, ImmutableString("textureSize(0S0C").hash32());
    ASSERT_EQ(0xd6961c9au, ImmutableString("textureSize(0X0C").hash32());
    ASSERT_EQ(0x90b39384u, ImmutableString("textureSize(0Z0C").hash32());
    ASSERT_EQ(0xdb880a9du, ImmutableString("textureSize(0a0C").hash32());
    ASSERT_EQ(0x528b682cu, ImmutableString("textureSize(0b0C").hash32());
    ASSERT_EQ(0x7c701716u, ImmutableString("textureSize(0O").hash32());
    ASSERT_EQ(0x737008ebu, ImmutableString("textureSize(0T").hash32());
    ASSERT_EQ(0x6e70010cu, ImmutableString("textureSize(0Y").hash32());
    ASSERT_EQ(0x4257e234u, ImmutableString("textureProjLod(0H2B0B").hash32());
    ASSERT_EQ(0x164d5fdcu, ImmutableString("textureProjLod(0P2B0B").hash32());
    ASSERT_EQ(0x798a0c0fu, ImmutableString("textureProjLod(0U2B0B").hash32());
    ASSERT_EQ(0x1b87f4a5u, ImmutableString("textureProjLod(0H3B0B").hash32());
    ASSERT_EQ(0xbb36aeedu, ImmutableString("textureProjLod(0P3B0B").hash32());
    ASSERT_EQ(0x64ce27feu, ImmutableString("textureProjLod(0U3B0B").hash32());
    ASSERT_EQ(0xf058b46au, ImmutableString("textureProjLod(0I3B0B").hash32());
    ASSERT_EQ(0x09e0f252u, ImmutableString("textureProjLod(0Q3B0B").hash32());
    ASSERT_EQ(0xb087ded7u, ImmutableString("textureProjLod(0V3B0B").hash32());
    ASSERT_EQ(0xdf19eb73u, ImmutableString("textureProjLod(0Z3B0B").hash32());
    ASSERT_EQ(0xfb768e02u, ImmutableString("texelFetch(0H1C0C").hash32());
    ASSERT_EQ(0x28be44dau, ImmutableString("texelFetch(0P1C0C").hash32());
    ASSERT_EQ(0xda6f4215u, ImmutableString("texelFetch(0U1C0C").hash32());
    ASSERT_EQ(0x7732f2f2u, ImmutableString("texelFetch(0I2C0C").hash32());
    ASSERT_EQ(0x17d44f4au, ImmutableString("texelFetch(0Q2C0C").hash32());
    ASSERT_EQ(0x0233df8fu, ImmutableString("texelFetch(0V2C0C").hash32());
    ASSERT_EQ(0xa3b5f7d4u, ImmutableString("texelFetch(0K2C0C").hash32());
    ASSERT_EQ(0x4455c12cu, ImmutableString("texelFetch(0S2C0C").hash32());
    ASSERT_EQ(0xc01ff0f1u, ImmutableString("texelFetch(0X2C0C").hash32());
    ASSERT_EQ(0x319bd053u, ImmutableString("textureGrad(0H1B1B1B").hash32());
    ASSERT_EQ(0x8f2182ebu, ImmutableString("textureGrad(0P1B1B1B").hash32());
    ASSERT_EQ(0xe7a84898u, ImmutableString("textureGrad(0U1B1B1B").hash32());
    ASSERT_EQ(0x017a65d7u, ImmutableString("textureGrad(0I2B2B2B").hash32());
    ASSERT_EQ(0x32c6e76fu, ImmutableString("textureGrad(0Q2B2B2B").hash32());
    ASSERT_EQ(0xfe5d9a62u, ImmutableString("textureGrad(0V2B2B2B").hash32());
    ASSERT_EQ(0x3e2a3dd6u, ImmutableString("textureGrad(0J2B2B2B").hash32());
    ASSERT_EQ(0x68df806eu, ImmutableString("textureGrad(0R2B2B2B").hash32());
    ASSERT_EQ(0x2337ed89u, ImmutableString("textureGrad(0W2B2B2B").hash32());
    ASSERT_EQ(0xd45005c2u, ImmutableString("textureGrad(0Z2B1B1B").hash32());
    ASSERT_EQ(0x2a98dd2au, ImmutableString("textureGrad(0a3B2B2B").hash32());
    ASSERT_EQ(0xe17cbae1u, ImmutableString("textureGrad(0K2B1B1B").hash32());
    ASSERT_EQ(0xad25bf79u, ImmutableString("textureGrad(0S2B1B1B").hash32());
    ASSERT_EQ(0x47a2ba6cu, ImmutableString("textureGrad(0X2B1B1B").hash32());
    ASSERT_EQ(0xa4df529fu, ImmutableString("textureGrad(0b3B1B1B").hash32());
    ASSERT_EQ(0xb6a81eddu, ImmutableString("textureProjGrad(0H2B1B1B").hash32());
    ASSERT_EQ(0x6fa329a5u, ImmutableString("textureProjGrad(0P2B1B1B").hash32());
    ASSERT_EQ(0xe0e2d862u, ImmutableString("textureProjGrad(0U2B1B1B").hash32());
    ASSERT_EQ(0x6509abb0u, ImmutableString("textureProjGrad(0H3B1B1B").hash32());
    ASSERT_EQ(0xa0c1a478u, ImmutableString("textureProjGrad(0P3B1B1B").hash32());
    ASSERT_EQ(0x96a71f27u, ImmutableString("textureProjGrad(0U3B1B1B").hash32());
    ASSERT_EQ(0x7fe4d147u, ImmutableString("textureProjGrad(0I3B2B2B").hash32());
    ASSERT_EQ(0x3c0d8cafu, ImmutableString("textureProjGrad(0Q3B2B2B").hash32());
    ASSERT_EQ(0x32a42332u, ImmutableString("textureProjGrad(0V3B2B2B").hash32());
    ASSERT_EQ(0xca53d58au, ImmutableString("textureProjGrad(0Z3B1B1B").hash32());
    ASSERT_EQ(0x22d26116u, ImmutableString("textureOffset(0H1B1C").hash32());
    ASSERT_EQ(0x101493beu, ImmutableString("textureOffset(0P1B1C").hash32());
    ASSERT_EQ(0x39c4a805u, ImmutableString("textureOffset(0U1B1C").hash32());
    ASSERT_EQ(0xcbaf14edu, ImmutableString("textureOffset(0I2B2C").hash32());
    ASSERT_EQ(0x78036035u, ImmutableString("textureOffset(0Q2B2C").hash32());
    ASSERT_EQ(0x138e5608u, ImmutableString("textureOffset(0V2B2C").hash32());
    ASSERT_EQ(0x73713e4bu, ImmutableString("textureOffset(0Z2B1C").hash32());
    ASSERT_EQ(0x80b45ae8u, ImmutableString("textureOffset(0K2B1C").hash32());
    ASSERT_EQ(0x59ec8230u, ImmutableString("textureOffset(0S2B1C").hash32());
    ASSERT_EQ(0x70c27acdu, ImmutableString("textureOffset(0X2B1C").hash32());
    ASSERT_EQ(0x15d42df8u, ImmutableString("textureProjOffset(0H2B1C").hash32());
    ASSERT_EQ(0x9a695ee0u, ImmutableString("textureProjOffset(0P2B1C").hash32());
    ASSERT_EQ(0x0776d647u, ImmutableString("textureProjOffset(0U2B1C").hash32());
    ASSERT_EQ(0x5be66575u, ImmutableString("textureProjOffset(0H3B1C").hash32());
    ASSERT_EQ(0xdf3e61ddu, ImmutableString("textureProjOffset(0P3B1C").hash32());
    ASSERT_EQ(0x01882d1au, ImmutableString("textureProjOffset(0U3B1C").hash32());
    ASSERT_EQ(0x8952b249u, ImmutableString("textureProjOffset(0I3B2C").hash32());
    ASSERT_EQ(0x59a05651u, ImmutableString("textureProjOffset(0Q3B2C").hash32());
    ASSERT_EQ(0xa506c0ccu, ImmutableString("textureProjOffset(0V3B2C").hash32());
    ASSERT_EQ(0xbe73df8fu, ImmutableString("textureProjOffset(0Z3B1C").hash32());
    ASSERT_EQ(0x9215c4d9u, ImmutableString("textureLodOffset(0H1B0B1C").hash32());
    ASSERT_EQ(0x793a7cc1u, ImmutableString("textureLodOffset(0P1B0B1C").hash32());
    ASSERT_EQ(0xf48ef6a2u, ImmutableString("textureLodOffset(0U1B0B1C").hash32());
    ASSERT_EQ(0xbd22ce5eu, ImmutableString("textureLodOffset(0I2B0B2C").hash32());
    ASSERT_EQ(0x90a846c6u, ImmutableString("textureLodOffset(0Q2B0B2C").hash32());
    ASSERT_EQ(0x4ee30447u, ImmutableString("textureLodOffset(0V2B0B2C").hash32());
    ASSERT_EQ(0x4a5c1bf4u, ImmutableString("textureLodOffset(0Z2B0B1C").hash32());
    ASSERT_EQ(0xa09a8937u, ImmutableString("textureLodOffset(0K2B0B1C").hash32());
    ASSERT_EQ(0x58585f7fu, ImmutableString("textureLodOffset(0S2B0B1C").hash32());
    ASSERT_EQ(0x2d30964eu, ImmutableString("textureLodOffset(0X2B0B1C").hash32());
    ASSERT_EQ(0x559bf8bdu, ImmutableString("textureProjLodOffset(0H2B0B1C").hash32());
    ASSERT_EQ(0xddbc72f5u, ImmutableString("textureProjLodOffset(0P2B0B1C").hash32());
    ASSERT_EQ(0xeda8ca9eu, ImmutableString("textureProjLodOffset(0U2B0B1C").hash32());
    ASSERT_EQ(0x7c675aa4u, ImmutableString("textureProjLodOffset(0H3B0B1C").hash32());
    ASSERT_EQ(0xabf9e1fcu, ImmutableString("textureProjLodOffset(0P3B0B1C").hash32());
    ASSERT_EQ(0xfb4c331fu, ImmutableString("textureProjLodOffset(0U3B0B1C").hash32());
    ASSERT_EQ(0x72403404u, ImmutableString("textureProjLodOffset(0I3B0B2C").hash32());
    ASSERT_EQ(0x5c0b0c3cu, ImmutableString("textureProjLodOffset(0Q3B0B2C").hash32());
    ASSERT_EQ(0x73cbbd41u, ImmutableString("textureProjLodOffset(0V3B0B2C").hash32());
    ASSERT_EQ(0x1a4b729au, ImmutableString("textureProjLodOffset(0Z3B0B1C").hash32());
    ASSERT_EQ(0x640bb15fu, ImmutableString("texelFetchOffset(0H1C0C1C").hash32());
    ASSERT_EQ(0x38a66077u, ImmutableString("texelFetchOffset(0P1C0C1C").hash32());
    ASSERT_EQ(0x8fd50890u, ImmutableString("texelFetchOffset(0U1C0C1C").hash32());
    ASSERT_EQ(0x1c1e5a64u, ImmutableString("texelFetchOffset(0I2C0C2C").hash32());
    ASSERT_EQ(0xb190dd9cu, ImmutableString("texelFetchOffset(0Q2C0C2C").hash32());
    ASSERT_EQ(0xc6608dc1u, ImmutableString("texelFetchOffset(0V2C0C2C").hash32());
    ASSERT_EQ(0x5999aca5u, ImmutableString("texelFetchOffset(0K2C0C1C").hash32());
    ASSERT_EQ(0x22a80e3du, ImmutableString("texelFetchOffset(0S2C0C1C").hash32());
    ASSERT_EQ(0x0da46ec0u, ImmutableString("texelFetchOffset(0X2C0C1C").hash32());
    ASSERT_EQ(0xe0101092u, ImmutableString("textureGradOffset(0H1B1B1B1C").hash32());
    ASSERT_EQ(0xe707edcau, ImmutableString("textureGradOffset(0P1B1B1B1C").hash32());
    ASSERT_EQ(0x098595d1u, ImmutableString("textureGradOffset(0U1B1B1B1C").hash32());
    ASSERT_EQ(0x7da4e4cdu, ImmutableString("textureGradOffset(0I2B2B2B2C").hash32());
    ASSERT_EQ(0xaf4ae965u, ImmutableString("textureGradOffset(0Q2B2B2B2C").hash32());
    ASSERT_EQ(0xc5462e10u, ImmutableString("textureGradOffset(0V2B2B2B2C").hash32());
    ASSERT_EQ(0xd04f80efu, ImmutableString("textureGradOffset(0Z2B1B1B1C").hash32());
    ASSERT_EQ(0x2fd29b2cu, ImmutableString("textureGradOffset(0K2B1B1B1C").hash32());
    ASSERT_EQ(0xa8f6aea4u, ImmutableString("textureGradOffset(0S2B1B1B1C").hash32());
    ASSERT_EQ(0x4759a1c9u, ImmutableString("textureGradOffset(0X2B1B1B1C").hash32());
    ASSERT_EQ(0x59e1f1f2u, ImmutableString("textureGradOffset(0b3B1B1B1C").hash32());
    ASSERT_EQ(0xef12ada0u, ImmutableString("textureProjGradOffset(0H2B1B1B1C").hash32());
    ASSERT_EQ(0x455afa58u, ImmutableString("textureProjGradOffset(0P2B1B1B1C").hash32());
    ASSERT_EQ(0x96d47d37u, ImmutableString("textureProjGradOffset(0U2B1B1B1C").hash32());
    ASSERT_EQ(0x469db0f5u, ImmutableString("textureProjGradOffset(0H3B1B1B1C").hash32());
    ASSERT_EQ(0xcbf66d8du, ImmutableString("textureProjGradOffset(0P3B1B1B1C").hash32());
    ASSERT_EQ(0x147c8362u, ImmutableString("textureProjGradOffset(0U3B1B1B1C").hash32());
    ASSERT_EQ(0x574855cdu, ImmutableString("textureProjGradOffset(0I3B2B2B2C").hash32());
    ASSERT_EQ(0x88ee5a65u, ImmutableString("textureProjGradOffset(0Q3B2B2B2C").hash32());
    ASSERT_EQ(0x1830b4d0u, ImmutableString("textureProjGradOffset(0V3B2B2B2C").hash32());
    ASSERT_EQ(0x8e47a097u, ImmutableString("textureProjGradOffset(0Z3B1B1B1C").hash32());
    ASSERT_EQ(0xc336cfd3u, ImmutableString("texture(0L1B").hash32());
    ASSERT_EQ(0x726d9e79u, ImmutableString("textureProj(0L2B").hash32());
    ASSERT_EQ(0xc86a5444u, ImmutableString("textureProj(0L3B").hash32());
    ASSERT_EQ(0x89b5d13eu, ImmutableString("textureSize(0L0C").hash32());
    ASSERT_EQ(0xdce2d84eu, ImmutableString("texelFetch(0L1C0C").hash32());
    ASSERT_EQ(0x75c877acu, ImmutableString("texture(0M1B").hash32());
    ASSERT_EQ(0x5bcc4eaau, ImmutableString("textureProj(0M2B").hash32());
    ASSERT_EQ(0x7dcec2c7u, ImmutableString("textureProj(0M3B").hash32());
    ASSERT_EQ(0xb3da1777u, ImmutableString("rgb_2_yuv(2B0G").hash32());
    ASSERT_EQ(0x7c291893u, ImmutableString("yuv_2_rgb(2B0G").hash32());
    ASSERT_EQ(0x0be139b9u, ImmutableString("textureSize(0M0C").hash32());
    ASSERT_EQ(0x404f56ddu, ImmutableString("texelFetch(0M1C0C").hash32());
    ASSERT_EQ(0x19b1fbf8u, ImmutableString("gl_MaxVertexOutputVectors").hash32());
    ASSERT_EQ(0x348a8ebfu, ImmutableString("gl_MaxFragmentInputVectors").hash32());
    ASSERT_EQ(0x7b08fc96u, ImmutableString("gl_MinProgramTexelOffset").hash32());
    ASSERT_EQ(0x206d8524u, ImmutableString("gl_MaxProgramTexelOffset").hash32());
    ASSERT_EQ(0xaee18cb0u, ImmutableString("textureOffset(0H1B1C0B").hash32());
    ASSERT_EQ(0xdfde92d8u, ImmutableString("textureOffset(0P1B1C0B").hash32());
    ASSERT_EQ(0x563bd7d7u, ImmutableString("textureOffset(0U1B1C0B").hash32());
    ASSERT_EQ(0xb07a78bfu, ImmutableString("textureOffset(0I2B2C0B").hash32());
    ASSERT_EQ(0x112e5c27u, ImmutableString("textureOffset(0Q2B2C0B").hash32());
    ASSERT_EQ(0x18e874deu, ImmutableString("textureOffset(0V2B2C0B").hash32());
    ASSERT_EQ(0x522fa659u, ImmutableString("textureOffset(0Z2B1C0B").hash32());
    ASSERT_EQ(0xc4f49a7eu, ImmutableString("textureOffset(0K2B1C0B").hash32());
    ASSERT_EQ(0xddf5b9e6u, ImmutableString("textureOffset(0S2B1C0B").hash32());
    ASSERT_EQ(0x305a9bdfu, ImmutableString("textureOffset(0X2B1C0B").hash32());
    ASSERT_EQ(0xdf67b56eu, ImmutableString("textureProjOffset(0H2B1C0B").hash32());
    ASSERT_EQ(0xec06a1b6u, ImmutableString("textureProjOffset(0P2B1C0B").hash32());
    ASSERT_EQ(0xcae04b35u, ImmutableString("textureProjOffset(0U2B1C0B").hash32());
    ASSERT_EQ(0xc44ccce7u, ImmutableString("textureProjOffset(0H3B1C0B").hash32());
    ASSERT_EQ(0x7b1b7dcfu, ImmutableString("textureProjOffset(0P3B1C0B").hash32());
    ASSERT_EQ(0x5ab4ebd4u, ImmutableString("textureProjOffset(0U3B1C0B").hash32());
    ASSERT_EQ(0xd4ea75bbu, ImmutableString("textureProjOffset(0I3B2C0B").hash32());
    ASSERT_EQ(0x7cb00963u, ImmutableString("textureProjOffset(0Q3B2C0B").hash32());
    ASSERT_EQ(0x13b5a742u, ImmutableString("textureProjOffset(0V3B2C0B").hash32());
    ASSERT_EQ(0xb1a6333du, ImmutableString("textureProjOffset(0Z3B1C0B").hash32());
    ASSERT_EQ(0xde51954du, ImmutableString("texture(0H1B0B").hash32());
    ASSERT_EQ(0x38c7ba95u, ImmutableString("texture(0P1B0B").hash32());
    ASSERT_EQ(0x042a180au, ImmutableString("texture(0U1B0B").hash32());
    ASSERT_EQ(0xfbe2aeddu, ImmutableString("texture(0I2B0B").hash32());
    ASSERT_EQ(0x6c785ca5u, ImmutableString("texture(0Q2B0B").hash32());
    ASSERT_EQ(0x43c5755cu, ImmutableString("texture(0V2B0B").hash32());
    ASSERT_EQ(0xb92bf800u, ImmutableString("texture(0J2B0B").hash32());
    ASSERT_EQ(0xe5810cc8u, ImmutableString("texture(0R2B0B").hash32());
    ASSERT_EQ(0x7f200dc3u, ImmutableString("texture(0W2B0B").hash32());
    ASSERT_EQ(0x875430c7u, ImmutableString("texture(0K2B0B").hash32());
    ASSERT_EQ(0xa702218fu, ImmutableString("texture(0S2B0B").hash32());
    ASSERT_EQ(0x1e7afc2eu, ImmutableString("texture(0X2B0B").hash32());
    ASSERT_EQ(0xdf9fccd7u, ImmutableString("textureProj(0H2B0B").hash32());
    ASSERT_EQ(0xa8305e3fu, ImmutableString("textureProj(0P2B0B").hash32());
    ASSERT_EQ(0x3b7b4d8cu, ImmutableString("textureProj(0U2B0B").hash32());
    ASSERT_EQ(0xcae3e8c6u, ImmutableString("textureProj(0H3B0B").hash32());
    ASSERT_EQ(0x201ad4aeu, ImmutableString("textureProj(0P3B0B").hash32());
    ASSERT_EQ(0x53bcaf1du, ImmutableString("textureProj(0U3B0B").hash32());
    ASSERT_EQ(0x696b3b81u, ImmutableString("textureProj(0I3B0B").hash32());
    ASSERT_EQ(0x4b4881e9u, ImmutableString("textureProj(0Q3B0B").hash32());
    ASSERT_EQ(0xa9904518u, ImmutableString("textureProj(0V3B0B").hash32());
    ASSERT_EQ(0x68d90930u, ImmutableString("texture(0Z2B0B").hash32());
    ASSERT_EQ(0xf79abc24u, ImmutableString("texture(0a3B0B").hash32());
    ASSERT_EQ(0x212162acu, ImmutableString("textureProj(0Z3B0B").hash32());
    ASSERT_EQ(0x44531081u, ImmutableString("texture(0L1B0B").hash32());
    ASSERT_EQ(0xfcf64e0bu, ImmutableString("textureProj(0L2B0B").hash32());
    ASSERT_EQ(0x02c4537au, ImmutableString("textureProj(0L3B0B").hash32());
    ASSERT_EQ(0x3171cee2u, ImmutableString("texture(0M1B0B").hash32());
    ASSERT_EQ(0x3b753944u, ImmutableString("textureProj(0M2B0B").hash32());
    ASSERT_EQ(0x14a54bb5u, ImmutableString("textureProj(0M3B0B").hash32());
    ASSERT_EQ(0x30de4eebu, ImmutableString("dFdx(0B").hash32());
    ASSERT_EQ(0x8edb114eu, ImmutableString("dFdx(1B").hash32());
    ASSERT_EQ(0x80e34a09u, ImmutableString("dFdx(2B").hash32());
    ASSERT_EQ(0x56e0c954u, ImmutableString("dFdx(3B").hash32());
    ASSERT_EQ(0x2a65dfa6u, ImmutableString("dFdy(0B").hash32());
    ASSERT_EQ(0x4c6853c3u, ImmutableString("dFdy(1B").hash32());
    ASSERT_EQ(0x726ace2cu, ImmutableString("dFdy(2B").hash32());
    ASSERT_EQ(0x9c6d4ee1u, ImmutableString("dFdy(3B").hash32());
    ASSERT_EQ(0xa6cba313u, ImmutableString("fwidth(0B").hash32());
    ASSERT_EQ(0x04c9f876u, ImmutableString("fwidth(1B").hash32());
    ASSERT_EQ(0xf6d09e31u, ImmutableString("fwidth(2B").hash32());
    ASSERT_EQ(0xccce1d7cu, ImmutableString("fwidth(3B").hash32());
    ASSERT_EQ(0x88103c08u, ImmutableString("gl_FragDepth").hash32());
    ASSERT_EQ(0x7e8a502du, ImmutableString("gl_InstanceID").hash32());
    ASSERT_EQ(0xf39cf560u, ImmutableString("gl_VertexID").hash32());
    ASSERT_EQ(0xec388c2du, ImmutableString("gl_ViewID_OVR").hash32());
    ASSERT_EQ(0x2c852cb5u, ImmutableString("texture2D(0H1B").hash32());
    ASSERT_EQ(0xd6d4ae73u, ImmutableString("texture2DProj(0H2B").hash32());
    ASSERT_EQ(0xb4d23a56u, ImmutableString("texture2DProj(0H3B").hash32());
    ASSERT_EQ(0x11ea9d29u, ImmutableString("textureCube(0J2B").hash32());
    ASSERT_EQ(0xe7d17641u, ImmutableString("texture2D(0L1B").hash32());
    ASSERT_EQ(0x5270451fu, ImmutableString("texture2DProj(0L2B").hash32());
    ASSERT_EQ(0xb06d0782u, ImmutableString("texture2DProj(0L3B").hash32());
    ASSERT_EQ(0x05cd2a61u, ImmutableString("texture2DRect(0N1B").hash32());
    ASSERT_EQ(0xc97a55d7u, ImmutableString("texture2DRectProj(0N2B").hash32());
    ASSERT_EQ(0xa777e1bau, ImmutableString("texture2DRectProj(0N3B").hash32());
    ASSERT_EQ(0x72093d38u, ImmutableString("texture2DGradEXT(0H1B1B1B").hash32());
    ASSERT_EQ(0xabd48fdcu, ImmutableString("texture2DProjGradEXT(0H2B1B1B").hash32());
    ASSERT_EQ(0x33484f89u, ImmutableString("texture2DProjGradEXT(0H3B1B1B").hash32());
    ASSERT_EQ(0x79171da6u, ImmutableString("textureCubeGradEXT(0J2B2B2B").hash32());
    ASSERT_EQ(0xd87bae2bu, ImmutableString("gl_MaxVaryingVectors").hash32());
    ASSERT_EQ(0x4153e697u, ImmutableString("gl_FragData").hash32());
    ASSERT_EQ(0x9dae09f6u, ImmutableString("gl_SecondaryFragDataEXT").hash32());
    ASSERT_EQ(0x86a48dcbu, ImmutableString("gl_FragDepthEXT").hash32());
    ASSERT_EQ(0x8ee03ca7u, ImmutableString("texture2D(0H1B0B").hash32());
    ASSERT_EQ(0x88cd05e1u, ImmutableString("texture2DProj(0H2B0B").hash32());
    ASSERT_EQ(0x30daf170u, ImmutableString("texture2DProj(0H3B0B").hash32());
    ASSERT_EQ(0xd649f15bu, ImmutableString("textureCube(0J2B0B").hash32());
    ASSERT_EQ(0x8682af79u, ImmutableString("texture2DLodEXT(0H1B0B").hash32());
    ASSERT_EQ(0xc117a53fu, ImmutableString("texture2DProjLodEXT(0H2B0B").hash32());
    ASSERT_EQ(0x39021baeu, ImmutableString("texture2DProjLodEXT(0H3B0B").hash32());
    ASSERT_EQ(0x43f81965u, ImmutableString("textureCubeLodEXT(0J2B0B").hash32());
    ASSERT_EQ(0x1af4d39eu, ImmutableString("gl_FragColor").hash32());
    ASSERT_EQ(0x0cf3085au, ImmutableString("texture2DLod(0H1B0B").hash32());
    ASSERT_EQ(0x8ea43616u, ImmutableString("texture2DProjLod(0H2B0B").hash32());
    ASSERT_EQ(0x157c8b27u, ImmutableString("texture2DProjLod(0H3B0B").hash32());
    ASSERT_EQ(0x8238ae88u, ImmutableString("textureCubeLod(0J2B0B").hash32());
    ASSERT_EQ(0xae48fef9u, ImmutableString("gl_SecondaryFragColorEXT").hash32());
    ASSERT_EQ(0x2ca6b5f7u, ImmutableString("gl_LastFragData").hash32());
    ASSERT_EQ(0x048d047eu, ImmutableString("gl_LastFragColor").hash32());
    ASSERT_EQ(0xe1ad07e0u, ImmutableString("gl_LastFragColorARM").hash32());
    ASSERT_EQ(0x5ff73ab9u, ImmutableString("radians(0B").hash32());
    ASSERT_EQ(0xb5f58384u, ImmutableString("radians(1B").hash32());
    ASSERT_EQ(0x8ff3091bu, ImmutableString("radians(2B").hash32());
    ASSERT_EQ(0x6df094feu, ImmutableString("radians(3B").hash32());
    ASSERT_EQ(0x57cd6fecu, ImmutableString("degrees(0B").hash32());
    ASSERT_EQ(0x81cff0a1u, ImmutableString("degrees(1B").hash32());
    ASSERT_EQ(0x0fc88166u, ImmutableString("degrees(2B").hash32());
    ASSERT_EQ(0x31caf583u, ImmutableString("degrees(3B").hash32());
    ASSERT_EQ(0x8a07b54du, ImmutableString("sin(0B").hash32());
    ASSERT_EQ(0x60053498u, ImmutableString("sin(1B").hash32());
    ASSERT_EQ(0xba0383afu, ImmutableString("sin(2B").hash32());
    ASSERT_EQ(0x98010f92u, ImmutableString("sin(3B").hash32());
    ASSERT_EQ(0xcff55532u, ImmutableString("cos(0B").hash32());
    ASSERT_EQ(0xf1f7c94fu, ImmutableString("cos(1B").hash32());
    ASSERT_EQ(0x17fa43b8u, ImmutableString("cos(2B").hash32());
    ASSERT_EQ(0x41fcc46du, ImmutableString("cos(3B").hash32());
    ASSERT_EQ(0xee8ac486u, ImmutableString("tan(0B").hash32());
    ASSERT_EQ(0x108d38a3u, ImmutableString("tan(1B").hash32());
    ASSERT_EQ(0xb6907c8cu, ImmutableString("tan(2B").hash32());
    ASSERT_EQ(0xe092fd41u, ImmutableString("tan(3B").hash32());
    ASSERT_EQ(0x95a6e964u, ImmutableString("asin(0B").hash32());
    ASSERT_EQ(0xbfa96a19u, ImmutableString("asin(1B").hash32());
    ASSERT_EQ(0xcda2c45eu, ImmutableString("asin(2B").hash32());
    ASSERT_EQ(0xefa5387bu, ImmutableString("asin(3B").hash32());
    ASSERT_EQ(0x5f31e247u, ImmutableString("acos(0B").hash32());
    ASSERT_EQ(0x3d2f6e2au, ImmutableString("acos(1B").hash32());
    ASSERT_EQ(0x2f3613e5u, ImmutableString("acos(2B").hash32());
    ASSERT_EQ(0x05339330u, ImmutableString("acos(3B").hash32());
    ASSERT_EQ(0x82c5e6d5u, ImmutableString("atan(0B0B").hash32());
    ASSERT_EQ(0x54d4c019u, ImmutableString("atan(1B1B").hash32());
    ASSERT_EQ(0xdeb59d35u, ImmutableString("atan(2B2B").hash32());
    ASSERT_EQ(0x0548e241u, ImmutableString("atan(3B3B").hash32());
    ASSERT_EQ(0x8e3d93a7u, ImmutableString("atan(0B").hash32());
    ASSERT_EQ(0x6c3b1f8au, ImmutableString("atan(1B").hash32());
    ASSERT_EQ(0x5e435845u, ImmutableString("atan(2B").hash32());
    ASSERT_EQ(0xb4400e10u, ImmutableString("atan(3B").hash32());
    ASSERT_EQ(0xd4d6b527u, ImmutableString("pow(0B0B").hash32());
    ASSERT_EQ(0x7000d433u, ImmutableString("pow(1B1B").hash32());
    ASSERT_EQ(0x60d77e47u, ImmutableString("pow(2B2B").hash32());
    ASSERT_EQ(0x31a9230bu, ImmutableString("pow(3B3B").hash32());
    ASSERT_EQ(0xb3a5e896u, ImmutableString("exp(0B").hash32());
    ASSERT_EQ(0xd5a85cb3u, ImmutableString("exp(1B").hash32());
    ASSERT_EQ(0xfbaad71cu, ImmutableString("exp(2B").hash32());
    ASSERT_EQ(0xa5ac8e51u, ImmutableString("exp(3B").hash32());
    ASSERT_EQ(0x0b09eda9u, ImmutableString("log(0B").hash32());
    ASSERT_EQ(0x6106a374u, ImmutableString("log(1B").hash32());
    ASSERT_EQ(0x3b04290bu, ImmutableString("log(2B").hash32());
    ASSERT_EQ(0x1901b4eeu, ImmutableString("log(3B").hash32());
    ASSERT_EQ(0x3a43c8ecu, ImmutableString("exp2(0B").hash32());
    ASSERT_EQ(0x644649a1u, ImmutableString("exp2(1B").hash32());
    ASSERT_EQ(0xf23eda66u, ImmutableString("exp2(2B").hash32());
    ASSERT_EQ(0x14414e83u, ImmutableString("exp2(3B").hash32());
    ASSERT_EQ(0xebeb54f1u, ImmutableString("log2(0B").hash32());
    ASSERT_EQ(0xc1e8d43cu, ImmutableString("log2(1B").hash32());
    ASSERT_EQ(0x9be659d3u, ImmutableString("log2(2B").hash32());
    ASSERT_EQ(0xf9e31c36u, ImmutableString("log2(3B").hash32());
    ASSERT_EQ(0x1a10ccb7u, ImmutableString("sqrt(0B").hash32());
    ASSERT_EQ(0x780d8f1au, ImmutableString("sqrt(1B").hash32());
    ASSERT_EQ(0x6a15c7d5u, ImmutableString("sqrt(2B").hash32());
    ASSERT_EQ(0x40134720u, ImmutableString("sqrt(3B").hash32());
    ASSERT_EQ(0xe50d8305u, ImmutableString("inversesqrt(0B").hash32());
    ASSERT_EQ(0x3b0bcbd0u, ImmutableString("inversesqrt(1B").hash32());
    ASSERT_EQ(0x15095167u, ImmutableString("inversesqrt(2B").hash32());
    ASSERT_EQ(0xf306dd4au, ImmutableString("inversesqrt(3B").hash32());
    ASSERT_EQ(0x11769f9bu, ImmutableString("abs(0B").hash32());
    ASSERT_EQ(0xef742b7eu, ImmutableString("abs(1B").hash32());
    ASSERT_EQ(0xe17ad139u, ImmutableString("abs(2B").hash32());
    ASSERT_EQ(0x37791a04u, ImmutableString("abs(3B").hash32());
    ASSERT_EQ(0xba70875au, ImmutableString("sign(0B").hash32());
    ASSERT_EQ(0x5c7231f7u, ImmutableString("sign(1B").hash32());
    ASSERT_EQ(0x8274ac60u, ImmutableString("sign(2B").hash32());
    ASSERT_EQ(0xac772d15u, ImmutableString("sign(3B").hash32());
    ASSERT_EQ(0x68b063ddu, ImmutableString("floor(0B").hash32());
    ASSERT_EQ(0xbead19a8u, ImmutableString("floor(1B").hash32());
    ASSERT_EQ(0x98aa9f3fu, ImmutableString("floor(2B").hash32());
    ASSERT_EQ(0x76a82b22u, ImmutableString("floor(3B").hash32());
    ASSERT_EQ(0x4dc29736u, ImmutableString("ceil(0B").hash32());
    ASSERT_EQ(0xefc5d4d3u, ImmutableString("ceil(1B").hash32());
    ASSERT_EQ(0x15c84f3cu, ImmutableString("ceil(2B").hash32());
    ASSERT_EQ(0x3fcacff1u, ImmutableString("ceil(3B").hash32());
    ASSERT_EQ(0x061a7a4fu, ImmutableString("fract(0B").hash32());
    ASSERT_EQ(0xe4180632u, ImmutableString("fract(1B").hash32());
    ASSERT_EQ(0x561f756du, ImmutableString("fract(2B").hash32());
    ASSERT_EQ(0x2c1cf4b8u, ImmutableString("fract(3B").hash32());
    ASSERT_EQ(0xed15f051u, ImmutableString("mod(0B0B").hash32());
    ASSERT_EQ(0x13e5dde0u, ImmutableString("mod(1B0B").hash32());
    ASSERT_EQ(0x046a9b13u, ImmutableString("mod(2B0B").hash32());
    ASSERT_EQ(0xbca39522u, ImmutableString("mod(3B0B").hash32());
    ASSERT_EQ(0x3de85e95u, ImmutableString("mod(1B1B").hash32());
    ASSERT_EQ(0x546f9631u, ImmutableString("mod(2B2B").hash32());
    ASSERT_EQ(0xaeabcdddu, ImmutableString("mod(3B3B").hash32());
    ASSERT_EQ(0x3b8c728du, ImmutableString("min(0B0B").hash32());
    ASSERT_EQ(0x23497dfcu, ImmutableString("min(1B0B").hash32());
    ASSERT_EQ(0xc777f74fu, ImmutableString("min(2B0B").hash32());
    ASSERT_EQ(0xcc07353eu, ImmutableString("min(3B0B").hash32());
    ASSERT_EQ(0x4d4bfeb1u, ImmutableString("min(1B1B").hash32());
    ASSERT_EQ(0x177cf26du, ImmutableString("min(2B2B").hash32());
    ASSERT_EQ(0xbe0f6df9u, ImmutableString("min(3B3B").hash32());
    ASSERT_EQ(0xe7f2b603u, ImmutableString("max(0B0B").hash32());
    ASSERT_EQ(0xa02bb012u, ImmutableString("max(1B0B").hash32());
    ASSERT_EQ(0xd09e0b41u, ImmutableString("max(2B0B").hash32());
    ASSERT_EQ(0x6ac79e50u, ImmutableString("max(3B0B").hash32());
    ASSERT_EQ(0xc22e242fu, ImmutableString("max(1B1B").hash32());
    ASSERT_EQ(0x009846a3u, ImmutableString("max(2B2B").hash32());
    ASSERT_EQ(0x44c523e7u, ImmutableString("max(3B3B").hash32());
    ASSERT_EQ(0xbe16c602u, ImmutableString("clamp(0B0B0B").hash32());
    ASSERT_EQ(0x5e39910fu, ImmutableString("clamp(1B0B0B").hash32());
    ASSERT_EQ(0xccc2d6c8u, ImmutableString("clamp(2B0B0B").hash32());
    ASSERT_EQ(0xb154856du, ImmutableString("clamp(3B0B0B").hash32());
    ASSERT_EQ(0x6b80211bu, ImmutableString("clamp(1B1B1B").hash32());
    ASSERT_EQ(0xf0909e70u, ImmutableString("clamp(2B2B2B").hash32());
    ASSERT_EQ(0x33d780d9u, ImmutableString("clamp(3B3B3B").hash32());
    ASSERT_EQ(0xb5c1d059u, ImmutableString("mix(0B0B0B").hash32());
    ASSERT_EQ(0x1f8d8da5u, ImmutableString("mix(1B1B0B").hash32());
    ASSERT_EQ(0x60348539u, ImmutableString("mix(2B2B0B").hash32());
    ASSERT_EQ(0xc398271du, ImmutableString("mix(3B3B0B").hash32());
    ASSERT_EQ(0xf58b0cf0u, ImmutableString("mix(1B1B1B").hash32());
    ASSERT_EQ(0x9030539bu, ImmutableString("mix(2B2B2B").hash32());
    ASSERT_EQ(0xd1918162u, ImmutableString("mix(3B3B3B").hash32());
    ASSERT_EQ(0xccdc3d05u, ImmutableString("step(0B0B").hash32());
    ASSERT_EQ(0x92458549u, ImmutableString("step(1B1B").hash32());
    ASSERT_EQ(0x35731765u, ImmutableString("step(2B2B").hash32());
    ASSERT_EQ(0xcf6001f1u, ImmutableString("step(3B3B").hash32());
    ASSERT_EQ(0x22da85d0u, ImmutableString("step(0B1B").hash32());
    ASSERT_EQ(0xfcd80b67u, ImmutableString("step(0B2B").hash32());
    ASSERT_EQ(0xdad5974au, ImmutableString("step(0B3B").hash32());
    ASSERT_EQ(0xbdc5079du, ImmutableString("smoothstep(0B0B0B").hash32());
    ASSERT_EQ(0x29eb2c34u, ImmutableString("smoothstep(1B1B1B").hash32());
    ASSERT_EQ(0x45ccdddfu, ImmutableString("smoothstep(2B2B2B").hash32());
    ASSERT_EQ(0x372206a6u, ImmutableString("smoothstep(3B3B3B").hash32());
    ASSERT_EQ(0x13c35068u, ImmutableString("smoothstep(0B0B1B").hash32());
    ASSERT_EQ(0xedc0d5ffu, ImmutableString("smoothstep(0B0B2B").hash32());
    ASSERT_EQ(0xcbbe61e2u, ImmutableString("smoothstep(0B0B3B").hash32());
    ASSERT_EQ(0x1731e675u, ImmutableString("length(0B").hash32());
    ASSERT_EQ(0xed2f65c0u, ImmutableString("length(1B").hash32());
    ASSERT_EQ(0x472c21d7u, ImmutableString("length(2B").hash32());
    ASSERT_EQ(0x2529adbau, ImmutableString("length(3B").hash32());
    ASSERT_EQ(0x97b032ceu, ImmutableString("distance(0B0B").hash32());
    ASSERT_EQ(0xfdc4db42u, ImmutableString("distance(1B1B").hash32());
    ASSERT_EQ(0x1a473286u, ImmutableString("distance(2B2B").hash32());
    ASSERT_EQ(0x0887a662u, ImmutableString("distance(3B3B").hash32());
    ASSERT_EQ(0xa05f6bc8u, ImmutableString("dot(0B0B").hash32());
    ASSERT_EQ(0x41aa3804u, ImmutableString("dot(1B1B").hash32());
    ASSERT_EQ(0xc42d3370u, ImmutableString("dot(2B2B").hash32());
    ASSERT_EQ(0x2a4048e4u, ImmutableString("dot(3B3B").hash32());
    ASSERT_EQ(0x4c9b39c9u, ImmutableString("cross(2B2B").hash32());
    ASSERT_EQ(0xa2e83502u, ImmutableString("normalize(0B").hash32());
    ASSERT_EQ(0x44eb729fu, ImmutableString("normalize(1B").hash32());
    ASSERT_EQ(0x6aeded08u, ImmutableString("normalize(2B").hash32());
    ASSERT_EQ(0x94f06dbdu, ImmutableString("normalize(3B").hash32());
    ASSERT_EQ(0xfa8639d9u, ImmutableString("faceforward(0B0B0B").hash32());
    ASSERT_EQ(0x3a4f7670u, ImmutableString("faceforward(1B1B1B").hash32());
    ASSERT_EQ(0xd4f4bd1bu, ImmutableString("faceforward(2B2B2B").hash32());
    ASSERT_EQ(0x1655eae2u, ImmutableString("faceforward(3B3B3B").hash32());
    ASSERT_EQ(0x641f1576u, ImmutableString("reflect(0B0B").hash32());
    ASSERT_EQ(0xca322aeau, ImmutableString("reflect(1B1B").hash32());
    ASSERT_EQ(0x40514dceu, ImmutableString("reflect(2B2B").hash32());
    ASSERT_EQ(0x619b508au, ImmutableString("reflect(3B3B").hash32());
    ASSERT_EQ(0x762ec4e2u, ImmutableString("refract(0B0B0B").hash32());
    ASSERT_EQ(0x0c4b44deu, ImmutableString("refract(1B1B0B").hash32());
    ASSERT_EQ(0x3446c6cau, ImmutableString("refract(2B2B0B").hash32());
    ASSERT_EQ(0x343e737eu, ImmutableString("refract(3B3B0B").hash32());
    ASSERT_EQ(0x2530925bu, ImmutableString("matrixCompMult(5B5B").hash32());
    ASSERT_EQ(0xce0b0283u, ImmutableString("matrixCompMult(ABAB").hash32());
    ASSERT_EQ(0x646d7617u, ImmutableString("matrixCompMult(FBFB").hash32());
    ASSERT_EQ(0x35d2bc55u, ImmutableString("lessThan(1B1B").hash32());
    ASSERT_EQ(0x4c59f3f1u, ImmutableString("lessThan(2B2B").hash32());
    ASSERT_EQ(0xa694989du, ImmutableString("lessThan(3B3B").hash32());
    ASSERT_EQ(0x69652f41u, ImmutableString("lessThan(1C1C").hash32());
    ASSERT_EQ(0xf707f2d5u, ImmutableString("lessThan(2C2C").hash32());
    ASSERT_EQ(0x421d21e5u, ImmutableString("lessThan(3C3C").hash32());
    ASSERT_EQ(0xbb7abcffu, ImmutableString("lessThanEqual(1B1B").hash32());
    ASSERT_EQ(0xf9e4df73u, ImmutableString("lessThanEqual(2B2B").hash32());
    ASSERT_EQ(0xcab81737u, ImmutableString("lessThanEqual(3B3B").hash32());
    ASSERT_EQ(0xef0d2febu, ImmutableString("lessThanEqual(1C1C").hash32());
    ASSERT_EQ(0x931af97fu, ImmutableString("lessThanEqual(2C2C").hash32());
    ASSERT_EQ(0x965473c7u, ImmutableString("lessThanEqual(3C3C").hash32());
    ASSERT_EQ(0x2e4fef86u, ImmutableString("greaterThan(1B1B").hash32());
    ASSERT_EQ(0xa46f126au, ImmutableString("greaterThan(2B2B").hash32());
    ASSERT_EQ(0x525f6fa6u, ImmutableString("greaterThan(3B3B").hash32());
    ASSERT_EQ(0xb9cf953au, ImmutableString("greaterThan(1C1C").hash32());
    ASSERT_EQ(0xba1060a6u, ImmutableString("greaterThan(2C2C").hash32());
    ASSERT_EQ(0x36d7afdeu, ImmutableString("greaterThan(3C3C").hash32());
    ASSERT_EQ(0x98571f82u, ImmutableString("greaterThanEqual(1B1B").hash32());
    ASSERT_EQ(0xce27bec6u, ImmutableString("greaterThanEqual(2B2B").hash32());
    ASSERT_EQ(0xbc669fa2u, ImmutableString("greaterThanEqual(3B3B").hash32());
    ASSERT_EQ(0xe3884196u, ImmutableString("greaterThanEqual(1C1C").hash32());
    ASSERT_EQ(0x63c84382u, ImmutableString("greaterThanEqual(2C2C").hash32());
    ASSERT_EQ(0xa0dedfdau, ImmutableString("greaterThanEqual(3C3C").hash32());
    ASSERT_EQ(0xf68b9ca9u, ImmutableString("equal(1B1B").hash32());
    ASSERT_EQ(0x99b92ec5u, ImmutableString("equal(2B2B").hash32());
    ASSERT_EQ(0x34e1bad1u, ImmutableString("equal(3B3B").hash32());
    ASSERT_EQ(0xab5a7a95u, ImmutableString("equal(1C1C").hash32());
    ASSERT_EQ(0x8417e089u, ImmutableString("equal(2C2C").hash32());
    ASSERT_EQ(0xd06a4419u, ImmutableString("equal(3C3C").hash32());
    ASSERT_EQ(0xeba3b9c1u, ImmutableString("equal(1E1E").hash32());
    ASSERT_EQ(0xdc6a3fd9u, ImmutableString("equal(2E2E").hash32());
    ASSERT_EQ(0x242c7b45u, ImmutableString("equal(3E3E").hash32());
    ASSERT_EQ(0x58ce58e6u, ImmutableString("notEqual(1B1B").hash32());
    ASSERT_EQ(0xb5a0c6cau, ImmutableString("notEqual(2B2B").hash32());
    ASSERT_EQ(0x7173e986u, ImmutableString("notEqual(3B3B").hash32());
    ASSERT_EQ(0x658a699au, ImmutableString("notEqual(1C1C").hash32());
    ASSERT_EQ(0x4c7e8006u, ImmutableString("notEqual(2C2C").hash32());
    ASSERT_EQ(0xd5eb603eu, ImmutableString("notEqual(3C3C").hash32());
    ASSERT_EQ(0x1da7dd5eu, ImmutableString("notEqual(1E1E").hash32());
    ASSERT_EQ(0x2ba422c6u, ImmutableString("notEqual(2E2E").hash32());
    ASSERT_EQ(0x785bc622u, ImmutableString("notEqual(3E3E").hash32());
    ASSERT_EQ(0x32a4419du, ImmutableString("any(1E").hash32());
    ASSERT_EQ(0x82a280f6u, ImmutableString("any(2E").hash32());
    ASSERT_EQ(0x5ea009b3u, ImmutableString("any(3E").hash32());
    ASSERT_EQ(0x0f84439eu, ImmutableString("all(1E").hash32());
    ASSERT_EQ(0xbf879745u, ImmutableString("all(2E").hash32());
    ASSERT_EQ(0xdb8a01f0u, ImmutableString("all(3E").hash32());
    ASSERT_EQ(0xde93f470u, ImmutableString("not(1E").hash32());
    ASSERT_EQ(0xee8bbedbu, ImmutableString("not(2E").hash32());
    ASSERT_EQ(0x128e361eu, ImmutableString("not(3E").hash32());
    ASSERT_EQ(0xdcd239f5u, ImmutableString("gl_DepthRangeParameters").hash32());
    ASSERT_EQ(0x5c63b321u, ImmutableString("gl_DepthRange").hash32());
    ASSERT_EQ(0x5a89e3d6u, ImmutableString("gl_MaxVertexAttribs").hash32());
    ASSERT_EQ(0x6b620a41u, ImmutableString("gl_MaxVertexUniformVectors").hash32());
    ASSERT_EQ(0x42355230u, ImmutableString("gl_MaxVertexTextureImageUnits").hash32());
    ASSERT_EQ(0x081f826fu, ImmutableString("gl_MaxCombinedTextureImageUnits").hash32());
    ASSERT_EQ(0x5625f9cau, ImmutableString("gl_MaxTextureImageUnits").hash32());
    ASSERT_EQ(0x89745003u, ImmutableString("gl_MaxFragmentUniformVectors").hash32());
    ASSERT_EQ(0x55895c64u, ImmutableString("gl_MaxDrawBuffers").hash32());
    ASSERT_EQ(0x3de18904u, ImmutableString("gl_MaxDualSourceDrawBuffersEXT").hash32());
    ASSERT_EQ(0x99ac8d74u, ImmutableString("gl_FragCoord").hash32());
    ASSERT_EQ(0x6024403cu, ImmutableString("gl_FrontFacing").hash32());
    ASSERT_EQ(0x86d91640u, ImmutableString("gl_PointCoord").hash32());
    ASSERT_EQ(0x70b0d69au, ImmutableString("gl_PointSize").hash32());
}

}  // namespace sh
