// https://github.com/gpuweb/WHLSL/blob/9528f19aaa71fd5c3c706d2873f4b8c8cce857b5/Spec/source/Generate_Standard_Library.js
// This was autogenerated from Generate_Standard_Library.js! Do not edit!!

native typedef void;
native typedef bool;
native typedef uchar;
native typedef ushort;
native typedef uint;
native typedef char;
native typedef short;
native typedef int;
native typedef half;
native typedef float;
native typedef atomic_int;
native typedef atomic_uint;
native typedef vector<bool, 2>;
typedef bool2 = vector<bool, 2>;
native typedef vector<bool, 3>;
typedef bool3 = vector<bool, 3>;
native typedef vector<bool, 4>;
typedef bool4 = vector<bool, 4>;
native typedef vector<uchar, 2>;
typedef uchar2 = vector<uchar, 2>;
native typedef vector<uchar, 3>;
typedef uchar3 = vector<uchar, 3>;
native typedef vector<uchar, 4>;
typedef uchar4 = vector<uchar, 4>;
native typedef vector<ushort, 2>;
typedef ushort2 = vector<ushort, 2>;
native typedef vector<ushort, 3>;
typedef ushort3 = vector<ushort, 3>;
native typedef vector<ushort, 4>;
typedef ushort4 = vector<ushort, 4>;
native typedef vector<uint, 2>;
typedef uint2 = vector<uint, 2>;
native typedef vector<uint, 3>;
typedef uint3 = vector<uint, 3>;
native typedef vector<uint, 4>;
typedef uint4 = vector<uint, 4>;
native typedef vector<char, 2>;
typedef char2 = vector<char, 2>;
native typedef vector<char, 3>;
typedef char3 = vector<char, 3>;
native typedef vector<char, 4>;
typedef char4 = vector<char, 4>;
native typedef vector<short, 2>;
typedef short2 = vector<short, 2>;
native typedef vector<short, 3>;
typedef short3 = vector<short, 3>;
native typedef vector<short, 4>;
typedef short4 = vector<short, 4>;
native typedef vector<int, 2>;
typedef int2 = vector<int, 2>;
native typedef vector<int, 3>;
typedef int3 = vector<int, 3>;
native typedef vector<int, 4>;
typedef int4 = vector<int, 4>;
native typedef vector<half, 2>;
typedef half2 = vector<half, 2>;
native typedef vector<half, 3>;
typedef half3 = vector<half, 3>;
native typedef vector<half, 4>;
typedef half4 = vector<half, 4>;
native typedef vector<float, 2>;
typedef float2 = vector<float, 2>;
native typedef vector<float, 3>;
typedef float3 = vector<float, 3>;
native typedef vector<float, 4>;
typedef float4 = vector<float, 4>;

