# Copyright 2024 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/fuzz/wgsl/dictionary.txt.tmpl
#
# To regenerate run: './tools/run gen'
#
#                       Do not modify this file directly
################################################################################

"!"
"!="
"%"
"%="
"&"
"&&"
"&="
"("
")"
"*"
"*="
"+"
"++"
"+="
","
"-"
"--"
"-="
"->"
"."
"/"
"// AAAA"
"// AAAB"
"// ABBB"
"// BAAA"
"// BBBA"
"// BBBB"
"/="
":"
";"
"<"
"<<"
"<<="
"<="
"="
"=="
">"
">="
">>"
">>="
"@"
"["
"]"
"^"
"^="
"_"
"__atomic_compare_exchange_result"
"__atomic_compare_exchange_result_i32"
"__atomic_compare_exchange_result_u32"
"__frexp_result"
"__frexp_result_abstract"
"__frexp_result_f16"
"__frexp_result_f32"
"__frexp_result_vec"
"__frexp_result_vec2_abstract"
"__frexp_result_vec2_f16"
"__frexp_result_vec2_f32"
"__frexp_result_vec3_abstract"
"__frexp_result_vec3_f16"
"__frexp_result_vec3_f32"
"__frexp_result_vec4_abstract"
"__frexp_result_vec4_f16"
"__frexp_result_vec4_f32"
"__in"
"__modf_result"
"__modf_result_abstract"
"__modf_result_f16"
"__modf_result_f32"
"__modf_result_vec"
"__modf_result_vec2_abstract"
"__modf_result_vec2_f16"
"__modf_result_vec2_f32"
"__modf_result_vec3_abstract"
"__modf_result_vec3_f16"
"__modf_result_vec3_f32"
"__modf_result_vec4_abstract"
"__modf_result_vec4_f16"
"__modf_result_vec4_f32"
"__out"
"__packed_vec3"
"__point_size"
"__tint_materialize"
"a"
"abs"
"acos"
"acosh"
"alias"
"align"
"all"
"any"
"array"
"arrayLength"
"asin"
"asinh"
"atan"
"atan2"
"atanh"
"atomic"
"atomicAdd"
"atomicAnd"
"atomicCompareExchangeWeak"
"atomicExchange"
"atomicLoad"
"atomicMax"
"atomicMin"
"atomicOr"
"atomicStore"
"atomicSub"
"atomicXor"
"b"
"bgra8unorm"
"binding"
"bitcast"
"blend_src"
"bool"
"break"
"builtin"
"case"
"ceil"
"center"
"centroid"
"chromium_disable_uniformity_analysis"
"chromium_experimental_framebuffer_fetch"
"chromium_experimental_pixel_local"
"chromium_experimental_push_constant"
"chromium_experimental_subgroups"
"chromium_internal_graphite"
"chromium_internal_input_attachments"
"chromium_internal_relaxed_uniform_layout"
"chromium_testing_experimental"
"chromium_testing_shipped"
"chromium_testing_shipped_with_killswitch"
"chromium_testing_unimplemented"
"chromium_testing_unsafe_experimental"
"clamp"
"color"
"compare_value"
"compute"
"const"
"const_assert"
"continue"
"continuing"
"cos"
"cosh"
"countLeadingZeros"
"countOneBits"
"countTrailingZeros"
"cross"
"default"
"degrees"
"depth"
"derivative_uniformity"
"determinant"
"diagnostic"
"discard"
"distance"
"dot"
"dot4I8Packed"
"dot4U8Packed"
"dpdx"
"dpdxCoarse"
"dpdxFine"
"dpdy"
"dpdyCoarse"
"dpdyFine"
"dual_source_blending"
"either"
"elements"
"else"
"enable"
"error"
"exp"
"exp2"
"extractBits"
"f16"
"f32"
"fa"
"faceForward"
"fallthrough"
"false"
"first"
"firstLeadingBit"
"firstTrailingBit"
"flat"
"floor"
"fma"
"fn"
"for"
"for (;true;) {}"
"fract"
"frag_depth"
"fragment"
"frexp"
"front_facing"
"function"
"fwidth"
"fwidthCoarse"
"fwidthFine"
"g"
"global_invocation_id"
"group"
"handle"
"height"
"i32"
"ia"
"id"
"if"
"info"
"inputAttachmentLoad"
"input_attachment"
"input_attachment_index"
"insertBits"
"instance_index"
"interpolate"
"invariant"
"inverseSqrt"
"ldexp"
"length"
"let"
"level"
"linear"
"local_invocation_id"
"local_invocation_index"
"location"
"log"
"log2"
"loop"
"mat"
"mat2x2"
"mat2x2f"
"mat2x2h"
"mat2x3"
"mat2x3f"
"mat2x3h"
"mat2x4"
"mat2x4f"
"mat2x4h"
"mat3x2"
"mat3x2f"
"mat3x2h"
"mat3x3"
"mat3x3f"
"mat3x3h"
"mat3x4"
"mat3x4f"
"mat3x4h"
"mat4x2"
"mat4x2f"
"mat4x2h"
"mat4x3"
"mat4x3f"
"mat4x3h"
"mat4x4"
"mat4x4f"
"mat4x4h"
"max"
"min"
"mix"
"modf"
"must_use"
"normalize"
"num_levels"
"num_workgroups"
"off"
"original_value"
"override"
"pack2x16float"
"pack2x16snorm"
"pack2x16unorm"
"pack4x8snorm"
"pack4x8unorm"
"pack4xI8"
"pack4xI8Clamp"
"pack4xU8"
"pack4xU8Clamp"
"packedVec3"
"packed_4x8_integer_dot_product"
"perspective"
"pixel_local"
"pointer_composite_access"
"position"
"pow"
"private"
"ptr"
"push_constant"
"quantizeToF16"
"r"
"r32float"
"r32sint"
"r32uint"
"r8unorm"
"radians"
"read"
"read_write"
"readonly_and_readwrite_storage_textures"
"ref"
"reflect"
"refract"
"requires"
"return"
"reverseBits"
"rg32float"
"rg32sint"
"rg32uint"
"rgba16float"
"rgba16sint"
"rgba16uint"
"rgba32float"
"rgba32sint"
"rgba32uint"
"rgba8sint"
"rgba8snorm"
"rgba8uint"
"rgba8unorm"
"round"
"sample"
"sample_index"
"sample_mask"
"sampler"
"sampler_comparison"
"samples"
"saturate"
"select"
"sign"
"sin"
"sinh"
"size"
"smoothstep"
"sqrt"
"step"
"storage"
"storageBarrier"
"struct"
"subgroupAdd"
"subgroupAnd"
"subgroupBallot"
"subgroupBroadcast"
"subgroupExclusiveAdd"
"subgroupExclusiveMul"
"subgroupMul"
"subgroupOr"
"subgroupXor"
"subgroup_invocation_id"
"subgroup_size"
"subgroups"
"subgroups_f16"
"switch"
"tan"
"tanh"
"textureBarrier"
"textureDimensions"
"textureGather"
"textureGatherCompare"
"textureLoad"
"textureNumLayers"
"textureNumLevels"
"textureNumSamples"
"textureSample"
"textureSampleBaseClampToEdge"
"textureSampleBias"
"textureSampleCompare"
"textureSampleCompareLevel"
"textureSampleGrad"
"textureSampleLevel"
"textureStore"
"texture_1d"
"texture_2d"
"texture_2d_array"
"texture_3d"
"texture_cube"
"texture_cube_array"
"texture_depth_2d"
"texture_depth_2d_array"
"texture_depth_cube"
"texture_depth_cube_array"
"texture_depth_multisampled_2d"
"texture_external"
"texture_multisampled_2d"
"texture_storage_1d"
"texture_storage_2d"
"texture_storage_2d_array"
"texture_storage_3d"
"transpose"
"true"
"trunc"
"u32"
"uniform"
"unpack2x16float"
"unpack2x16snorm"
"unpack2x16unorm"
"unpack4x8snorm"
"unpack4x8unorm"
"unpack4xI8"
"unpack4xU8"
"unreachable_code"
"unrestricted_pointer_parameters"
"var"
"vec"
"vec2"
"vec2f"
"vec2h"
"vec2i"
"vec2u"
"vec3"
"vec3f"
"vec3h"
"vec3i"
"vec3u"
"vec4"
"vec4f"
"vec4h"
"vec4i"
"vec4u"
"vertex"
"vertex_index"
"w"
"warning"
"while"
"width"
"workgroup"
"workgroupBarrier"
"workgroupUniformLoad"
"workgroup_id"
"workgroup_size"
"write"
"x"
"y"
"z"
"{"
"|"
"|="
"||"
"}"
"~"
