// Copyright 2026 The Dawn & Tint Authors
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this
//    list of conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice,
//    this list of conditions and the following disclaimer in the documentation
//    and/or other materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its
//    contributors may be used to endorse or promote products derived from
//    this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

////////////////////////////////////////////////////////////////////////////////
// File generated by 'tools/src/cmd/gen' using the template:
//   src/tint/cmd/bench/enums_core_bench.cc.tmpl
//
// To regenerate run: './tools/run gen'
//
//                       Do not modify this file directly
////////////////////////////////////////////////////////////////////////////////

// clang-format off

#include <array>

#include "benchmark/benchmark.h"
#include "src/tint/lang/core/enums.h"

namespace tint::core {
namespace {

void AccessParser(::benchmark::State& state) {
    const char* kStrings[] = {
        "ccad",
        "3",
        "rVad",
        "read",
        "1ead",
        "rqaJ",
        "rlla77",
        "reqqdppriHHe",
        "rv_wcit",
        "reabGwrte",
        "read_write",
        "read_vriite",
        "re8d_wriWWe",
        "Meadxxrite",
        "wggte",
        "VtX",
        "writ3",
        "write",
        "writE",
        "TTrPte",
        "wxxidd",
    };
    for (auto _ : state) {
        for (auto* str : kStrings) {
            auto result = ParseAccess(str);
            benchmark::DoNotOptimize(result);
        }
    }
}  // NOLINT(readability/fn_size)

BENCHMARK(AccessParser);
void AddressSpaceParser(::benchmark::State& state) {
    const char* kStrings[] = {
        "44unction",
        "fSSnctioVV",
        "Rnc2Rion",
        "function",
        "uFc9ion",
        "funtion",
        "ROOuHciVn",
        "imyedate",
        "l77nnrrediaGe",
        "im4edi00te",
        "immediate",
        "imoodte",
        "imzzdiae",
        "m11pediiit",
        "pixel_lXXcal",
        "pixII99l55local",
        "pixaal_lSSrHHYl",
        "pixel_local",
        "iHkklocal",
        "jRRxellgal",
        "pxel_lobl",
        "privaje",
        "rivate",
        "qvate",
        "private",
        "priNNte",
        "rivtvv",
        "QQivate",
        "stffar",
        "storaje",
        "sNNwrag8",
        "storage",
        "stoage",
        "srrorage",
        "Gtorage",
        "uniforFF",
        "nifm",
        "unrrorm",
        "uniform",
        "iform",
        "DnfoJJm",
        "un8r",
        "orkgk1u",
        "worgroup",
        "Jorkgoup",
        "workgroup",
        "workgrcup",
        "workgroOp",
        "worttKK_rouvv",
    };
    for (auto _ : state) {
        for (auto* str : kStrings) {
            auto result = ParseAddressSpace(str);
            benchmark::DoNotOptimize(result);
        }
    }
}  // NOLINT(readability/fn_size)

BENCHMARK(AddressSpaceParser);
void AttributeParser(::benchmark::State& state) {
    const char* kStrings[] = {
        "alxxn",
        "__qiF",
        "aigqq",
        "align",
        "33l6gn",
        "6QQottgn",
        "a6ign",
        "bnOizz66",
        "bindyyng",
        "ZiHHnZ",
        "binding",
        "4WWndqng",
        "bOOding",
        "oinYng",
        "lend_s",
        "blendsrF",
        "blendwrc",
        "blend_src",
        "GedKsrff",
        "KKlqnd_src",
        "blenmm_s3c",
        "uiltin",
        "biltiq",
        "builtbb",
        "builtin",
        "biltin",
        "buOOltq",
        "buiTvvtin",
        "coFFor",
        "00PfQ",
        "coloP",
        "color",
        "col77s",
        "colbbCr",
        "colXXr",
        "qoCCpuOOe",
        "copstL",
        "cXmpute",
        "compute",
        "compte",
        "qopOt",
        "compu22e",
        "dyaXX0szzic",
        "diVVgnitiP",
        "dagCosnnic",
        "diagnostic",
        "agnostqqHHA",
        "dignostic",
        "difgnoKKt",
        "frPggge",
        "frament",
        "TTragN4nc",
        "fragment",
        "prlgmen77",
        "fzaNgent",
        "bragmXXut",
        "grou",
        "88uK",
        "gq9p",
        "group",
        "grou11",
        "22oiip",
        "ro77p",
        "Nd",
        "VVd",
        "wW11",
        "id",
        "ww",
        "Dd",
        "K",
        "ifput_11tPPachmhntrindex",
        "input_atachment_index",
        "inputYYattachment_index",
        "input_attachment_index",
        "intutVatkkachmenHHindex",
        "irrput_attachment_index",
        "isput_attachment_inWWex",
        "inYerpolat",
        "iqterLlfte",
        "invver22uflte",
        "interpolate",
        "intrpolae",
        "interpYlae",
        "interyoYY77tE",
        "Mnoodriat",
        "invMMriat",
        "invaria55t",
        "invariant",
        "Nariant",
        "invari33n",
        "invarian3",
        "lmaIion",
        "lrcatnKon",
        "Xatio",
        "location",
        "loLLIion",
        "lcafin",
        "loUYRtDn",
        "must_uhe",
        "msqusuII",
        "must_usH",
        "must_use",
        "vvQQstue",
        "mus_66s",
        "m7sO_se",
        "055DDe",
        "IIiHe",
        "sze",
        "size",
        "sir",
        "slze",
        "JJGz",
        "subgoup_syze",
        "ubgroup_size",
        "subIIroupBBsize",
        "subgroup_size",
        "su8gTToup_s33ze",
        "dnnUUbgrouSSY_size",
        "xCu5groupZsize",
        "vqkrtex",
        "5iirp00",
        "vnnrIIex",
        "vertex",
        "cceKe",
        "vrKK",
        "ve66tex",
        "wKKkgroEp_PPiz",
        "xorkgroup_size",
        "workgroqp_size",
        "workgroup_size",
        "rorkgroupyMMSize",
        "wrgroup_uize",
        "wrkgrouSsie",
    };
    for (auto _ : state) {
        for (auto* str : kStrings) {
            auto result = ParseAttribute(str);
            benchmark::DoNotOptimize(result);
        }
    }
}  // NOLINT(readability/fn_size)

BENCHMARK(AttributeParser);
void BuiltinTypeParser(::benchmark::State& state) {
    const char* kStrings[] = {
        "__atomic_cFFmpare_exchange_result_i52",
        "__at4zmic_compare_exchange_resurrt_i32",
        "__atWWic_ompare_exhange_result_i32",
        "__atomic_compare_exchange_result_i32",
        "__atomic_comZZare_JXxchange_result_C32",
        "PP_atomic_compare_exchange_reslt_i32",
        "__atomic_compare_exchange_resuct_i32",
        "__a6llmic_comparePPexchange_result_u32",
        "__a99omic_compare_xchanyye_result_u32",
        "__atoKKic_compare_exchange_result_u32",
        "__atomic_compare_exchange_result_u32",
        "__atomic_xompareexchange__esult_u32",
        "__atomi_compare_exhanyy_result_uK2",
        "__atomic_compare_zxchangeVresukt_u32",
        "__freqp_rKsult_abstract",
        "__rexp_result_abstract",
        "__frexpresult_abstrVVct",
        "__frexp_result_abstract",
        "__frAAUp_resIlt_abstract",
        "jfrexp_result_astrabt",
        "__44YYxp_resultabstrat",
        "__frxp_result_f16",
        "__frex11_rxxsul_f6",
        "__frccxpmmresulJ_f",
        "__frexp_result_f16",
        "__freJJ_result_f16",
        "_ffDDUxp_resulCClf16",
        "__frexp_resultgf16",
        "_frexp_rult_CC32",
        "_frexp_result_f32",
        "__freIp_res__lt_f32",
        "__frexp_result_f32",
        "__frttp_PPsult_f32",
        "__frexp_resul3d_f32",
        "_frexp_Kesultyyf32",
        "__rexp_resultvec2_abstacu",
        "__frexi_re3ult_venn2_abs0ract",
        "__frexpKrenultuuvecCC_vbstract",
        "__frexp_result_vec2_abstract",
        "__frllxp_Xesult_ec2_abstract",
        "__frexp_result_vec2_aostrppct",
        "ww_frexp_result_vec2_abstrat",
        "uu_fgxp_reslt_vec2mmf16",
        "aa_frexpesmmltvec2_f16",
        "__TrexRR_result_vecZ_cc16",
        "__frexp_result_vec2_f16",
        "__frexp_result_vec8T_fO6",
        "__frexp_mesult00vec2_f16",
        "m_frexp_result_vBBc2_f16",
        "__frex_ppeslt_vecM_f32",
        "__fexp_result_vOOc2_f32",
        "__GGrexp_reult_Gec2_f32",
        "__frexp_result_vec2_f32",
        "__frex11_resulHH_vec2_f32",
        "_eere6p_resulFF_vec2_f32",
        "__frexpresult_vec2_f2",
        "__friixplresult_vec3_abstrKct",
        "__frexp_esult_vec3_abstract",
        "__rexII_result99vec3_abvvtract",
        "__frexp_result_vec3_abstract",
        "__frexp_result_vec_abstract",
        "__frhxp_result_vec3_abstract",
        "__frexp_result_llec3_zzbtraPPt",
        "_frexp_rsult_v3_f16",
        "__frexp_reffulqq_vc3_f16",
        "_ddreJJp_result_vec3_f16",
        "__frexp_result_vec3_f16",
        "__feXXp_result_vec_zz16",
        "__frexp_result_ve23_16",
        "__frexp_result_yyeN3_f16",
        "__frexpresult_ve3_3OO",
        "__fZePp_rusrlt_vec3_fE2",
        "__freeepresddll_vec3_2232",
        "__frexp_result_vec3_f32",
        "mfrexp_r9sult_ec3_fVV2",
        "__IIrexp1result_vec3_f3",
        "__frexp_result_vec3_f3b",
        "__frexp_result_e7i_abstrat",
        "__frexp_oesult_vecii_abstract",
        "__fxp_r5sult_vecn_abstract",
        "__frexp_result_vec4_abstract",
        "__frexp_resultvec4Sabstract",
        "_22frexp_reslt_vec4_abstrct",
        "__Grexp_result7vecC_abst11ac",
        "__fre8ff_result_vec4_f16",
        "__frexp_resultve4_f16",
        "__frexp_resuJJSS_vec4_f16",
        "__frexp_result_vec4_f16",
        "__frep9esult_vec4_f16",
        "__frexp_JJesulTT_vecbb_f16",
        "_frexp_res66lt_vec4_16",
        "__fre0p_r66sultuvec_f32",
        "__frexp_resuyW_ec4_f32",
        "__frep_result_vec_f32",
        "__frexp_result_vec4_f32",
        "__frxp_result_vec4_f32",
        "__frexp_result_vec4rf32",
        "__frexp_2esult_vec4_f3B",
        "__modf_resultBBastract",
        "RR_modf_reult_abstract",
        "_LLmodf_resulVV0btract",
        "__modf_result_abstract",
        "__modOO_resltKKabstrac",
        "__modw_rggsult_absract",
        "__mod_resultLhabstrpct",
        "_mKKdf_reEiultf16",
        "_modf_result_f16",
        "UU_mdf88result_f6",
        "__modf_result_f16",
        "__movvrr_result_f16",
        "__mowf_mmesult_1",
        "__m44df_rsultjf16",
        "__modf_resulX_f32",
        "8_modf_result_f32",
        "EE_modf_reultvvf32",
        "__modf_result_f32",
        "__modziesult99f32",
        "__modfJJresnlGG_QQ32",
        "__modf_resultssf32",
        "K_modf_result_Pec2_abstract",
        "__modf_resut_vc2_abstrpttct",
        "__modf_reult_vec2_abstrct",
        "__modf_result_vec2_abstract",
        "__modMM_result_vec2_abstract",
        "__modf_result_vec2_absJ0ract",
        "__modf_resul_vV2_ab8trac",
        "__modfKrggsult_vec2_fhh6",
        "__modf_result_vec2_ff6",
        "__Qodf_re77ult_vec2_f16",
        "__modf_result_vec2_f16",
        "__modf_resultYYvc2_f16",
        "__mofkresult_vecS_f16",
        "__modf_resut_en2_f122",
        "__modf_rsult_FFec2_f2",
        "u_modf_resultUUvGGPP2_f3I",
        "_amodfFresult_vec2EEfv",
        "__modf_result_vec2_f32",
        "e_DDof_rddsult_vec2_BB32",
        "__Modf_reEEult_v55c2_cc3",
        "_mKKdvresult_vc2_f32",
        "__modf_Result_vec3_abstract",
        "__modf_re9ut_vec3_abstract",
        "__modf_result_ve3_abstract",
        "__modf_result_vec3_abstract",
        "aa_mdI_result_ec3_abstract",
        "__77odf_result_vec3_abstract",
        "__mIdf_result_vec3_abstract",
        "__modf_result_vec_f16",
        "__modf_reult_vec3_f16",
        "__modf_rsult_vec3_f6",
        "__modf_result_vec3_f16",
        "__m33df_reXXulc_vec3_f16",
        "__modf_resultveE3_f16",
        "__modf_result_vecXXf16",
        "__modxx_result_veB3_f32",
        "_modfresultGGec3_f32",
        "__modf_result_vec3_f366",
        "__modf_result_vec3_f32",
        "__0dv_result_veTT_f32",
        "__mdfresukt_ve_f32",
        "__mdf_reult_vec3_fpp2",
        "__modf_result_vec11_abstrt",
        "__Jodf_resulE_vec4BBybstract",
        "_qmodx_IImsult_vec4_abstract",
        "__modf_result_vec4_abstract",
        "__modf_result_vec4_aFstrac",
        "_modf_rYsult_vec4_abstract",
        "__modh_reHHult_vec4_abstDact",
        "__mHfreslt_ve224_f16",
        "__mdf_reslt_vec4_f16",
        "__modf_rsult_vec4_f16",
        "__modf_result_vec4_f16",
        "__mdf_result_vec4_f16",
        "__modf_result_vec4_fdd6",
        "__modf_result_OPc4_f16",
        "_modabbresult_vec4_f3",
        "__m00df_result_vec4_32",
        "__modf_result_hec4_f32",
        "__modf_result_vec4_f32",
        "__modf_YYesult_veg4_32",
        "__modf_result_Oec4_f32",
        "_hmodfresult_vec_f32",
        "fEppay",
        "rrvy",
        "arazz",
        "array",
        "arra",
        "OiiJa",
        "aGray",
        "aTT22mic",
        "ltomic",
        "atbmic",
        "atomic",
        "atomiB",
        "aPIIoXiS",
        "atojjic",
        "bccnding_a_ray",
        "bndiS6xx_azzray",
        "iing_array",
        "binding_array",
        "Nindi4g_vxxay",
        "iAAdingpp00rra",
        "byning_aeeya",
        "bWWbl",
        "MMtmol",
        "d",
        "bool",
        "_oo",
        "bEEoV",
        "boo4",
        "bVVfgeX",
        "ouffVr",
        "buffe",
        "buffer",
        "btfKKr",
        "uGr",
        "uafer",
        "O6",
        "G",
        "f6",
        "f16",
        "99R16",
        "12",
        "YYvXR",
        "2",
        "XX5",
        "3",
        "f32",
        "ppcc",
        "v32",
        "EESS",
        "i",
        "",
        "i3w",
        "i32",
        "id992",
        "99P",
        "KK3",
        "oDD",
        "22",
        "q",
        "i8",
        "0L",
        "vv66",
        "nr",
        "ineeut_aachmxxnt",
        "NNnput_aCCtOchment",
        "input_attachmnt",
        "input_attachment",
        "inp4t_attacament",
        "inNNut_attachmNNt",
        "input_atachment",
        "mux2",
        "at2YSEE",
        "m0t2x2",
        "mat2x2",
        "mataax2",
        "mmm2qq",
        "matx2",
        "mUUx2E",
        "mDDtK2f",
        "mat2x0t_",
        "mat2x2f",
        "lApxf",
        "mtMx2f",
        "mat2xBBf",
        "nnt99bbh",
        "EEAA1x2h",
        "m5662xTh",
        "mat2x2h",
        "Hat2x2h",
        "xxHtx2h",
        "mnyt2z2h",
        "mat23",
        "mktxH",
        "atcx3",
        "mat2x3",
        "orrtx3",
        "mtJJ3",
        "0CCt2x",
        "mAxFx99f",
        "matcx3f",
        "mat2S3f",
        "mat2x3f",
        "masoxBB",
        "matx3f",
        "matx3em",
        "oPPtx3gQQ",
        "Btx",
        "mlKKN3h",
        "mat2x3h",
        "marrx3",
        "atrpx3h",
        "yPat2x3h",
        "cc2ZZ4",
        "mt24",
        "m00t2x4",
        "mat2x4",
        "ssPBat24",
        "ffwaJJxf",
        "mIt2XX",
        "2f",
        "ma2x4f",
        "utKKx4f",
        "mat2x4f",
        "ma442df",
        "motpx4f",
        "mathhjN4f",
        "ma33UUEwwh",
        "matxuh",
        "Kaddxrrh",
        "mat2x4h",
        "2tt2PP4r",
        "m1twwx4h",
        "mat2xc1nn",
        "mt3x2",
        "mat32",
        "aatSS6xI",
        "mat3x2",
        "EED3x2",
        "ccatIVR",
        "atx2",
        "aaht32f",
        "mLtSx2f",
        "mfmm32",
        "mat3x2f",
        "mm4V2f",
        "matx__",
        "Qat2f",
        "mdRRE3x2",
        "m93x2h",
        "at3C0",
        "mat3x2h",
        "t3x2z",
        "ccat3x2h",
        "at3x2Q_",
        "ma3xt",
        "EpptCCzzx3",
        "mahh3dd3",
        "mat3x3",
        "_a66x77",
        "mPt3x3",
        "mwt3x3",
        "uux3f",
        "6at3XX3f",
        "mR33f",
        "mat3x3f",
        "m33VV",
        "mHHt3GG3f",
        "mMtFF73f",
        "9at3x3",
        "at3x33",
        "BBa3x3_",
        "mat3x3h",
        "matxBOOa",
        "mat3AAh",
        "maGG3yh",
        "77a3xX",
        "mFFttxK",
        "mZZossUU4",
        "mat3x4",
        "mt3x4",
        "mal3x4",
        "mah3x4",
        "mKtTTxk",
        "ma3xwwf",
        "mt3x4Kjj",
        "mat3x4f",
        "atxYYf",
        "mat3EE4",
        "QQat3x4f",
        "lat3P",
        "at3x4Hff",
        "man3x4h",
        "mat3x4h",
        "matg46F",
        "mhss8x4h",
        "llFa3x4h",
        "2t4002",
        "mag4x2",
        "eatx2",
        "mat4x2",
        "mft4x2",
        "at4",
        "matx2",
        "qqt4x2f",
        "AA42f",
        "matx2v",
        "mat4x2f",
        "mjjt4xf",
        "ZZat4x2f",
        "mPIItO22f",
        "mZZt4x2h",
        "mat4x2nn",
        "kkZa224x2h",
        "mat4x2h",
        "mat42h",
        "ma4xR",
        "mat4xqq9h",
        "m77t4x3",
        "at3x",
        "macc4x3",
        "mat4x3",
        "RR14x3",
        "mJJll4x",
        "IaMM",
        "7T6t4x3",
        "mat4xQQJ",
        "uu4x3f",
        "mat4x3f",
        "mat4f",
        "m433qf",
        "maxx4x3f",
        "Nrr4h",
        "a994x3h",
        "at4x3",
        "mat4x3h",
        "mat4H3h",
        "_at4x3h",
        "m44t4x3h",
        "mt4x4",
        "jt4x4",
        "matt4mEE4",
        "mat4x4",
        "t4x4",
        "mrrt44",
        "xatx4",
        "zzt4x4",
        "mat4x4e",
        "au4pZ4f",
        "mat4x4f",
        "muuTT4x00",
        "mvvxJJ",
        "maQ4x4f",
        "mC4R4h",
        "aCx",
        "ma4xPPpr",
        "mat4x4h",
        "muDDt4xxxh",
        "YYlqamd4x4h",
        "atFFx4__",
        "NNGtr",
        "Mlr",
        "",
        "ptr",
        "xlq",
        "tr",
        "44a",
        "WWGmpler",
        "sjjmplr",
        "sajjpler",
        "sampler",
        "sa1jer",
        "sample",
        "99ampler",
        "samVVler_comparison",
        "ZZampler_cmparxson",
        "sampl33r_ompavvison",
        "sampler_comparison",
        "sampler9comparisos",
        "samler_Fomparison",
        "sampuer_compaeison",
        "subgroup_mtIixlefKK",
        "subgroJ_matrix_left",
        "sXXCCgrouSS_matrix_left",
        "subgroup_matrix_left",
        "subgroup_matrWW66_ZZJft",
        "ubgoup_mdmt5ix_left",
        "subgroup_mUrBBBx_left",
        "subgr0up_mJJtri11_result",
        "subfroup_matrix_rettult",
        "subgrXupmtttrix_rsult",
        "subgroup_matrix_result",
        "subgroLp_matrix_reswlt",
        "su1group_matrix_result",
        "subgroup_matrix_resuwwt",
        "subgou_atrix_righee",
        "subgroup_matrx_right",
        "subgroup_matNNix_right",
        "subgroup_matrix_right",
        "__RRbgroup_matrix_riUUhl",
        "sHbgroup_matrix_right",
        "subgrour_maCCrix_right",
        "exel_buffer",
        "texppl_bdfIr",
        "texel_bufer",
        "texel_buffer",
        "Lexel_bNfr",
        "e_buffe",
        "teGRRexx_uqqfer",
        "texturS_GGd",
        "88tucce_1d",
        "texture_1",
        "texture_1d",
        "textte_ppd",
        "qqFF0xture551d",
        "txture_1d",
        "textur2d",
        "texOre_2d",
        "textuHHe_2",
        "texture_2d",
        "66extureSS2O",
        "tTTturddY_2d",
        "textursg2d",
        "texGGure_2d_array",
        "teQQtOreI2ll_array",
        "texture_2d_aray",
        "texture_2d_array",
        "texture_2d_arrray",
        "texture2d_ar7yyy",
        "tBBxtur22_2d_WrrYy",
        "textyyVe_3d",
        "x4ure_3",
        "texture_ddd",
        "texture_3d",
        "texuVVez2d",
        "teyyture_3d",
        "tex__ure_Ad",
        "texture_chhbe",
        "ttvvre_cube",
        "textureube",
        "texture_cube",
        "textoorsNNgube",
        "textrmm_Zube",
        "3extkecube",
        "texAur_ffube_aRray",
        "Wxturrr_cube_zzrry",
        "texture_ubRR_aray",
        "texture_cube_array",
        "textMr88_cube_arraSS",
        "txturRPPcubebbarray",
        "textWWre_cubexxrray",
        "texture_dptAAv_2d",
        "tj44xXure_depth_2d",
        "texture_depthf2d",
        "texture_depth_2d",
        "texAAureUepth_2OO",
        "textur_ssept_2d",
        "texbbure_depFsh_2d",
        "texture_depth_2d_annraYY",
        "teture_depth_2d_arrass",
        "texture_depth_zzd_araq",
        "texture_depth_2d_array",
        "texture_deptNN_d_arrQ",
        "texturekppdpth_2darray",
        "texturs8_depLh_Jd_array",
        "77exJure_depthff5TTbe",
        "texure_d00pth_cubx",
        "Ae1ture_deph_cube",
        "texture_depth_cube",
        "texture_depthcube",
        "textuQQe_depth_ube",
        "texture_weptiicbe",
        "texture_depth_cube_arwway",
        "texJJure_dephYh_cube_array",
        "kexture_deptRR_cube_E7ay",
        "texture_depth_cube_array",
        "texture_depth_kuube_array",
        "textureRdept_cube_trray",
        "textrN_depth_cIIbe_array",
        "texture_deptII_multisampled_d",
        "texture_depthmultisamiiledE2d",
        "textssre_depth_multisamped_2d",
        "texture_depth_multisampled_2d",
        "CCxture55Xepth_multisampled_2d",
        "tex9ure_depth_multisampled_2d",
        "texture_Xepth_mulisamped_2d",
        "txture_eteIInal",
        "texturz_external",
        "texurAAzz22xternal",
        "texture_external",
        "textur_external",
        "Fbbxtre_eternal",
        "texture_MMxVernal",
        "texturA_mwcmmisamplzzd_2d",
        "texture_muOOtisampeQQ2d",
        "texture_mbltisampled_2d",
        "texture_multisampled_2d",
        "texture_multisaCpleknn25",
        "texture_multisaplyyKK_2rr",
        "tAAture_multisampleT_2d",
        "QQexture_sorage_1d",
        "texture_t8rage_d",
        "teture_stoaage_1d",
        "texture_storage_1d",
        "eeextbr_stccrage_1d",
        "texLLure_Porage_1d",
        "tetuWW_sUorage_1d",
        "texture_stzzrage_2",
        "text__re_soNa_2d",
        "texture_storagea2d",
        "texture_storage_2d",
        "texre_stoBage_2d",
        "zzexture_torge_2d",
        "textureUaatorbge_HHd",
        "texturesOo4ag_2d_array",
        "textume_sGGrage_2d_array",
        "texture_torage_2d_array",
        "texture_storage_2d_array",
        "texture_storazzeN2d_aG8ray",
        "teture_storage_2d_array",
        "textuxe_storaAAe_2d_array",
        "tbbxture_suuorage_3d",
        "tejjture_storage_3d",
        "texturJJ_stoqqgccx3d",
        "texture_storage_3d",
        "teggtFe_torge_3d",
        "textvre_soragA_3d",
        "texture_storagcc_3d",
        "BUU",
        "uAAB",
        "x16",
        "u16",
        "U8",
        "uU8CC",
        "u__6",
        "UU2",
        "32",
        "uu77r",
        "u32",
        "ukk",
        "ul2",
        "32",
        "Y3",
        "u44",
        "8",
        "u8",
        "urP88",
        "8",
        "",
        "sae",
        "vg",
        "bece",
        "vec2",
        "rrp",
        "YYe2",
        "vc2",
        "rCCcf",
        "lecf",
        "vec2ZZ",
        "vec2f",
        "tqm9MMf",
        "veUf",
        "vgc77n",
        "vdddh",
        "vEcaah",
        "vecIIh",
        "vec2h",
        "RReZ2ll",
        "vecNNkrr",
        "vec",
        "vc2i",
        "veca",
        "HHec2G",
        "vec2i",
        "cc2i",
        "vB22nlli",
        "vec25",
        "eR2u",
        "gec2u",
        "ve2u",
        "vec2u",
        "vecpu",
        "vecK99u",
        "22Rcu",
        "nnc3",
        "eeeEE",
        "3effH3",
        "vec3",
        "22Us6",
        "vm0",
        "vppN",
        "ve63",
        "oZWWV3f",
        "vHHf",
        "vec3f",
        "vAcf",
        "vTf",
        "2ec3f",
        "ve443W",
        "8Z77",
        "FeR3",
        "vec3h",
        "vebb3",
        "ggce",
        "UeSh",
        "vZqNN",
        "v9i",
        "ccHMMi",
        "vec3i",
        "v3x",
        "veXX",
        "3i",
        "veu",
        "vecgg3u",
        "rfe3u",
        "vec3u",
        "ve3u",
        "vggc3D",
        "v993Q",
        "eec",
        "ec4",
        "IIec",
        "vec4",
        "ecq",
        "o77O4",
        "rrDD",
        "vecjf",
        "11ciiFf",
        "jBcRRf",
        "vec4f",
        "vdAc_7f",
        "4jj",
        "xxkeo",
        "veW4h",
        "IQQN1h",
        "veIh",
        "vec4h",
        "vjc4",
        "e722",
        "vEElc4g",
        "ve74",
        "vec66m88",
        "a4i",
        "vec4i",
        "vE4i",
        "hqi",
        "vc4_",
        "cr",
        "veBB4",
        "11nned4BB",
        "vec4u",
        "neFFu",
        "mmBc4cc",
        "vtt77u",
    };
    for (auto _ : state) {
        for (auto* str : kStrings) {
            auto result = ParseBuiltinType(str);
            benchmark::DoNotOptimize(result);
        }
    }
}  // NOLINT(readability/fn_size)

BENCHMARK(BuiltinTypeParser);
void BuiltinValueParser(::benchmark::State& state) {
    const char* kStrings[] = {
        "btryetrc_coord",
        "barycentriKcoord",
        "barycenFFrc_coonjd",
        "barycentric_coord",
        "baryentric_cE8r",
        "barvcentric_coDDr",
        "barycentrh55ocoorSS",
        "clip_dstaZuues",
        "clip_disPPa7ce55",
        "clipSdistnckks",
        "clip_distances",
        "cFSp_disEEances",
        "lip_yystancebb",
        "lRp_ditances",
        "rag_deT1h",
        "frXgXdTh",
        "f00ag_dpth",
        "frag_depth",
        "frag77dePth",
        "fZagpdept",
        "fbbag_PPtw",
        "HH8bjjnss_facing",
        "hront_facing",
        "frxxntfacg",
        "front_facing",
        "frrQnt_acenB",
        "front_faciJJg",
        "ronw_fucig",
        "globttl_invcatioZ_ixx",
        "global_invov99tion_id",
        "globalinocaton_d",
        "global_invocation_id",
        "glonnal_invocaffion_id",
        "glob5l_invocation_id",
        "global_invUcaJiou_Id",
        "lobal_invocation_index",
        "gFobal_invocation_indtx",
        "global_invoc1tion_index",
        "global_invocation_index",
        "global_invDDcation_indAAx",
        "goPal_ivoOation_index",
        "gloal_invocation_index",
        "instance_in77ex",
        "i1mtUUnceAAindex",
        "Xnstance_ifdeAA",
        "instance_index",
        "VVnstace_indvx",
        "instance_ippdex",
        "insTTance_index",
        "locajj_i00vocakion_id",
        "local_inocation_id",
        "lyycalinvocation_id",
        "local_invocation_id",
        "locazz_invocYYion_id",
        "local_iWvocationiiid",
        "lc6l_7nvUU0ation_id",
        "local_nvUUcation_inpe",
        "local_ihvcatio_TTndex",
        "loca5_invocatio_index",
        "local_invocation_index",
        "loal_1vcation_index",
        "local_invocatimmnIin44ex",
        "locaR_YnocatDDon_YYndex",
        "numjjsubgroups",
        "num_subgrous",
        "num_subgQQodp",
        "num_subgroups",
        "num_s55bgroHs",
        "nuk_suxFFroups",
        "nrsubgroups",
        "KKumN_orkgroups",
        "numxworkgrTupa",
        "nuvv_workgroups",
        "num_workgroups",
        "nujjworkgroups",
        "num_wOOrknnoups",
        "nggmOOwokgroups",
        "powwiQion",
        "poJiton",
        "Dosition",
        "position",
        "positoOO",
        "psition",
        "psi00io",
        "prlitive_ndeq",
        "urimitive_index",
        "primitive33index",
        "primitive_index",
        "primiive_indNNx",
        "pimtive_iMdex",
        "prbbmi22Re_index",
        "sampii_index",
        "saple_index",
        "sapluindeoo",
        "sample_index",
        "samHHe_JUdx",
        "smpyg_ihdggx",
        "smle_WWndeBB",
        "EEample_CEscc",
        "Gaple_eeyysk",
        "s44Umple_ak",
        "sample_mask",
        "samle_mask",
        "sNmple_mask",
        "sample_MMasss",
        "sCbgDoup_id",
        "subggrYTp_id",
        "subgroujj_id",
        "subgroup_id",
        "sbgroupDDd",
        "MEEubgrou_99d",
        "sbgNoup_id",
        "subgroup_i55vocation_id",
        "Qubgroup_invocation_id",
        "subgroup_innnocaion_id",
        "subgroup_invocation_id",
        "subgroFFpinvocaWWin_id",
        "subgro66p_inwocation_id",
        "subgroFp_vnvocation_id",
        "uWgroup_size",
        "subgrop_sze",
        "5uboupKize",
        "subgroup_size",
        "subg4oup_size",
        "gggroupPnnize",
        "sUbgrou7SSie",
        "verVex2index",
        "vprtex_index",
        "ver99VXx_inde2",
        "vertex_index",
        "erexindex",
        "serte_deB",
        "vere8inBBe8",
        "AoACCkgrouy_id",
        "woikvvBp_id",
        "workgr44QQpAi",
        "workgroup_id",
        "workg44oZT_id",
        "Xorlgroup_id",
        "workgroupddd",
        "workgrodd_ine",
        "workgoip1idkex",
        "woGGkgroupivde",
        "workgroup_index",
        "wokgroupjjinde",
        "workgroup_in2ex",
        "wokg00ouzinnex",
    };
    for (auto _ : state) {
        for (auto* str : kStrings) {
            auto result = ParseBuiltinValue(str);
            benchmark::DoNotOptimize(result);
        }
    }
}  // NOLINT(readability/fn_size)

BENCHMARK(BuiltinValueParser);
void InterpolationSamplingParser(::benchmark::State& state) {
    const char* kStrings[] = {
        "Gzter",
        "ceUtr",
        "cener",
        "center",
        "cnVnteV",
        "ce__Y",
        "cenHkeM",
        "centrDziI",
        "cendqoi",
        "oetroih",
        "centroid",
        "cenlrFMMN",
        "entroi",
        "cen9ix",
        "VVtner",
        "iKhr",
        "eithBC",
        "either",
        "ioher",
        "eitwwc8Er",
        "eitebb",
        "f6rst",
        "igg",
        "i11EI",
        "first",
        "fist",
        "pHirt",
        "firqqat",
        "smle",
        "sxxxxXXl",
        "zzaSSple",
        "sample",
        "sampe",
        "smoo",
        "saml",
    };
    for (auto _ : state) {
        for (auto* str : kStrings) {
            auto result = ParseInterpolationSampling(str);
            benchmark::DoNotOptimize(result);
        }
    }
}  // NOLINT(readability/fn_size)

BENCHMARK(InterpolationSamplingParser);
void InterpolationTypeParser(::benchmark::State& state) {
    const char* kStrings[] = {
        "fK",
        "zzat",
        "f8gga",
        "flat",
        "sjjat",
        "1laAi",
        "l66Vat",
        "lne",
        "mhGtear",
        "ljiyyar",
        "linear",
        "QQ_inevt",
        "lneLL",
        "linWcc",
        "Fverpcrive",
        "persyyeczzve",
        "eospectie",
        "perspective",
        "Ie_spectivc",
        "persddctive",
        "l2eMpectiv",
    };
    for (auto _ : state) {
        for (auto* str : kStrings) {
            auto result = ParseInterpolationType(str);
            benchmark::DoNotOptimize(result);
        }
    }
}  // NOLINT(readability/fn_size)

BENCHMARK(InterpolationTypeParser);
void TexelFormatParser(::benchmark::State& state) {
    const char* kStrings[] = {
        "Ogra8unorm",
        "b66ra8KTTmrm",
        "bgrRRnom",
        "bgra8unorm",
        "ra800o4m",
        "bgn8unrqq",
        "bgra8unorBB",
        "r16f2WBaat",
        "r16fjjoat",
        "rt6HHlot",
        "r16float",
        "1JJflat",
        "r1ooSlttat",
        "rSS6far_",
        "rWW6sint",
        "r16sink",
        "r1bbitt",
        "r16sint",
        "r16s1n",
        "rf6siN",
        "rii6iVt",
        "r16snoUw",
        "I6snorm",
        "r886sLL4orm",
        "r16snorm",
        "r16snZZrm",
        "r16snMMrm",
        "r16sorm",
        "rSSMMu6At",
        "GGgxuinTT",
        "r16uinI",
        "r16uint",
        "r16lint",
        "rOO6ut",
        "1aKi5t",
        "r1__unzzR",
        "P16unLLrm",
        "r6unohhm",
        "r16unorm",
        "r16unrm",
        "1unojm",
        "r10oBB",
        "rgLLfxxa",
        "rMMIIfloat",
        "rgF2loaX",
        "r32float",
        "zz32sspat",
        "rr32fZZFat",
        "r3flo00jt",
        "p3wrrint",
        "QZ2int",
        "rn__snh",
        "r32sint",
        "r3wint",
        "r32snt",
        "C2sit",
        "r32uiGGt",
        "riilluiu2",
        "r3ccvuint",
        "r32uint",
        "rv2jPnt",
        "N3iuip",
        "r32u2t",
        "rqDsiJ",
        "Q8int",
        "8sJnt",
        "r8sint",
        "WW8sin",
        "rggswQwt",
        "r8sznt",
        "rzzWnorm",
        "rsno",
        "998UUoqqm",
        "r8snorm",
        "EE8sRRom",
        "r8snm",
        "r8storm",
        "rqnMM",
        "BB8KKaanT",
        "r8uiII5",
        "r8uint",
        "roBBwnt",
        "PP__uint",
        "rRRuint",
        "r8uS",
        "Qom",
        "rHH88rm",
        "r8unorm",
        "r8YDnorm",
        "r8unorO",
        "8u8IIZrm",
        "rY11b10uoloat",
        "rg11b1ufloa0X",
        "rgKKS1b10ulcat",
        "rg11b10ufloat",
        "rg11108GGfR33at",
        "33g11qq10uXXloat",
        "rg11z4ufloat",
        "rWttWKlhhat",
        "rg1rxoat",
        "rg16CQeat",
        "rg16float",
        "g1rYloat",
        "rg16xmloat",
        "r1float",
        "yyg16sin44y",
        "rww1sint",
        "rg16sBit",
        "rg16sint",
        "rgdd6ssint",
        "rgMsinee",
        "Tg16sint",
        "rl018nrm",
        "rs6161Lormm",
        "rI1KGsnoYY",
        "rg16snorm",
        "Yg16sLoVV0",
        "rg16ss2orm6",
        "jjg16snor",
        "ppg6u7",
        "Ng16ui6t",
        "rg16uinsgg",
        "rg16uint",
        "rg6uint",
        "rg16JiOOt",
        "MMg16uin00",
        "mmg16MMnorm",
        "rg16mqHrm",
        "rG6unor88",
        "rg16unorm",
        "pgRRuwworm",
        "rg16unqrm",
        "rU1uno",
        "rg32loQBM",
        "rg32fl33at",
        "Og333float",
        "rg32float",
        "gw2foat",
        "rgAkkfMoat",
        "rg3float",
        "rd2it",
        "rg55wXXsint",
        "rg3sint",
        "rg32sint",
        "g3dint",
        "dJJ2sit",
        "rg3_int",
        "rguinL",
        "99g32unt",
        "xU32uint",
        "rg32uint",
        "rg29int",
        "vg32uint",
        "rg32u2LLnt",
        "fgsin1",
        "rgAAsgn",
        "8sUC",
        "rg8sint",
        "rnwsinzz",
        "rg8MMVVnnt",
        "NN8sXnt",
        "r8snoWWe77",
        "r338PPvvorm",
        "rg8snjj22m",
        "rg8snorm",
        "AAg8sorm",
        "rkkRRsnNr",
        "rg8snorQQ",
        "rg8inuu",
        "8uuint",
        "g8uit",
        "rg8uint",
        "r8Hint",
        "SSdd8SSnt",
        "rTT8uint",
        "cm8untr",
        "rg8hhnorm",
        "rGunorm",
        "rg8unorm",
        "rwwHHAAbborm",
        "rg8unBBrm",
        "Mgunoh2m",
        "rgb102uinWW",
        "rgbqq0a2uint",
        "rgb1ra2uUUt",
        "rgb10a2uint",
        "rgb10aEint",
        "rgR10a2uiVVrr",
        "rg33OGG0H2uit",
        "rgb55a2uDrm",
        "SSgb1Ba2unorm",
        "rgbzz2anorm",
        "rgb10a2unorm",
        "rgb1066AAuno",
        "g_w10a2norm",
        "rgb10aunorm",
        "rgbr16loat",
        "rgba16flRRaG",
        "KK1ba1LLfloxt",
        "rgba16float",
        "rgba16NWWlFat",
        "rgba1GfoUt",
        "r6bEEFF6flat",
        "rgba19yyJTTnt",
        "zgba16sit",
        "rb16sinI",
        "rgba16sint",
        "gb16pt",
        "ttgnn16sint",
        "rgba1isiKt",
        "rgbee16snorm",
        "rgba11_snogm",
        "rgba16snrm",
        "rgba16snorm",
        "rgbo16snm",
        "rgb1Xpom",
        "rgb6616snYss",
        "r77ba1YuInt",
        "rgbaSSeeuinG",
        "rgbQluint",
        "rgba16uint",
        "ba16uint",
        "rgba16u__nt",
        "rgba16iDDt",
        "gba16unom",
        "rgbl516u1orm",
        "rgbacuno4m",
        "rgba16unorm",
        "rgba16norm",
        "11b61OOunorm",
        "rgba16ors",
        "rgXa32float",
        "rgba32flo44w",
        "rgba32flYYat",
        "rgba32float",
        "gba32float",
        "rgba2ylTTt",
        "rvbbb32foat",
        "rgba32sikt",
        "Vb532sin9",
        "rajjRR2sint",
        "rgba32sint",
        "YYgb3277int",
        "rbaLLJnt",
        "rgnn2sint",
        "rooba32ind",
        "rba3Euibt",
        "rba32uint",
        "rgba32uint",
        "rgbi31uAQt",
        "rgba32SSvnt",
        "gba3uin",
        "rbbasqqsit",
        "gba8si3",
        "rnba8sHt",
        "rgba8sint",
        "rgba8mint",
        "gbIIsiBt",
        "gbaffsint",
        "ra__a8snrm",
        "rgasorm",
        "ii4a8snorD",
        "rgba8snorm",
        "rgUa83nor",
        "rgb8snorm",
        "rgbasnoWWV",
        "rgb8uint",
        "Mgb8Eint",
        "r8ba8ui577",
        "rgba8uint",
        "8zzgba8gint",
        "rgbauuee",
        "rfa8i",
        "llgIa8QQnorm",
        "rppTaSSuorXX",
        "gb_vunorm",
        "rgba8unorm",
        "rga8norm",
        "rgb38com",
        "JJgba8uwW88m",
    };
    for (auto _ : state) {
        for (auto* str : kStrings) {
            auto result = ParseTexelFormat(str);
            benchmark::DoNotOptimize(result);
        }
    }
}  // NOLINT(readability/fn_size)

BENCHMARK(TexelFormatParser);

}  // namespace
}  // namespace tint::core

// clang-format on