native typedef matrix<half, 2, 2>;
typedef half2x2 = matrix<half, 2, 2>;
native typedef matrix<half, 2, 3>;
typedef half2x3 = matrix<half, 2, 3>;
native typedef matrix<half, 2, 4>;
typedef half2x4 = matrix<half, 2, 4>;
native typedef matrix<half, 3, 2>;
typedef half3x2 = matrix<half, 3, 2>;
native typedef matrix<half, 3, 3>;
typedef half3x3 = matrix<half, 3, 3>;
native typedef matrix<half, 3, 4>;
typedef half3x4 = matrix<half, 3, 4>;
native typedef matrix<half, 4, 2>;
typedef half4x2 = matrix<half, 4, 2>;
native typedef matrix<half, 4, 3>;
typedef half4x3 = matrix<half, 4, 3>;
native typedef matrix<half, 4, 4>;
typedef half4x4 = matrix<half, 4, 4>;
native typedef matrix<float, 2, 2>;
typedef float2x2 = matrix<float, 2, 2>;
native typedef matrix<float, 2, 3>;
typedef float2x3 = matrix<float, 2, 3>;
native typedef matrix<float, 2, 4>;
typedef float2x4 = matrix<float, 2, 4>;
native typedef matrix<float, 3, 2>;
typedef float3x2 = matrix<float, 3, 2>;
native typedef matrix<float, 3, 3>;
typedef float3x3 = matrix<float, 3, 3>;
native typedef matrix<float, 3, 4>;
typedef float3x4 = matrix<float, 3, 4>;
native typedef matrix<float, 4, 2>;
typedef float4x2 = matrix<float, 4, 2>;
native typedef matrix<float, 4, 3>;
typedef float4x3 = matrix<float, 4, 3>;
native typedef matrix<float, 4, 4>;
typedef float4x4 = matrix<float, 4, 4>;
native typedef sampler;
native typedef Texture1D<ushort>;
native typedef Texture1D<ushort2>;
native typedef Texture1D<ushort3>;
native typedef Texture1D<ushort4>;
native typedef Texture1D<uint>;
native typedef Texture1D<uint2>;
native typedef Texture1D<uint3>;
native typedef Texture1D<uint4>;
native typedef Texture1D<short>;
native typedef Texture1D<short2>;
native typedef Texture1D<short3>;
native typedef Texture1D<short4>;
native typedef Texture1D<int>;
native typedef Texture1D<int2>;
native typedef Texture1D<int3>;
native typedef Texture1D<int4>;
native typedef Texture1D<half>;
native typedef Texture1D<half2>;
native typedef Texture1D<half3>;
native typedef Texture1D<half4>;
native typedef Texture1D<float>;
native typedef Texture1D<float2>;
native typedef Texture1D<float3>;
native typedef Texture1D<float4>;
native typedef RWTexture1D<ushort>;
native typedef RWTexture1D<ushort2>;
native typedef RWTexture1D<ushort3>;
native typedef RWTexture1D<ushort4>;
native typedef RWTexture1D<uint>;
native typedef RWTexture1D<uint2>;
native typedef RWTexture1D<uint3>;
native typedef RWTexture1D<uint4>;
native typedef RWTexture1D<short>;
native typedef RWTexture1D<short2>;
native typedef RWTexture1D<short3>;
native typedef RWTexture1D<short4>;
native typedef RWTexture1D<int>;
native typedef RWTexture1D<int2>;
native typedef RWTexture1D<int3>;
native typedef RWTexture1D<int4>;
native typedef RWTexture1D<half>;
native typedef RWTexture1D<half2>;
native typedef RWTexture1D<half3>;
native typedef RWTexture1D<half4>;
native typedef RWTexture1D<float>;
native typedef RWTexture1D<float2>;
native typedef RWTexture1D<float3>;
native typedef RWTexture1D<float4>;
native typedef Texture1DArray<ushort>;
native typedef Texture1DArray<ushort2>;
native typedef Texture1DArray<ushort3>;
native typedef Texture1DArray<ushort4>;
native typedef Texture1DArray<uint>;
native typedef Texture1DArray<uint2>;
native typedef Texture1DArray<uint3>;
native typedef Texture1DArray<uint4>;
native typedef Texture1DArray<short>;
native typedef Texture1DArray<short2>;
native typedef Texture1DArray<short3>;
native typedef Texture1DArray<short4>;
native typedef Texture1DArray<int>;
native typedef Texture1DArray<int2>;
native typedef Texture1DArray<int3>;
native typedef Texture1DArray<int4>;
native typedef Texture1DArray<half>;
native typedef Texture1DArray<half2>;
native typedef Texture1DArray<half3>;
native typedef Texture1DArray<half4>;
native typedef Texture1DArray<float>;
native typedef Texture1DArray<float2>;
native typedef Texture1DArray<float3>;
native typedef Texture1DArray<float4>;
native typedef RWTexture1DArray<ushort>;
native typedef RWTexture1DArray<ushort2>;
native typedef RWTexture1DArray<ushort3>;
native typedef RWTexture1DArray<ushort4>;
native typedef RWTexture1DArray<uint>;
native typedef RWTexture1DArray<uint2>;
native typedef RWTexture1DArray<uint3>;
native typedef RWTexture1DArray<uint4>;
native typedef RWTexture1DArray<short>;
native typedef RWTexture1DArray<short2>;
native typedef RWTexture1DArray<short3>;
native typedef RWTexture1DArray<short4>;
native typedef RWTexture1DArray<int>;
native typedef RWTexture1DArray<int2>;
native typedef RWTexture1DArray<int3>;
native typedef RWTexture1DArray<int4>;
native typedef RWTexture1DArray<half>;
native typedef RWTexture1DArray<half2>;
native typedef RWTexture1DArray<half3>;
native typedef RWTexture1DArray<half4>;
native typedef RWTexture1DArray<float>;
native typedef RWTexture1DArray<float2>;
native typedef RWTexture1DArray<float3>;
native typedef RWTexture1DArray<float4>;
native typedef Texture2D<ushort>;
native typedef Texture2D<ushort2>;
native typedef Texture2D<ushort3>;
native typedef Texture2D<ushort4>;
native typedef Texture2D<uint>;
native typedef Texture2D<uint2>;
native typedef Texture2D<uint3>;
native typedef Texture2D<uint4>;
native typedef Texture2D<short>;
native typedef Texture2D<short2>;
native typedef Texture2D<short3>;
native typedef Texture2D<short4>;
native typedef Texture2D<int>;
native typedef Texture2D<int2>;
native typedef Texture2D<int3>;
native typedef Texture2D<int4>;
native typedef Texture2D<half>;
native typedef Texture2D<half2>;
native typedef Texture2D<half3>;
native typedef Texture2D<half4>;
native typedef Texture2D<float>;
native typedef Texture2D<float2>;
native typedef Texture2D<float3>;
native typedef Texture2D<float4>;
native typedef RWTexture2D<ushort>;
native typedef RWTexture2D<ushort2>;
native typedef RWTexture2D<ushort3>;
native typedef RWTexture2D<ushort4>;
native typedef RWTexture2D<uint>;
native typedef RWTexture2D<uint2>;
native typedef RWTexture2D<uint3>;
native typedef RWTexture2D<uint4>;
native typedef RWTexture2D<short>;
native typedef RWTexture2D<short2>;
native typedef RWTexture2D<short3>;
native typedef RWTexture2D<short4>;
native typedef RWTexture2D<int>;
native typedef RWTexture2D<int2>;
native typedef RWTexture2D<int3>;
native typedef RWTexture2D<int4>;
native typedef RWTexture2D<half>;
native typedef RWTexture2D<half2>;
native typedef RWTexture2D<half3>;
native typedef RWTexture2D<half4>;
native typedef RWTexture2D<float>;
native typedef RWTexture2D<float2>;
native typedef RWTexture2D<float3>;
native typedef RWTexture2D<float4>;
native typedef Texture2DArray<ushort>;
native typedef Texture2DArray<ushort2>;
native typedef Texture2DArray<ushort3>;
native typedef Texture2DArray<ushort4>;
native typedef Texture2DArray<uint>;
native typedef Texture2DArray<uint2>;
native typedef Texture2DArray<uint3>;
native typedef Texture2DArray<uint4>;
native typedef Texture2DArray<short>;
native typedef Texture2DArray<short2>;
native typedef Texture2DArray<short3>;
native typedef Texture2DArray<short4>;
native typedef Texture2DArray<int>;
native typedef Texture2DArray<int2>;
native typedef Texture2DArray<int3>;
native typedef Texture2DArray<int4>;
native typedef Texture2DArray<half>;
native typedef Texture2DArray<half2>;
native typedef Texture2DArray<half3>;
native typedef Texture2DArray<half4>;
native typedef Texture2DArray<float>;
native typedef Texture2DArray<float2>;
native typedef Texture2DArray<float3>;
native typedef Texture2DArray<float4>;
native typedef RWTexture2DArray<ushort>;
native typedef RWTexture2DArray<ushort2>;
native typedef RWTexture2DArray<ushort3>;
native typedef RWTexture2DArray<ushort4>;
native typedef RWTexture2DArray<uint>;
native typedef RWTexture2DArray<uint2>;
native typedef RWTexture2DArray<uint3>;
native typedef RWTexture2DArray<uint4>;
native typedef RWTexture2DArray<short>;
native typedef RWTexture2DArray<short2>;
native typedef RWTexture2DArray<short3>;
native typedef RWTexture2DArray<short4>;
native typedef RWTexture2DArray<int>;
native typedef RWTexture2DArray<int2>;
native typedef RWTexture2DArray<int3>;
native typedef RWTexture2DArray<int4>;
native typedef RWTexture2DArray<half>;
native typedef RWTexture2DArray<half2>;
native typedef RWTexture2DArray<half3>;
native typedef RWTexture2DArray<half4>;
native typedef RWTexture2DArray<float>;
native typedef RWTexture2DArray<float2>;
native typedef RWTexture2DArray<float3>;
native typedef RWTexture2DArray<float4>;
native typedef Texture3D<ushort>;
native typedef Texture3D<ushort2>;
native typedef Texture3D<ushort3>;
native typedef Texture3D<ushort4>;
native typedef Texture3D<uint>;
native typedef Texture3D<uint2>;
native typedef Texture3D<uint3>;
native typedef Texture3D<uint4>;
native typedef Texture3D<short>;
native typedef Texture3D<short2>;
native typedef Texture3D<short3>;
native typedef Texture3D<short4>;
native typedef Texture3D<int>;
native typedef Texture3D<int2>;
native typedef Texture3D<int3>;
native typedef Texture3D<int4>;
native typedef Texture3D<half>;
native typedef Texture3D<half2>;
native typedef Texture3D<half3>;
native typedef Texture3D<half4>;
native typedef Texture3D<float>;
native typedef Texture3D<float2>;
native typedef Texture3D<float3>;
native typedef Texture3D<float4>;
native typedef RWTexture3D<ushort>;
native typedef RWTexture3D<ushort2>;
native typedef RWTexture3D<ushort3>;
native typedef RWTexture3D<ushort4>;
native typedef RWTexture3D<uint>;
native typedef RWTexture3D<uint2>;
native typedef RWTexture3D<uint3>;
native typedef RWTexture3D<uint4>;
native typedef RWTexture3D<short>;
native typedef RWTexture3D<short2>;
native typedef RWTexture3D<short3>;
native typedef RWTexture3D<short4>;
native typedef RWTexture3D<int>;
native typedef RWTexture3D<int2>;
native typedef RWTexture3D<int3>;
native typedef RWTexture3D<int4>;
native typedef RWTexture3D<half>;
native typedef RWTexture3D<half2>;
native typedef RWTexture3D<half3>;
native typedef RWTexture3D<half4>;
native typedef RWTexture3D<float>;
native typedef RWTexture3D<float2>;
native typedef RWTexture3D<float3>;
native typedef RWTexture3D<float4>;
native typedef TextureCube<ushort>;
native typedef TextureCube<ushort2>;
native typedef TextureCube<ushort3>;
native typedef TextureCube<ushort4>;
native typedef TextureCube<uint>;
native typedef TextureCube<uint2>;
native typedef TextureCube<uint3>;
native typedef TextureCube<uint4>;
native typedef TextureCube<short>;
native typedef TextureCube<short2>;
native typedef TextureCube<short3>;
native typedef TextureCube<short4>;
native typedef TextureCube<int>;
native typedef TextureCube<int2>;
native typedef TextureCube<int3>;
native typedef TextureCube<int4>;
native typedef TextureCube<half>;
native typedef TextureCube<half2>;
native typedef TextureCube<half3>;
native typedef TextureCube<half4>;
native typedef TextureCube<float>;
native typedef TextureCube<float2>;
native typedef TextureCube<float3>;
native typedef TextureCube<float4>;
native typedef TextureDepth2D<float>;
native typedef RWTextureDepth2D<float>;
native typedef TextureDepth2DArray<float>;
native typedef RWTextureDepth2DArray<float>;
native typedef TextureDepthCube<float>;

native float operator.x(float4);
native float operator.y(float4);
native float operator.z(float4);
native float operator.w(float4);
native float4 operator.x=(float4, float);
native float4 operator.y=(float4, float);
native float4 operator.z=(float4, float);
native float4 operator.w=(float4, float);

native float ddx(float);
native float ddy(float);
native void AllMemoryBarrierWithGroupSync();
native void DeviceMemoryBarrierWithGroupSync();
native void GroupMemoryBarrierWithGroupSync();

operator float4(float x, float y, float z, float w) {
    float4 result;
    result.x = x;
    result.y = y;
    result.z = z;
    result.w = w;
    return result;
}

// FIXME: https://bugs.webkit.org/show_bug.cgi?id=192890 Insert the rest of the standard library once the parser is fast enough
