# 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_dual_source_blending"
"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"
"compute"
"const"
"const_assert"
"continue"
"continuing"
"cos"
"cosh"
"countLeadingZeros"
"countOneBits"
"countTrailingZeros"
"cross"
"default"
"degrees"
"derivative_uniformity"
"determinant"
"diagnostic"
"discard"
"distance"
"dot"
"dot4I8Packed"
"dot4U8Packed"
"dpdx"
"dpdxCoarse"
"dpdxFine"
"dpdy"
"dpdyCoarse"
"dpdyFine"
"dual_source_blending"
"else"
"enable"
"error"
"exp"
"exp2"
"extractBits"
"f16"
"f32"
"fa"
"faceForward"
"fallthrough"
"false"
"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"
"i32"
"ia"
"id"
"if"
"info"
"inputAttachmentLoad"
"input_attachment"
"input_attachment_index"
"insertBits"
"instance_index"
"interpolate"
"invariant"
"inverseSqrt"
"ldexp"
"length"
"let"
"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_workgroups"
"off"
"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"
"saturate"
"select"
"sign"
"sin"
"sinh"
"size"
"smoothstep"
"sqrt"
"step"
"storage"
"storageBarrier"
"struct"
"subgroupBallot"
"subgroupBroadcast"
"subgroup_invocation_id"
"subgroup_size"
"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"
"workgroup"
"workgroupBarrier"
"workgroupUniformLoad"
"workgroup_id"
"workgroup_size"
"write"
"x"
"y"
"z"
"{"
"|"
"|="
"||"
"}"
"~"
