# Tokens for WebGL 2.0 Shader Language.
# TODO: Seperate tokens for vertex shaders into seperate file for use by
# swiftshader_vertex_routine_fuzzer.

# Preprocessor tokens
"#"
"#define"
"#undef"
"#if"
"#ifdef"
"#ifndef"
"#else"
"#elif"
"#endif"
"#error"
"#pragma"
"#extension"
"#version"
"#line"
"defined"
"#macros"
"__LINE__"
"__FILE__"
"__VERSION__"
"GL_ES"

 # Fragment shaders only
"GL_FRAGMENT_PRECISION_HIGH"

# Language tokens
"("
")"
"+"
"-"
"~"
"!"
"*"
"/"
"%"
"+"
"-"
"<<"
">>"
"<"
">"
"<="
">="
"=="
"!="
"+="
"-="
"*="
"/="
"%="
"<<="
">>="
";"
","
"."
"["
"]"
"++"
"--"
"&"
"^"
"|"
"&&"
"||"

# Keywords
" attribute "
" const "
" uniform "
" varying "
" break "
" continue "
" do "
" for "
" while "
" if "
" else "
" in "
" out "
" inout "
" float "
" int "
" void "
" bool "
" true "
" false "
" lowp "
" mediump "
" highp "
" precision "
" invariant "
" discard "
" return"

# Types, include valid examples and partial ones (that are invalid on their own)
" mat2("
" mat2(1.0)"
" mat2(1.0,2.0,3.0,4.0)"
" mat3(vec2(1.0, 1.0),1.0,vec2(1.0, 1.0),1.0,vec2(1.0, 1.0),1.0)"
" mat3(1.0)"
" mat3("
" mat4("
" mat4(1.0)"
" mat4(vec4(1.0),vec4(1.0,2.0,3.0,4.0),vec4(3.3),vec4(4.4))"
"vec2"
" vec2(1)"
" vec3(1)"
" vec3"
" vec4(1)"
" vec4"
" ivec2(1) "
" ivec2"
" ivec3(1)"
" ivec3"
" ivec4(1)"
" ivec4"
" bvec2(true)"
" bvec2"
" bvec3(true)"
" bvec3"
" bvec4(true)"
" bvec4"
" sampler2D "
" samplerCube "
" struct "
" sampler3D "
" samplerCube "
" sampler2DShadow "
" sampler2DArray "
" sampler2DArrayShadow "
" sampler2DMS "
" samplerCubeShadow "
" isampler2D "
" isampler3D "
" isamplerCube "
" isampler2DArray "
" isampler2DMS "
" usampler2D "
" usampler3D "
" usampler2DArray "
" usampler2DMS "
" usamplerCube "
" image2D "
" image3D "
" imageCube "
" image2DArray "
" iimage2D "
" iimage3D "
" iimageCube "
" iimage2DArray "
" uimage2D "
" uimage3D "
" uimageCube "
" uimage2DArray "
" atomic_uint "

# Builtin Variables
"gl_Position"
"gl_FragColor"
"gl_FragData"
"gl_FrontFacing"
"gl_PointCoord"
"gl_MaxDrawBuffers"
"gl_MaxFragmentUniformVectors"
"gl_MaxTextureImageUnits"
"gl_MaxCombinedTextureImageUnits"
"gl_MaxVertexTextureImageUnits"
"gl_MaxVaryingVectors"
"gl_MaxVertexUniformVectors"
"gl_MaxVertexAttribs"
"gl_FragCoord.x"
"gl_FragCoord.y"
"gl_FragCoord.z"
"gl_FragData"
"gl_FragDepth"
"gl_InstanceID"
"gl_NumWorkGroups"
"gl_PointSize"
"gl_VertexID"

# misc.
"void main(){"

# Generated calls to builtin functions.
" pow(1.0,1.0)"
" fract(1.0)"
" dFdx(1.0)"
" step(1.0,1.0)"
" min(1,1)"
" min(1.0,1.0)"
" dot(1.0,1.0)"
" greaterThanEqual(uvec2(1,2),uvec2(1,2))"
" asin(1.0)"
" lessThanEqual(ivec2(1,-2),ivec2(1,-2))"
" inversesqrt(1.0)"
" length(1.0)"
" acosh(1.0)"
" roundEven(1.0)"
" greaterThanEqual(ivec2(1,-2),ivec2(1,-2))"
" greaterThan(uvec2(1,2),uvec2(1,2))"
" radians(1.0)"
" asinh(1.0)"
" uintBitsToFloat(1)"
" cos(1.0)"
" ceil(1.0)"
" equal(uvec2(1,2),uvec2(1,2))"
" normalize(1.0)"
" distance(1.0,1.0)"
" abs(1)"
" clamp(1.0,1.0,1.0)"
" tan(1.0)"
" smoothstep(1.0,1.0,1.0)"
" isinf(1.0)"
" not(bvec2(true,false))"
" degrees(1.0)"
" mix(1.0,1.0,true)"
" max(1.0,1.0)"
" lessThanEqual(uvec2(1,2),uvec2(1,2))"
" round(1.0)"
" atan(1.0,1.0)"
" floatBitsToInt(1.0)"
" abs(1.0)"
" fwidth(1.0)"
" lessThan(ivec2(1,-2),ivec2(1,-2))"
" intBitsToFloat(1)"
" mix(1.0,1.0,1.0)"
" notEqual(uvec2(1,2),uvec2(1,2))"
" floor(1.0)"
" refract(1.0,1.0,1.0)"
" equal(ivec2(1,-2),ivec2(1,-2))"
" max(1,1)"
" cosh(1.0)"
" isnan(1.0)"
" sign(1)"
" mod(1.0,1.0)"
" acos(1.0)"
" sinh(1.0)"
" greaterThan(ivec2(1,-2),ivec2(1,-2))"
" exp2(1.0)"
" notEqual(bvec2(true,false),bvec2(true,false))"
" reflect(1.0,1.0)"
" lessThan(uvec2(1,2),uvec2(1,2))"
" sqrt(1.0)"
" sign(1.0)"
" clamp(1,1,1)"
" sin(1.0)"
" atan(1.0)"
" tanh(1.0)"
" dFdy(1.0)"
" notEqual(ivec2(1,-2),ivec2(1,-2))"
" trunc(1.0)"
" log2(1.0)"
" equal(bvec2(true,false),bvec2(true,false))"
" atanh(1.0)"
" exp(1.0)"
" faceforward(1.0,1.0,1.0)"
" floatBitsToUint(1.0)"
" log(1.0)"
