// This was autogenerated from Generate_Standard_Library.js.
// This standard library has been processed such that functions which share a name are next to each other,
// and before each group of functions, there's a prefix that has to be in a particular form.
// The WebKit build process exploits this structure to build a map of which function name corresponds to which
// part of this file. Then, when we parse WHLSL programs, we can only parse the pieces of this standard library
// which correspond to functions that are actually used in the user program.

native typedef void;
native typedef bool;
native typedef uint;
native typedef int;
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<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<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<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<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<uint>;
native typedef Texture1D<uint2>;
native typedef Texture1D<uint3>;
native typedef Texture1D<uint4>;
native typedef Texture1D<int>;
native typedef Texture1D<int2>;
native typedef Texture1D<int3>;
native typedef Texture1D<int4>;
native typedef Texture1D<float>;
native typedef Texture1D<float2>;
native typedef Texture1D<float3>;
native typedef Texture1D<float4>;
native typedef Texture1DArray<uint>;
native typedef Texture1DArray<uint2>;
native typedef Texture1DArray<uint3>;
native typedef Texture1DArray<uint4>;
native typedef Texture1DArray<int>;
native typedef Texture1DArray<int2>;
native typedef Texture1DArray<int3>;
native typedef Texture1DArray<int4>;
native typedef Texture1DArray<float>;
native typedef Texture1DArray<float2>;
native typedef Texture1DArray<float3>;
native typedef Texture1DArray<float4>;
native typedef Texture2D<uint>;
native typedef Texture2D<uint2>;
native typedef Texture2D<uint3>;
native typedef Texture2D<uint4>;
native typedef Texture2D<int>;
native typedef Texture2D<int2>;
native typedef Texture2D<int3>;
native typedef Texture2D<int4>;
native typedef Texture2D<float>;
native typedef Texture2D<float2>;
native typedef Texture2D<float3>;
native typedef Texture2D<float4>;
native typedef Texture2DArray<uint>;
native typedef Texture2DArray<uint2>;
native typedef Texture2DArray<uint3>;
native typedef Texture2DArray<uint4>;
native typedef Texture2DArray<int>;
native typedef Texture2DArray<int2>;
native typedef Texture2DArray<int3>;
native typedef Texture2DArray<int4>;
native typedef Texture2DArray<float>;
native typedef Texture2DArray<float2>;
native typedef Texture2DArray<float3>;
native typedef Texture2DArray<float4>;
native typedef Texture3D<uint>;
native typedef Texture3D<uint2>;
native typedef Texture3D<uint3>;
native typedef Texture3D<uint4>;
native typedef Texture3D<int>;
native typedef Texture3D<int2>;
native typedef Texture3D<int3>;
native typedef Texture3D<int4>;
native typedef Texture3D<float>;
native typedef Texture3D<float2>;
native typedef Texture3D<float3>;
native typedef Texture3D<float4>;
native typedef TextureCube<uint>;
native typedef TextureCube<uint2>;
native typedef TextureCube<uint3>;
native typedef TextureCube<uint4>;
native typedef TextureCube<int>;
native typedef TextureCube<int2>;
native typedef TextureCube<int3>;
native typedef TextureCube<int4>;
native typedef TextureCube<float>;
native typedef TextureCube<float2>;
native typedef TextureCube<float3>;
native typedef TextureCube<float4>;
native typedef TextureDepth2D<float>;
native typedef TextureDepth2DArray<float>;
native typedef TextureDepthCube<float>;

/* Functions named reversebits */
uint reversebits(uint x) {
    return uint(((x & uint(1 << 0)) << 31) |
           ((x & uint(1 << 1)) << 29) |
           ((x & uint(1 << 2)) << 27) |
           ((x & uint(1 << 3)) << 25) |
           ((x & uint(1 << 4)) << 23) |
           ((x & uint(1 << 5)) << 21) |
           ((x & uint(1 << 6)) << 19) |
           ((x & uint(1 << 7)) << 17) |
           ((x & uint(1 << 8)) << 15) |
           ((x & uint(1 << 9)) << 13) |
           ((x & uint(1 << 10)) << 11) |
           ((x & uint(1 << 11)) << 9) |
           ((x & uint(1 << 12)) << 7) |
           ((x & uint(1 << 13)) << 5) |
           ((x & uint(1 << 14)) << 3) |
           ((x & uint(1 << 15)) << 1) |
           ((x & uint(1 << 16)) >> 1) |
           ((x & uint(1 << 17)) >> 3) |
           ((x & uint(1 << 18)) >> 5) |
           ((x & uint(1 << 19)) >> 7) |
           ((x & uint(1 << 20)) >> 9) |
           ((x & uint(1 << 21)) >> 11) |
           ((x & uint(1 << 22)) >> 13) |
           ((x & uint(1 << 23)) >> 15) |
           ((x & uint(1 << 24)) >> 17) |
           ((x & uint(1 << 25)) >> 19) |
           ((x & uint(1 << 26)) >> 21) |
           ((x & uint(1 << 27)) >> 23) |
           ((x & uint(1 << 28)) >> 25) |
           ((x & uint(1 << 29)) >> 27) |
           ((x & uint(1 << 30)) >> 29) |
           ((x & uint(1 << 31)) >> 31));
}
uint2 reversebits(uint2 x) {
    uint2 result;
    result[0] = reversebits(x[0]);
    result[1] = reversebits(x[1]);
    return result;
}
uint3 reversebits(uint3 x) {
    uint3 result;
    result[0] = reversebits(x[0]);
    result[1] = reversebits(x[1]);
    result[2] = reversebits(x[2]);
    return result;
}
uint4 reversebits(uint4 x) {
    uint4 result;
    result[0] = reversebits(x[0]);
    result[1] = reversebits(x[1]);
    result[2] = reversebits(x[2]);
    result[3] = reversebits(x[3]);
    return result;
}


/* Functions named operator.yww */
bool3 operator.yww(bool4 v) {
    bool3 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.w;
    return result;
}
uint3 operator.yww(uint4 v) {
    uint3 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.w;
    return result;
}
int3 operator.yww(int4 v) {
    int3 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.w;
    return result;
}
float3 operator.yww(float4 v) {
    float3 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.w;
    return result;
}

/* Functions named operator.yzzy */
bool4 operator.yzzy(bool3 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    result.w = v.y;
    return result;
}
bool4 operator.yzzy(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    result.w = v.y;
    return result;
}
uint4 operator.yzzy(uint3 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    result.w = v.y;
    return result;
}
uint4 operator.yzzy(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    result.w = v.y;
    return result;
}
int4 operator.yzzy(int3 v) {
    int4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    result.w = v.y;
    return result;
}
int4 operator.yzzy(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    result.w = v.y;
    return result;
}
float4 operator.yzzy(float3 v) {
    float4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    result.w = v.y;
    return result;
}
float4 operator.yzzy(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    result.w = v.y;
    return result;
}

/* Functions named operator.zyxy */
bool4 operator.zyxy(bool3 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
bool4 operator.zyxy(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
uint4 operator.zyxy(uint3 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
uint4 operator.zyxy(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
int4 operator.zyxy(int3 v) {
    int4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
int4 operator.zyxy(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
float4 operator.zyxy(float3 v) {
    float4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
float4 operator.zyxy(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}

/* Functions named operator.wxzy */
bool4 operator.wxzy(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.z;
    result.w = v.y;
    return result;
}
uint4 operator.wxzy(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.z;
    result.w = v.y;
    return result;
}
int4 operator.wxzy(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.z;
    result.w = v.y;
    return result;
}
float4 operator.wxzy(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.z;
    result.w = v.y;
    return result;
}

/* Functions named operator.yxxz */
bool4 operator.yxxz(bool3 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.z;
    return result;
}
bool4 operator.yxxz(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.z;
    return result;
}
uint4 operator.yxxz(uint3 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.z;
    return result;
}
uint4 operator.yxxz(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.z;
    return result;
}
int4 operator.yxxz(int3 v) {
    int4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.z;
    return result;
}
int4 operator.yxxz(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.z;
    return result;
}
float4 operator.yxxz(float3 v) {
    float4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.z;
    return result;
}
float4 operator.yxxz(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.z;
    return result;
}

/* Functions named operator.zxwy= */
bool4 operator.zxwy=(bool4 v, bool4 c) {
    bool4 result = v;
    result.z = c.x;
    result.x = c.y;
    result.w = c.z;
    result.y = c.w;
    return result;
}
uint4 operator.zxwy=(uint4 v, uint4 c) {
    uint4 result = v;
    result.z = c.x;
    result.x = c.y;
    result.w = c.z;
    result.y = c.w;
    return result;
}
int4 operator.zxwy=(int4 v, int4 c) {
    int4 result = v;
    result.z = c.x;
    result.x = c.y;
    result.w = c.z;
    result.y = c.w;
    return result;
}
float4 operator.zxwy=(float4 v, float4 c) {
    float4 result = v;
    result.z = c.x;
    result.x = c.y;
    result.w = c.z;
    result.y = c.w;
    return result;
}

/* Functions named operator.xwww */
bool4 operator.xwww(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.w;
    result.w = v.w;
    return result;
}
uint4 operator.xwww(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.w;
    result.w = v.w;
    return result;
}
int4 operator.xwww(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.w;
    result.w = v.w;
    return result;
}
float4 operator.xwww(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.w;
    result.w = v.w;
    return result;
}

/* Functions named operator.zwyz */
bool4 operator.zwyz(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.y;
    result.w = v.z;
    return result;
}
uint4 operator.zwyz(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.y;
    result.w = v.z;
    return result;
}
int4 operator.zwyz(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.y;
    result.w = v.z;
    return result;
}
float4 operator.zwyz(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.y;
    result.w = v.z;
    return result;
}

/* Functions named isordered */
bool isordered(float x, float y) {
    return (x == x) && (y == y);
}
bool2 isordered(float2 x, float2 y) {
    bool2 result;
    result[0] = isordered(x[0], y[0]);
    result[1] = isordered(x[1], y[1]);
    return result;
}
bool3 isordered(float3 x, float3 y) {
    bool3 result;
    result[0] = isordered(x[0], y[0]);
    result[1] = isordered(x[1], y[1]);
    result[2] = isordered(x[2], y[2]);
    return result;
}
bool4 isordered(float4 x, float4 y) {
    bool4 result;
    result[0] = isordered(x[0], y[0]);
    result[1] = isordered(x[1], y[1]);
    result[2] = isordered(x[2], y[2]);
    result[3] = isordered(x[3], y[3]);
    return result;
}

/* Functions named operator.x */
native bool operator.x(bool2);
native bool operator.x(bool3);
native bool operator.x(bool4);
native uint operator.x(uint2);
native uint operator.x(uint3);
native uint operator.x(uint4);
native int operator.x(int2);
native int operator.x(int3);
native int operator.x(int4);
native float operator.x(float2);
native float operator.x(float3);
native float operator.x(float4);

/* Functions named operator.xywx */
bool4 operator.xywx(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.w;
    result.w = v.x;
    return result;
}
uint4 operator.xywx(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.w;
    result.w = v.x;
    return result;
}
int4 operator.xywx(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.w;
    result.w = v.x;
    return result;
}
float4 operator.xywx(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.w;
    result.w = v.x;
    return result;
}

/* Functions named operator.wyxy */
bool4 operator.wyxy(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
uint4 operator.wyxy(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
int4 operator.wyxy(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
float4 operator.wyxy(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}

/* Functions named transpose */
float transpose(float x) {
    return x;
}
float2x2 transpose(float2x2 x) {
    float2x2 result;
    result[0][0] = x[0][0];
    result[0][1] = x[1][0];
    result[1][0] = x[0][1];
    result[1][1] = x[1][1];
    return result;
}
float2x3 transpose(float3x2 x) {
    float2x3 result;
    result[0][0] = x[0][0];
    result[0][1] = x[1][0];
    result[0][2] = x[2][0];
    result[1][0] = x[0][1];
    result[1][1] = x[1][1];
    result[1][2] = x[2][1];
    return result;
}
float2x4 transpose(float4x2 x) {
    float2x4 result;
    result[0][0] = x[0][0];
    result[0][1] = x[1][0];
    result[0][2] = x[2][0];
    result[0][3] = x[3][0];
    result[1][0] = x[0][1];
    result[1][1] = x[1][1];
    result[1][2] = x[2][1];
    result[1][3] = x[3][1];
    return result;
}
float3x2 transpose(float2x3 x) {
    float3x2 result;
    result[0][0] = x[0][0];
    result[0][1] = x[1][0];
    result[1][0] = x[0][1];
    result[1][1] = x[1][1];
    result[2][0] = x[0][2];
    result[2][1] = x[1][2];
    return result;
}
float3x3 transpose(float3x3 x) {
    float3x3 result;
    result[0][0] = x[0][0];
    result[0][1] = x[1][0];
    result[0][2] = x[2][0];
    result[1][0] = x[0][1];
    result[1][1] = x[1][1];
    result[1][2] = x[2][1];
    result[2][0] = x[0][2];
    result[2][1] = x[1][2];
    result[2][2] = x[2][2];
    return result;
}
float3x4 transpose(float4x3 x) {
    float3x4 result;
    result[0][0] = x[0][0];
    result[0][1] = x[1][0];
    result[0][2] = x[2][0];
    result[0][3] = x[3][0];
    result[1][0] = x[0][1];
    result[1][1] = x[1][1];
    result[1][2] = x[2][1];
    result[1][3] = x[3][1];
    result[2][0] = x[0][2];
    result[2][1] = x[1][2];
    result[2][2] = x[2][2];
    result[2][3] = x[3][2];
    return result;
}
float4x2 transpose(float2x4 x) {
    float4x2 result;
    result[0][0] = x[0][0];
    result[0][1] = x[1][0];
    result[1][0] = x[0][1];
    result[1][1] = x[1][1];
    result[2][0] = x[0][2];
    result[2][1] = x[1][2];
    result[3][0] = x[0][3];
    result[3][1] = x[1][3];
    return result;
}
float4x3 transpose(float3x4 x) {
    float4x3 result;
    result[0][0] = x[0][0];
    result[0][1] = x[1][0];
    result[0][2] = x[2][0];
    result[1][0] = x[0][1];
    result[1][1] = x[1][1];
    result[1][2] = x[2][1];
    result[2][0] = x[0][2];
    result[2][1] = x[1][2];
    result[2][2] = x[2][2];
    result[3][0] = x[0][3];
    result[3][1] = x[1][3];
    result[3][2] = x[2][3];
    return result;
}
float4x4 transpose(float4x4 x) {
    float4x4 result;
    result[0][0] = x[0][0];
    result[0][1] = x[1][0];
    result[0][2] = x[2][0];
    result[0][3] = x[3][0];
    result[1][0] = x[0][1];
    result[1][1] = x[1][1];
    result[1][2] = x[2][1];
    result[1][3] = x[3][1];
    result[2][0] = x[0][2];
    result[2][1] = x[1][2];
    result[2][2] = x[2][2];
    result[2][3] = x[3][2];
    result[3][0] = x[0][3];
    result[3][1] = x[1][3];
    result[3][2] = x[2][3];
    result[3][3] = x[3][3];
    return result;
}


/* Functions named operator.wyxz= */
bool4 operator.wyxz=(bool4 v, bool4 c) {
    bool4 result = v;
    result.w = c.x;
    result.y = c.y;
    result.x = c.z;
    result.z = c.w;
    return result;
}
uint4 operator.wyxz=(uint4 v, uint4 c) {
    uint4 result = v;
    result.w = c.x;
    result.y = c.y;
    result.x = c.z;
    result.z = c.w;
    return result;
}
int4 operator.wyxz=(int4 v, int4 c) {
    int4 result = v;
    result.w = c.x;
    result.y = c.y;
    result.x = c.z;
    result.z = c.w;
    return result;
}
float4 operator.wyxz=(float4 v, float4 c) {
    float4 result = v;
    result.w = c.x;
    result.y = c.y;
    result.x = c.z;
    result.z = c.w;
    return result;
}

/* Functions named operator.yyxz */
bool4 operator.yyxz(bool3 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.z;
    return result;
}
bool4 operator.yyxz(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.z;
    return result;
}
uint4 operator.yyxz(uint3 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.z;
    return result;
}
uint4 operator.yyxz(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.z;
    return result;
}
int4 operator.yyxz(int3 v) {
    int4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.z;
    return result;
}
int4 operator.yyxz(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.z;
    return result;
}
float4 operator.yyxz(float3 v) {
    float4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.z;
    return result;
}
float4 operator.yyxz(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.z;
    return result;
}

/* Functions named operator.zx */
bool2 operator.zx(bool3 v) {
    bool2 result;
    result.x = v.z;
    result.y = v.x;
    return result;
}
bool2 operator.zx(bool4 v) {
    bool2 result;
    result.x = v.z;
    result.y = v.x;
    return result;
}
uint2 operator.zx(uint3 v) {
    uint2 result;
    result.x = v.z;
    result.y = v.x;
    return result;
}
uint2 operator.zx(uint4 v) {
    uint2 result;
    result.x = v.z;
    result.y = v.x;
    return result;
}
int2 operator.zx(int3 v) {
    int2 result;
    result.x = v.z;
    result.y = v.x;
    return result;
}
int2 operator.zx(int4 v) {
    int2 result;
    result.x = v.z;
    result.y = v.x;
    return result;
}
float2 operator.zx(float3 v) {
    float2 result;
    result.x = v.z;
    result.y = v.x;
    return result;
}
float2 operator.zx(float4 v) {
    float2 result;
    result.x = v.z;
    result.y = v.x;
    return result;
}

/* Functions named InterlockedAdd */
native void InterlockedAdd(device atomic_uint*, uint, thread uint*);
native void InterlockedAdd(device atomic_int*, int, thread int*);
native void InterlockedAdd(device atomic_uint*, uint, device uint*);
native void InterlockedAdd(device atomic_int*, int, device int*);
native void InterlockedAdd(device atomic_uint*, uint, threadgroup uint*);
native void InterlockedAdd(device atomic_int*, int, threadgroup int*);
native void InterlockedAdd(threadgroup atomic_uint*, uint, thread uint*);
native void InterlockedAdd(threadgroup atomic_int*, int, thread int*);
native void InterlockedAdd(threadgroup atomic_uint*, uint, device uint*);
native void InterlockedAdd(threadgroup atomic_int*, int, device int*);
native void InterlockedAdd(threadgroup atomic_uint*, uint, threadgroup uint*);
native void InterlockedAdd(threadgroup atomic_int*, int, threadgroup int*);

/* Functions named operator.xzyx */
bool4 operator.xzyx(bool3 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    result.w = v.x;
    return result;
}
bool4 operator.xzyx(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    result.w = v.x;
    return result;
}
uint4 operator.xzyx(uint3 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    result.w = v.x;
    return result;
}
uint4 operator.xzyx(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    result.w = v.x;
    return result;
}
int4 operator.xzyx(int3 v) {
    int4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    result.w = v.x;
    return result;
}
int4 operator.xzyx(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    result.w = v.x;
    return result;
}
float4 operator.xzyx(float3 v) {
    float4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    result.w = v.x;
    return result;
}
float4 operator.xzyx(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    result.w = v.x;
    return result;
}

/* Functions named operator.wwzw */
bool4 operator.wwzw(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.z;
    result.w = v.w;
    return result;
}
uint4 operator.wwzw(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.z;
    result.w = v.w;
    return result;
}
int4 operator.wwzw(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.z;
    result.w = v.w;
    return result;
}
float4 operator.wwzw(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.z;
    result.w = v.w;
    return result;
}

/* Functions named operator.ywwy */
bool4 operator.ywwy(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.w;
    result.w = v.y;
    return result;
}
uint4 operator.ywwy(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.w;
    result.w = v.y;
    return result;
}
int4 operator.ywwy(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.w;
    result.w = v.y;
    return result;
}
float4 operator.ywwy(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.w;
    result.w = v.y;
    return result;
}

/* Functions named operator.xzwx */
bool4 operator.xzwx(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.w;
    result.w = v.x;
    return result;
}
uint4 operator.xzwx(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.w;
    result.w = v.x;
    return result;
}
int4 operator.xzwx(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.w;
    result.w = v.x;
    return result;
}
float4 operator.xzwx(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.w;
    result.w = v.x;
    return result;
}

/* Functions named saturate */
float saturate(float x) {
    return clamp(x, 0, 1);
}
float2 saturate(float2 x) {
    float2 result;
    result[0] = saturate(x[0]);
    result[1] = saturate(x[1]);
    return result;
}
float3 saturate(float3 x) {
    float3 result;
    result[0] = saturate(x[0]);
    result[1] = saturate(x[1]);
    result[2] = saturate(x[2]);
    return result;
}
float4 saturate(float4 x) {
    float4 result;
    result[0] = saturate(x[0]);
    result[1] = saturate(x[1]);
    result[2] = saturate(x[2]);
    result[3] = saturate(x[3]);
    return result;
}
float2x2 saturate(float2x2 x) {
    float2x2 result;
    result[0][0] = saturate(x[0][0]);
    result[0][1] = saturate(x[0][1]);
    result[1][0] = saturate(x[1][0]);
    result[1][1] = saturate(x[1][1]);
    return result;
}
float2x3 saturate(float2x3 x) {
    float2x3 result;
    result[0][0] = saturate(x[0][0]);
    result[0][1] = saturate(x[0][1]);
    result[0][2] = saturate(x[0][2]);
    result[1][0] = saturate(x[1][0]);
    result[1][1] = saturate(x[1][1]);
    result[1][2] = saturate(x[1][2]);
    return result;
}
float2x4 saturate(float2x4 x) {
    float2x4 result;
    result[0][0] = saturate(x[0][0]);
    result[0][1] = saturate(x[0][1]);
    result[0][2] = saturate(x[0][2]);
    result[0][3] = saturate(x[0][3]);
    result[1][0] = saturate(x[1][0]);
    result[1][1] = saturate(x[1][1]);
    result[1][2] = saturate(x[1][2]);
    result[1][3] = saturate(x[1][3]);
    return result;
}
float3x2 saturate(float3x2 x) {
    float3x2 result;
    result[0][0] = saturate(x[0][0]);
    result[0][1] = saturate(x[0][1]);
    result[1][0] = saturate(x[1][0]);
    result[1][1] = saturate(x[1][1]);
    result[2][0] = saturate(x[2][0]);
    result[2][1] = saturate(x[2][1]);
    return result;
}
float3x3 saturate(float3x3 x) {
    float3x3 result;
    result[0][0] = saturate(x[0][0]);
    result[0][1] = saturate(x[0][1]);
    result[0][2] = saturate(x[0][2]);
    result[1][0] = saturate(x[1][0]);
    result[1][1] = saturate(x[1][1]);
    result[1][2] = saturate(x[1][2]);
    result[2][0] = saturate(x[2][0]);
    result[2][1] = saturate(x[2][1]);
    result[2][2] = saturate(x[2][2]);
    return result;
}
float3x4 saturate(float3x4 x) {
    float3x4 result;
    result[0][0] = saturate(x[0][0]);
    result[0][1] = saturate(x[0][1]);
    result[0][2] = saturate(x[0][2]);
    result[0][3] = saturate(x[0][3]);
    result[1][0] = saturate(x[1][0]);
    result[1][1] = saturate(x[1][1]);
    result[1][2] = saturate(x[1][2]);
    result[1][3] = saturate(x[1][3]);
    result[2][0] = saturate(x[2][0]);
    result[2][1] = saturate(x[2][1]);
    result[2][2] = saturate(x[2][2]);
    result[2][3] = saturate(x[2][3]);
    return result;
}
float4x2 saturate(float4x2 x) {
    float4x2 result;
    result[0][0] = saturate(x[0][0]);
    result[0][1] = saturate(x[0][1]);
    result[1][0] = saturate(x[1][0]);
    result[1][1] = saturate(x[1][1]);
    result[2][0] = saturate(x[2][0]);
    result[2][1] = saturate(x[2][1]);
    result[3][0] = saturate(x[3][0]);
    result[3][1] = saturate(x[3][1]);
    return result;
}
float4x3 saturate(float4x3 x) {
    float4x3 result;
    result[0][0] = saturate(x[0][0]);
    result[0][1] = saturate(x[0][1]);
    result[0][2] = saturate(x[0][2]);
    result[1][0] = saturate(x[1][0]);
    result[1][1] = saturate(x[1][1]);
    result[1][2] = saturate(x[1][2]);
    result[2][0] = saturate(x[2][0]);
    result[2][1] = saturate(x[2][1]);
    result[2][2] = saturate(x[2][2]);
    result[3][0] = saturate(x[3][0]);
    result[3][1] = saturate(x[3][1]);
    result[3][2] = saturate(x[3][2]);
    return result;
}
float4x4 saturate(float4x4 x) {
    float4x4 result;
    result[0][0] = saturate(x[0][0]);
    result[0][1] = saturate(x[0][1]);
    result[0][2] = saturate(x[0][2]);
    result[0][3] = saturate(x[0][3]);
    result[1][0] = saturate(x[1][0]);
    result[1][1] = saturate(x[1][1]);
    result[1][2] = saturate(x[1][2]);
    result[1][3] = saturate(x[1][3]);
    result[2][0] = saturate(x[2][0]);
    result[2][1] = saturate(x[2][1]);
    result[2][2] = saturate(x[2][2]);
    result[2][3] = saturate(x[2][3]);
    result[3][0] = saturate(x[3][0]);
    result[3][1] = saturate(x[3][1]);
    result[3][2] = saturate(x[3][2]);
    result[3][3] = saturate(x[3][3]);
    return result;
}

/* Functions named mad */

float mad(float x, float y, float z) {
    return x * y + z;
}
float2 mad(float2 x, float2 y, float2 z) {
    float2 result;
    result[0] = mad(x[0], y[0], z[0]);
    result[1] = mad(x[1], y[1], z[1]);
    return result;
}
float3 mad(float3 x, float3 y, float3 z) {
    float3 result;
    result[0] = mad(x[0], y[0], z[0]);
    result[1] = mad(x[1], y[1], z[1]);
    result[2] = mad(x[2], y[2], z[2]);
    return result;
}
float4 mad(float4 x, float4 y, float4 z) {
    float4 result;
    result[0] = mad(x[0], y[0], z[0]);
    result[1] = mad(x[1], y[1], z[1]);
    result[2] = mad(x[2], y[2], z[2]);
    result[3] = mad(x[3], y[3], z[3]);
    return result;
}
float2x2 mad(float2x2 x, float2x2 y, float2x2 z) {
    float2x2 result;
    result[0][0] = mad(x[0][0], y[0][0], z[0][0]);
    result[0][1] = mad(x[0][1], y[0][1], z[0][1]);
    result[1][0] = mad(x[1][0], y[1][0], z[1][0]);
    result[1][1] = mad(x[1][1], y[1][1], z[1][1]);
    return result;
}
float2x3 mad(float2x3 x, float2x3 y, float2x3 z) {
    float2x3 result;
    result[0][0] = mad(x[0][0], y[0][0], z[0][0]);
    result[0][1] = mad(x[0][1], y[0][1], z[0][1]);
    result[0][2] = mad(x[0][2], y[0][2], z[0][2]);
    result[1][0] = mad(x[1][0], y[1][0], z[1][0]);
    result[1][1] = mad(x[1][1], y[1][1], z[1][1]);
    result[1][2] = mad(x[1][2], y[1][2], z[1][2]);
    return result;
}
float2x4 mad(float2x4 x, float2x4 y, float2x4 z) {
    float2x4 result;
    result[0][0] = mad(x[0][0], y[0][0], z[0][0]);
    result[0][1] = mad(x[0][1], y[0][1], z[0][1]);
    result[0][2] = mad(x[0][2], y[0][2], z[0][2]);
    result[0][3] = mad(x[0][3], y[0][3], z[0][3]);
    result[1][0] = mad(x[1][0], y[1][0], z[1][0]);
    result[1][1] = mad(x[1][1], y[1][1], z[1][1]);
    result[1][2] = mad(x[1][2], y[1][2], z[1][2]);
    result[1][3] = mad(x[1][3], y[1][3], z[1][3]);
    return result;
}
float3x2 mad(float3x2 x, float3x2 y, float3x2 z) {
    float3x2 result;
    result[0][0] = mad(x[0][0], y[0][0], z[0][0]);
    result[0][1] = mad(x[0][1], y[0][1], z[0][1]);
    result[1][0] = mad(x[1][0], y[1][0], z[1][0]);
    result[1][1] = mad(x[1][1], y[1][1], z[1][1]);
    result[2][0] = mad(x[2][0], y[2][0], z[2][0]);
    result[2][1] = mad(x[2][1], y[2][1], z[2][1]);
    return result;
}
float3x3 mad(float3x3 x, float3x3 y, float3x3 z) {
    float3x3 result;
    result[0][0] = mad(x[0][0], y[0][0], z[0][0]);
    result[0][1] = mad(x[0][1], y[0][1], z[0][1]);
    result[0][2] = mad(x[0][2], y[0][2], z[0][2]);
    result[1][0] = mad(x[1][0], y[1][0], z[1][0]);
    result[1][1] = mad(x[1][1], y[1][1], z[1][1]);
    result[1][2] = mad(x[1][2], y[1][2], z[1][2]);
    result[2][0] = mad(x[2][0], y[2][0], z[2][0]);
    result[2][1] = mad(x[2][1], y[2][1], z[2][1]);
    result[2][2] = mad(x[2][2], y[2][2], z[2][2]);
    return result;
}
float3x4 mad(float3x4 x, float3x4 y, float3x4 z) {
    float3x4 result;
    result[0][0] = mad(x[0][0], y[0][0], z[0][0]);
    result[0][1] = mad(x[0][1], y[0][1], z[0][1]);
    result[0][2] = mad(x[0][2], y[0][2], z[0][2]);
    result[0][3] = mad(x[0][3], y[0][3], z[0][3]);
    result[1][0] = mad(x[1][0], y[1][0], z[1][0]);
    result[1][1] = mad(x[1][1], y[1][1], z[1][1]);
    result[1][2] = mad(x[1][2], y[1][2], z[1][2]);
    result[1][3] = mad(x[1][3], y[1][3], z[1][3]);
    result[2][0] = mad(x[2][0], y[2][0], z[2][0]);
    result[2][1] = mad(x[2][1], y[2][1], z[2][1]);
    result[2][2] = mad(x[2][2], y[2][2], z[2][2]);
    result[2][3] = mad(x[2][3], y[2][3], z[2][3]);
    return result;
}
float4x2 mad(float4x2 x, float4x2 y, float4x2 z) {
    float4x2 result;
    result[0][0] = mad(x[0][0], y[0][0], z[0][0]);
    result[0][1] = mad(x[0][1], y[0][1], z[0][1]);
    result[1][0] = mad(x[1][0], y[1][0], z[1][0]);
    result[1][1] = mad(x[1][1], y[1][1], z[1][1]);
    result[2][0] = mad(x[2][0], y[2][0], z[2][0]);
    result[2][1] = mad(x[2][1], y[2][1], z[2][1]);
    result[3][0] = mad(x[3][0], y[3][0], z[3][0]);
    result[3][1] = mad(x[3][1], y[3][1], z[3][1]);
    return result;
}
float4x3 mad(float4x3 x, float4x3 y, float4x3 z) {
    float4x3 result;
    result[0][0] = mad(x[0][0], y[0][0], z[0][0]);
    result[0][1] = mad(x[0][1], y[0][1], z[0][1]);
    result[0][2] = mad(x[0][2], y[0][2], z[0][2]);
    result[1][0] = mad(x[1][0], y[1][0], z[1][0]);
    result[1][1] = mad(x[1][1], y[1][1], z[1][1]);
    result[1][2] = mad(x[1][2], y[1][2], z[1][2]);
    result[2][0] = mad(x[2][0], y[2][0], z[2][0]);
    result[2][1] = mad(x[2][1], y[2][1], z[2][1]);
    result[2][2] = mad(x[2][2], y[2][2], z[2][2]);
    result[3][0] = mad(x[3][0], y[3][0], z[3][0]);
    result[3][1] = mad(x[3][1], y[3][1], z[3][1]);
    result[3][2] = mad(x[3][2], y[3][2], z[3][2]);
    return result;
}
float4x4 mad(float4x4 x, float4x4 y, float4x4 z) {
    float4x4 result;
    result[0][0] = mad(x[0][0], y[0][0], z[0][0]);
    result[0][1] = mad(x[0][1], y[0][1], z[0][1]);
    result[0][2] = mad(x[0][2], y[0][2], z[0][2]);
    result[0][3] = mad(x[0][3], y[0][3], z[0][3]);
    result[1][0] = mad(x[1][0], y[1][0], z[1][0]);
    result[1][1] = mad(x[1][1], y[1][1], z[1][1]);
    result[1][2] = mad(x[1][2], y[1][2], z[1][2]);
    result[1][3] = mad(x[1][3], y[1][3], z[1][3]);
    result[2][0] = mad(x[2][0], y[2][0], z[2][0]);
    result[2][1] = mad(x[2][1], y[2][1], z[2][1]);
    result[2][2] = mad(x[2][2], y[2][2], z[2][2]);
    result[2][3] = mad(x[2][3], y[2][3], z[2][3]);
    result[3][0] = mad(x[3][0], y[3][0], z[3][0]);
    result[3][1] = mad(x[3][1], y[3][1], z[3][1]);
    result[3][2] = mad(x[3][2], y[3][2], z[3][2]);
    result[3][3] = mad(x[3][3], y[3][3], z[3][3]);
    return result;
}


/* Functions named modf */

float modf(float x, thread float* ip) {
    uint result = uint(x);
    if (ip != null)
        *ip = x - float(result);
    return float(result);
}
float2 modf(float2 x, thread float2* y) {
    float2 result;
    float buffer;
    result[0] = modf(x[0], &buffer);
    if (y != null)
        (*y)[0] = buffer;
    result[1] = modf(x[1], &buffer);
    if (y != null)
        (*y)[1] = buffer;
    return result;
}
float3 modf(float3 x, thread float3* y) {
    float3 result;
    float buffer;
    result[0] = modf(x[0], &buffer);
    if (y != null)
        (*y)[0] = buffer;
    result[1] = modf(x[1], &buffer);
    if (y != null)
        (*y)[1] = buffer;
    result[2] = modf(x[2], &buffer);
    if (y != null)
        (*y)[2] = buffer;
    return result;
}
float4 modf(float4 x, thread float4* y) {
    float4 result;
    float buffer;
    result[0] = modf(x[0], &buffer);
    if (y != null)
        (*y)[0] = buffer;
    result[1] = modf(x[1], &buffer);
    if (y != null)
        (*y)[1] = buffer;
    result[2] = modf(x[2], &buffer);
    if (y != null)
        (*y)[2] = buffer;
    result[3] = modf(x[3], &buffer);
    if (y != null)
        (*y)[3] = buffer;
    return result;
}
float2x2 modf(float2x2 x, thread float2x2* y) {
    float2x2 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    if (y != null)
        (*y)[0][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    if (y != null)
        (*y)[0][1] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    if (y != null)
        (*y)[1][0] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    if (y != null)
        (*y)[1][1] = buffer;
    return result;
}
float2x3 modf(float2x3 x, thread float2x3* y) {
    float2x3 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    if (y != null)
        (*y)[0][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    if (y != null)
        (*y)[0][1] = buffer;
    result[0][2] = modf(x[0][2], &buffer);
    if (y != null)
        (*y)[0][2] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    if (y != null)
        (*y)[1][0] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    if (y != null)
        (*y)[1][1] = buffer;
    result[1][2] = modf(x[1][2], &buffer);
    if (y != null)
        (*y)[1][2] = buffer;
    return result;
}
float2x4 modf(float2x4 x, thread float2x4* y) {
    float2x4 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    if (y != null)
        (*y)[0][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    if (y != null)
        (*y)[0][1] = buffer;
    result[0][2] = modf(x[0][2], &buffer);
    if (y != null)
        (*y)[0][2] = buffer;
    result[0][3] = modf(x[0][3], &buffer);
    if (y != null)
        (*y)[0][3] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    if (y != null)
        (*y)[1][0] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    if (y != null)
        (*y)[1][1] = buffer;
    result[1][2] = modf(x[1][2], &buffer);
    if (y != null)
        (*y)[1][2] = buffer;
    result[1][3] = modf(x[1][3], &buffer);
    if (y != null)
        (*y)[1][3] = buffer;
    return result;
}
float3x2 modf(float3x2 x, thread float3x2* y) {
    float3x2 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    if (y != null)
        (*y)[0][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    if (y != null)
        (*y)[0][1] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    if (y != null)
        (*y)[1][0] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    if (y != null)
        (*y)[1][1] = buffer;
    result[2][0] = modf(x[2][0], &buffer);
    if (y != null)
        (*y)[2][0] = buffer;
    result[2][1] = modf(x[2][1], &buffer);
    if (y != null)
        (*y)[2][1] = buffer;
    return result;
}
float3x3 modf(float3x3 x, thread float3x3* y) {
    float3x3 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    if (y != null)
        (*y)[0][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    if (y != null)
        (*y)[0][1] = buffer;
    result[0][2] = modf(x[0][2], &buffer);
    if (y != null)
        (*y)[0][2] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    if (y != null)
        (*y)[1][0] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    if (y != null)
        (*y)[1][1] = buffer;
    result[1][2] = modf(x[1][2], &buffer);
    if (y != null)
        (*y)[1][2] = buffer;
    result[2][0] = modf(x[2][0], &buffer);
    if (y != null)
        (*y)[2][0] = buffer;
    result[2][1] = modf(x[2][1], &buffer);
    if (y != null)
        (*y)[2][1] = buffer;
    result[2][2] = modf(x[2][2], &buffer);
    if (y != null)
        (*y)[2][2] = buffer;
    return result;
}
float3x4 modf(float3x4 x, thread float3x4* y) {
    float3x4 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    if (y != null)
        (*y)[0][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    if (y != null)
        (*y)[0][1] = buffer;
    result[0][2] = modf(x[0][2], &buffer);
    if (y != null)
        (*y)[0][2] = buffer;
    result[0][3] = modf(x[0][3], &buffer);
    if (y != null)
        (*y)[0][3] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    if (y != null)
        (*y)[1][0] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    if (y != null)
        (*y)[1][1] = buffer;
    result[1][2] = modf(x[1][2], &buffer);
    if (y != null)
        (*y)[1][2] = buffer;
    result[1][3] = modf(x[1][3], &buffer);
    if (y != null)
        (*y)[1][3] = buffer;
    result[2][0] = modf(x[2][0], &buffer);
    if (y != null)
        (*y)[2][0] = buffer;
    result[2][1] = modf(x[2][1], &buffer);
    if (y != null)
        (*y)[2][1] = buffer;
    result[2][2] = modf(x[2][2], &buffer);
    if (y != null)
        (*y)[2][2] = buffer;
    result[2][3] = modf(x[2][3], &buffer);
    if (y != null)
        (*y)[2][3] = buffer;
    return result;
}
float4x2 modf(float4x2 x, thread float4x2* y) {
    float4x2 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    if (y != null)
        (*y)[0][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    if (y != null)
        (*y)[0][1] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    if (y != null)
        (*y)[1][0] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    if (y != null)
        (*y)[1][1] = buffer;
    result[2][0] = modf(x[2][0], &buffer);
    if (y != null)
        (*y)[2][0] = buffer;
    result[2][1] = modf(x[2][1], &buffer);
    if (y != null)
        (*y)[2][1] = buffer;
    result[3][0] = modf(x[3][0], &buffer);
    if (y != null)
        (*y)[3][0] = buffer;
    result[3][1] = modf(x[3][1], &buffer);
    if (y != null)
        (*y)[3][1] = buffer;
    return result;
}
float4x3 modf(float4x3 x, thread float4x3* y) {
    float4x3 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    if (y != null)
        (*y)[0][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    if (y != null)
        (*y)[0][1] = buffer;
    result[0][2] = modf(x[0][2], &buffer);
    if (y != null)
        (*y)[0][2] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    if (y != null)
        (*y)[1][0] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    if (y != null)
        (*y)[1][1] = buffer;
    result[1][2] = modf(x[1][2], &buffer);
    if (y != null)
        (*y)[1][2] = buffer;
    result[2][0] = modf(x[2][0], &buffer);
    if (y != null)
        (*y)[2][0] = buffer;
    result[2][1] = modf(x[2][1], &buffer);
    if (y != null)
        (*y)[2][1] = buffer;
    result[2][2] = modf(x[2][2], &buffer);
    if (y != null)
        (*y)[2][2] = buffer;
    result[3][0] = modf(x[3][0], &buffer);
    if (y != null)
        (*y)[3][0] = buffer;
    result[3][1] = modf(x[3][1], &buffer);
    if (y != null)
        (*y)[3][1] = buffer;
    result[3][2] = modf(x[3][2], &buffer);
    if (y != null)
        (*y)[3][2] = buffer;
    return result;
}
float4x4 modf(float4x4 x, thread float4x4* y) {
    float4x4 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    if (y != null)
        (*y)[0][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    if (y != null)
        (*y)[0][1] = buffer;
    result[0][2] = modf(x[0][2], &buffer);
    if (y != null)
        (*y)[0][2] = buffer;
    result[0][3] = modf(x[0][3], &buffer);
    if (y != null)
        (*y)[0][3] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    if (y != null)
        (*y)[1][0] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    if (y != null)
        (*y)[1][1] = buffer;
    result[1][2] = modf(x[1][2], &buffer);
    if (y != null)
        (*y)[1][2] = buffer;
    result[1][3] = modf(x[1][3], &buffer);
    if (y != null)
        (*y)[1][3] = buffer;
    result[2][0] = modf(x[2][0], &buffer);
    if (y != null)
        (*y)[2][0] = buffer;
    result[2][1] = modf(x[2][1], &buffer);
    if (y != null)
        (*y)[2][1] = buffer;
    result[2][2] = modf(x[2][2], &buffer);
    if (y != null)
        (*y)[2][2] = buffer;
    result[2][3] = modf(x[2][3], &buffer);
    if (y != null)
        (*y)[2][3] = buffer;
    result[3][0] = modf(x[3][0], &buffer);
    if (y != null)
        (*y)[3][0] = buffer;
    result[3][1] = modf(x[3][1], &buffer);
    if (y != null)
        (*y)[3][1] = buffer;
    result[3][2] = modf(x[3][2], &buffer);
    if (y != null)
        (*y)[3][2] = buffer;
    result[3][3] = modf(x[3][3], &buffer);
    if (y != null)
        (*y)[3][3] = buffer;
    return result;
}


float modf(float x, device float* ip) {
    uint result = uint(x);
    if (ip != null)
        *ip = x - float(result);
    return float(result);
}
float2 modf(float2 x, device float2* y) {
    float2 result;
    float buffer;
    result[0] = modf(x[0], &buffer);
    if (y != null)
        (*y)[0] = buffer;
    result[1] = modf(x[1], &buffer);
    if (y != null)
        (*y)[1] = buffer;
    return result;
}
float3 modf(float3 x, device float3* y) {
    float3 result;
    float buffer;
    result[0] = modf(x[0], &buffer);
    if (y != null)
        (*y)[0] = buffer;
    result[1] = modf(x[1], &buffer);
    if (y != null)
        (*y)[1] = buffer;
    result[2] = modf(x[2], &buffer);
    if (y != null)
        (*y)[2] = buffer;
    return result;
}
float4 modf(float4 x, device float4* y) {
    float4 result;
    float buffer;
    result[0] = modf(x[0], &buffer);
    if (y != null)
        (*y)[0] = buffer;
    result[1] = modf(x[1], &buffer);
    if (y != null)
        (*y)[1] = buffer;
    result[2] = modf(x[2], &buffer);
    if (y != null)
        (*y)[2] = buffer;
    result[3] = modf(x[3], &buffer);
    if (y != null)
        (*y)[3] = buffer;
    return result;
}
float2x2 modf(float2x2 x, device float2x2* y) {
    float2x2 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    if (y != null)
        (*y)[0][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    if (y != null)
        (*y)[0][1] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    if (y != null)
        (*y)[1][0] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    if (y != null)
        (*y)[1][1] = buffer;
    return result;
}
float2x3 modf(float2x3 x, device float2x3* y) {
    float2x3 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    if (y != null)
        (*y)[0][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    if (y != null)
        (*y)[0][1] = buffer;
    result[0][2] = modf(x[0][2], &buffer);
    if (y != null)
        (*y)[0][2] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    if (y != null)
        (*y)[1][0] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    if (y != null)
        (*y)[1][1] = buffer;
    result[1][2] = modf(x[1][2], &buffer);
    if (y != null)
        (*y)[1][2] = buffer;
    return result;
}
float2x4 modf(float2x4 x, device float2x4* y) {
    float2x4 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    if (y != null)
        (*y)[0][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    if (y != null)
        (*y)[0][1] = buffer;
    result[0][2] = modf(x[0][2], &buffer);
    if (y != null)
        (*y)[0][2] = buffer;
    result[0][3] = modf(x[0][3], &buffer);
    if (y != null)
        (*y)[0][3] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    if (y != null)
        (*y)[1][0] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    if (y != null)
        (*y)[1][1] = buffer;
    result[1][2] = modf(x[1][2], &buffer);
    if (y != null)
        (*y)[1][2] = buffer;
    result[1][3] = modf(x[1][3], &buffer);
    if (y != null)
        (*y)[1][3] = buffer;
    return result;
}
float3x2 modf(float3x2 x, device float3x2* y) {
    float3x2 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    if (y != null)
        (*y)[0][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    if (y != null)
        (*y)[0][1] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    if (y != null)
        (*y)[1][0] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    if (y != null)
        (*y)[1][1] = buffer;
    result[2][0] = modf(x[2][0], &buffer);
    if (y != null)
        (*y)[2][0] = buffer;
    result[2][1] = modf(x[2][1], &buffer);
    if (y != null)
        (*y)[2][1] = buffer;
    return result;
}
float3x3 modf(float3x3 x, device float3x3* y) {
    float3x3 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    if (y != null)
        (*y)[0][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    if (y != null)
        (*y)[0][1] = buffer;
    result[0][2] = modf(x[0][2], &buffer);
    if (y != null)
        (*y)[0][2] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    if (y != null)
        (*y)[1][0] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    if (y != null)
        (*y)[1][1] = buffer;
    result[1][2] = modf(x[1][2], &buffer);
    if (y != null)
        (*y)[1][2] = buffer;
    result[2][0] = modf(x[2][0], &buffer);
    if (y != null)
        (*y)[2][0] = buffer;
    result[2][1] = modf(x[2][1], &buffer);
    if (y != null)
        (*y)[2][1] = buffer;
    result[2][2] = modf(x[2][2], &buffer);
    if (y != null)
        (*y)[2][2] = buffer;
    return result;
}
float3x4 modf(float3x4 x, device float3x4* y) {
    float3x4 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    if (y != null)
        (*y)[0][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    if (y != null)
        (*y)[0][1] = buffer;
    result[0][2] = modf(x[0][2], &buffer);
    if (y != null)
        (*y)[0][2] = buffer;
    result[0][3] = modf(x[0][3], &buffer);
    if (y != null)
        (*y)[0][3] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    if (y != null)
        (*y)[1][0] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    if (y != null)
        (*y)[1][1] = buffer;
    result[1][2] = modf(x[1][2], &buffer);
    if (y != null)
        (*y)[1][2] = buffer;
    result[1][3] = modf(x[1][3], &buffer);
    if (y != null)
        (*y)[1][3] = buffer;
    result[2][0] = modf(x[2][0], &buffer);
    if (y != null)
        (*y)[2][0] = buffer;
    result[2][1] = modf(x[2][1], &buffer);
    if (y != null)
        (*y)[2][1] = buffer;
    result[2][2] = modf(x[2][2], &buffer);
    if (y != null)
        (*y)[2][2] = buffer;
    result[2][3] = modf(x[2][3], &buffer);
    if (y != null)
        (*y)[2][3] = buffer;
    return result;
}
float4x2 modf(float4x2 x, device float4x2* y) {
    float4x2 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    if (y != null)
        (*y)[0][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    if (y != null)
        (*y)[0][1] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    if (y != null)
        (*y)[1][0] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    if (y != null)
        (*y)[1][1] = buffer;
    result[2][0] = modf(x[2][0], &buffer);
    if (y != null)
        (*y)[2][0] = buffer;
    result[2][1] = modf(x[2][1], &buffer);
    if (y != null)
        (*y)[2][1] = buffer;
    result[3][0] = modf(x[3][0], &buffer);
    if (y != null)
        (*y)[3][0] = buffer;
    result[3][1] = modf(x[3][1], &buffer);
    if (y != null)
        (*y)[3][1] = buffer;
    return result;
}
float4x3 modf(float4x3 x, device float4x3* y) {
    float4x3 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    if (y != null)
        (*y)[0][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    if (y != null)
        (*y)[0][1] = buffer;
    result[0][2] = modf(x[0][2], &buffer);
    if (y != null)
        (*y)[0][2] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    if (y != null)
        (*y)[1][0] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    if (y != null)
        (*y)[1][1] = buffer;
    result[1][2] = modf(x[1][2], &buffer);
    if (y != null)
        (*y)[1][2] = buffer;
    result[2][0] = modf(x[2][0], &buffer);
    if (y != null)
        (*y)[2][0] = buffer;
    result[2][1] = modf(x[2][1], &buffer);
    if (y != null)
        (*y)[2][1] = buffer;
    result[2][2] = modf(x[2][2], &buffer);
    if (y != null)
        (*y)[2][2] = buffer;
    result[3][0] = modf(x[3][0], &buffer);
    if (y != null)
        (*y)[3][0] = buffer;
    result[3][1] = modf(x[3][1], &buffer);
    if (y != null)
        (*y)[3][1] = buffer;
    result[3][2] = modf(x[3][2], &buffer);
    if (y != null)
        (*y)[3][2] = buffer;
    return result;
}
float4x4 modf(float4x4 x, device float4x4* y) {
    float4x4 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    if (y != null)
        (*y)[0][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    if (y != null)
        (*y)[0][1] = buffer;
    result[0][2] = modf(x[0][2], &buffer);
    if (y != null)
        (*y)[0][2] = buffer;
    result[0][3] = modf(x[0][3], &buffer);
    if (y != null)
        (*y)[0][3] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    if (y != null)
        (*y)[1][0] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    if (y != null)
        (*y)[1][1] = buffer;
    result[1][2] = modf(x[1][2], &buffer);
    if (y != null)
        (*y)[1][2] = buffer;
    result[1][3] = modf(x[1][3], &buffer);
    if (y != null)
        (*y)[1][3] = buffer;
    result[2][0] = modf(x[2][0], &buffer);
    if (y != null)
        (*y)[2][0] = buffer;
    result[2][1] = modf(x[2][1], &buffer);
    if (y != null)
        (*y)[2][1] = buffer;
    result[2][2] = modf(x[2][2], &buffer);
    if (y != null)
        (*y)[2][2] = buffer;
    result[2][3] = modf(x[2][3], &buffer);
    if (y != null)
        (*y)[2][3] = buffer;
    result[3][0] = modf(x[3][0], &buffer);
    if (y != null)
        (*y)[3][0] = buffer;
    result[3][1] = modf(x[3][1], &buffer);
    if (y != null)
        (*y)[3][1] = buffer;
    result[3][2] = modf(x[3][2], &buffer);
    if (y != null)
        (*y)[3][2] = buffer;
    result[3][3] = modf(x[3][3], &buffer);
    if (y != null)
        (*y)[3][3] = buffer;
    return result;
}


float modf(float x, threadgroup float* ip) {
    uint result = uint(x);
    if (ip != null)
        *ip = x - float(result);
    return float(result);
}
float2 modf(float2 x, threadgroup float2* y) {
    float2 result;
    float buffer;
    result[0] = modf(x[0], &buffer);
    if (y != null)
        (*y)[0] = buffer;
    result[1] = modf(x[1], &buffer);
    if (y != null)
        (*y)[1] = buffer;
    return result;
}
float3 modf(float3 x, threadgroup float3* y) {
    float3 result;
    float buffer;
    result[0] = modf(x[0], &buffer);
    if (y != null)
        (*y)[0] = buffer;
    result[1] = modf(x[1], &buffer);
    if (y != null)
        (*y)[1] = buffer;
    result[2] = modf(x[2], &buffer);
    if (y != null)
        (*y)[2] = buffer;
    return result;
}
float4 modf(float4 x, threadgroup float4* y) {
    float4 result;
    float buffer;
    result[0] = modf(x[0], &buffer);
    if (y != null)
        (*y)[0] = buffer;
    result[1] = modf(x[1], &buffer);
    if (y != null)
        (*y)[1] = buffer;
    result[2] = modf(x[2], &buffer);
    if (y != null)
        (*y)[2] = buffer;
    result[3] = modf(x[3], &buffer);
    if (y != null)
        (*y)[3] = buffer;
    return result;
}
float2x2 modf(float2x2 x, threadgroup float2x2* y) {
    float2x2 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    if (y != null)
        (*y)[0][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    if (y != null)
        (*y)[0][1] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    if (y != null)
        (*y)[1][0] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    if (y != null)
        (*y)[1][1] = buffer;
    return result;
}
float2x3 modf(float2x3 x, threadgroup float2x3* y) {
    float2x3 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    if (y != null)
        (*y)[0][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    if (y != null)
        (*y)[0][1] = buffer;
    result[0][2] = modf(x[0][2], &buffer);
    if (y != null)
        (*y)[0][2] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    if (y != null)
        (*y)[1][0] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    if (y != null)
        (*y)[1][1] = buffer;
    result[1][2] = modf(x[1][2], &buffer);
    if (y != null)
        (*y)[1][2] = buffer;
    return result;
}
float2x4 modf(float2x4 x, threadgroup float2x4* y) {
    float2x4 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    if (y != null)
        (*y)[0][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    if (y != null)
        (*y)[0][1] = buffer;
    result[0][2] = modf(x[0][2], &buffer);
    if (y != null)
        (*y)[0][2] = buffer;
    result[0][3] = modf(x[0][3], &buffer);
    if (y != null)
        (*y)[0][3] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    if (y != null)
        (*y)[1][0] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    if (y != null)
        (*y)[1][1] = buffer;
    result[1][2] = modf(x[1][2], &buffer);
    if (y != null)
        (*y)[1][2] = buffer;
    result[1][3] = modf(x[1][3], &buffer);
    if (y != null)
        (*y)[1][3] = buffer;
    return result;
}
float3x2 modf(float3x2 x, threadgroup float3x2* y) {
    float3x2 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    if (y != null)
        (*y)[0][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    if (y != null)
        (*y)[0][1] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    if (y != null)
        (*y)[1][0] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    if (y != null)
        (*y)[1][1] = buffer;
    result[2][0] = modf(x[2][0], &buffer);
    if (y != null)
        (*y)[2][0] = buffer;
    result[2][1] = modf(x[2][1], &buffer);
    if (y != null)
        (*y)[2][1] = buffer;
    return result;
}
float3x3 modf(float3x3 x, threadgroup float3x3* y) {
    float3x3 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    if (y != null)
        (*y)[0][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    if (y != null)
        (*y)[0][1] = buffer;
    result[0][2] = modf(x[0][2], &buffer);
    if (y != null)
        (*y)[0][2] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    if (y != null)
        (*y)[1][0] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    if (y != null)
        (*y)[1][1] = buffer;
    result[1][2] = modf(x[1][2], &buffer);
    if (y != null)
        (*y)[1][2] = buffer;
    result[2][0] = modf(x[2][0], &buffer);
    if (y != null)
        (*y)[2][0] = buffer;
    result[2][1] = modf(x[2][1], &buffer);
    if (y != null)
        (*y)[2][1] = buffer;
    result[2][2] = modf(x[2][2], &buffer);
    if (y != null)
        (*y)[2][2] = buffer;
    return result;
}
float3x4 modf(float3x4 x, threadgroup float3x4* y) {
    float3x4 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    if (y != null)
        (*y)[0][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    if (y != null)
        (*y)[0][1] = buffer;
    result[0][2] = modf(x[0][2], &buffer);
    if (y != null)
        (*y)[0][2] = buffer;
    result[0][3] = modf(x[0][3], &buffer);
    if (y != null)
        (*y)[0][3] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    if (y != null)
        (*y)[1][0] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    if (y != null)
        (*y)[1][1] = buffer;
    result[1][2] = modf(x[1][2], &buffer);
    if (y != null)
        (*y)[1][2] = buffer;
    result[1][3] = modf(x[1][3], &buffer);
    if (y != null)
        (*y)[1][3] = buffer;
    result[2][0] = modf(x[2][0], &buffer);
    if (y != null)
        (*y)[2][0] = buffer;
    result[2][1] = modf(x[2][1], &buffer);
    if (y != null)
        (*y)[2][1] = buffer;
    result[2][2] = modf(x[2][2], &buffer);
    if (y != null)
        (*y)[2][2] = buffer;
    result[2][3] = modf(x[2][3], &buffer);
    if (y != null)
        (*y)[2][3] = buffer;
    return result;
}
float4x2 modf(float4x2 x, threadgroup float4x2* y) {
    float4x2 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    if (y != null)
        (*y)[0][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    if (y != null)
        (*y)[0][1] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    if (y != null)
        (*y)[1][0] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    if (y != null)
        (*y)[1][1] = buffer;
    result[2][0] = modf(x[2][0], &buffer);
    if (y != null)
        (*y)[2][0] = buffer;
    result[2][1] = modf(x[2][1], &buffer);
    if (y != null)
        (*y)[2][1] = buffer;
    result[3][0] = modf(x[3][0], &buffer);
    if (y != null)
        (*y)[3][0] = buffer;
    result[3][1] = modf(x[3][1], &buffer);
    if (y != null)
        (*y)[3][1] = buffer;
    return result;
}
float4x3 modf(float4x3 x, threadgroup float4x3* y) {
    float4x3 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    if (y != null)
        (*y)[0][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    if (y != null)
        (*y)[0][1] = buffer;
    result[0][2] = modf(x[0][2], &buffer);
    if (y != null)
        (*y)[0][2] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    if (y != null)
        (*y)[1][0] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    if (y != null)
        (*y)[1][1] = buffer;
    result[1][2] = modf(x[1][2], &buffer);
    if (y != null)
        (*y)[1][2] = buffer;
    result[2][0] = modf(x[2][0], &buffer);
    if (y != null)
        (*y)[2][0] = buffer;
    result[2][1] = modf(x[2][1], &buffer);
    if (y != null)
        (*y)[2][1] = buffer;
    result[2][2] = modf(x[2][2], &buffer);
    if (y != null)
        (*y)[2][2] = buffer;
    result[3][0] = modf(x[3][0], &buffer);
    if (y != null)
        (*y)[3][0] = buffer;
    result[3][1] = modf(x[3][1], &buffer);
    if (y != null)
        (*y)[3][1] = buffer;
    result[3][2] = modf(x[3][2], &buffer);
    if (y != null)
        (*y)[3][2] = buffer;
    return result;
}
float4x4 modf(float4x4 x, threadgroup float4x4* y) {
    float4x4 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    if (y != null)
        (*y)[0][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    if (y != null)
        (*y)[0][1] = buffer;
    result[0][2] = modf(x[0][2], &buffer);
    if (y != null)
        (*y)[0][2] = buffer;
    result[0][3] = modf(x[0][3], &buffer);
    if (y != null)
        (*y)[0][3] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    if (y != null)
        (*y)[1][0] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    if (y != null)
        (*y)[1][1] = buffer;
    result[1][2] = modf(x[1][2], &buffer);
    if (y != null)
        (*y)[1][2] = buffer;
    result[1][3] = modf(x[1][3], &buffer);
    if (y != null)
        (*y)[1][3] = buffer;
    result[2][0] = modf(x[2][0], &buffer);
    if (y != null)
        (*y)[2][0] = buffer;
    result[2][1] = modf(x[2][1], &buffer);
    if (y != null)
        (*y)[2][1] = buffer;
    result[2][2] = modf(x[2][2], &buffer);
    if (y != null)
        (*y)[2][2] = buffer;
    result[2][3] = modf(x[2][3], &buffer);
    if (y != null)
        (*y)[2][3] = buffer;
    result[3][0] = modf(x[3][0], &buffer);
    if (y != null)
        (*y)[3][0] = buffer;
    result[3][1] = modf(x[3][1], &buffer);
    if (y != null)
        (*y)[3][1] = buffer;
    result[3][2] = modf(x[3][2], &buffer);
    if (y != null)
        (*y)[3][2] = buffer;
    result[3][3] = modf(x[3][3], &buffer);
    if (y != null)
        (*y)[3][3] = buffer;
    return result;
}


/* Functions named operator.wy= */
bool4 operator.wy=(bool4 v, bool2 c) {
    bool4 result = v;
    result.w = c.x;
    result.y = c.y;
    return result;
}
uint4 operator.wy=(uint4 v, uint2 c) {
    uint4 result = v;
    result.w = c.x;
    result.y = c.y;
    return result;
}
int4 operator.wy=(int4 v, int2 c) {
    int4 result = v;
    result.w = c.x;
    result.y = c.y;
    return result;
}
float4 operator.wy=(float4 v, float2 c) {
    float4 result = v;
    result.w = c.x;
    result.y = c.y;
    return result;
}

/* Functions named operator[]= */
bool2 operator[]=(bool2 v, uint index, bool a) {
    switch (index) {
        case 0:
            v.x = a;
            break;
        case 1:
            v.y = a;
            break;
        default:
            break;
    }
    return v;
}
bool3 operator[]=(bool3 v, uint index, bool a) {
    switch (index) {
        case 0:
            v.x = a;
            break;
        case 1:
            v.y = a;
            break;
        case 2:
            v.z = a;
            break;
        default:
            break;
    }
    return v;
}
bool4 operator[]=(bool4 v, uint index, bool a) {
    switch (index) {
        case 0:
            v.x = a;
            break;
        case 1:
            v.y = a;
            break;
        case 2:
            v.z = a;
            break;
        case 3:
            v.w = a;
            break;
        default:
            break;
    }
    return v;
}
uint2 operator[]=(uint2 v, uint index, uint a) {
    switch (index) {
        case 0:
            v.x = a;
            break;
        case 1:
            v.y = a;
            break;
        default:
            break;
    }
    return v;
}
uint3 operator[]=(uint3 v, uint index, uint a) {
    switch (index) {
        case 0:
            v.x = a;
            break;
        case 1:
            v.y = a;
            break;
        case 2:
            v.z = a;
            break;
        default:
            break;
    }
    return v;
}
uint4 operator[]=(uint4 v, uint index, uint a) {
    switch (index) {
        case 0:
            v.x = a;
            break;
        case 1:
            v.y = a;
            break;
        case 2:
            v.z = a;
            break;
        case 3:
            v.w = a;
            break;
        default:
            break;
    }
    return v;
}
int2 operator[]=(int2 v, uint index, int a) {
    switch (index) {
        case 0:
            v.x = a;
            break;
        case 1:
            v.y = a;
            break;
        default:
            break;
    }
    return v;
}
int3 operator[]=(int3 v, uint index, int a) {
    switch (index) {
        case 0:
            v.x = a;
            break;
        case 1:
            v.y = a;
            break;
        case 2:
            v.z = a;
            break;
        default:
            break;
    }
    return v;
}
int4 operator[]=(int4 v, uint index, int a) {
    switch (index) {
        case 0:
            v.x = a;
            break;
        case 1:
            v.y = a;
            break;
        case 2:
            v.z = a;
            break;
        case 3:
            v.w = a;
            break;
        default:
            break;
    }
    return v;
}
float2 operator[]=(float2 v, uint index, float a) {
    switch (index) {
        case 0:
            v.x = a;
            break;
        case 1:
            v.y = a;
            break;
        default:
            break;
    }
    return v;
}
float3 operator[]=(float3 v, uint index, float a) {
    switch (index) {
        case 0:
            v.x = a;
            break;
        case 1:
            v.y = a;
            break;
        case 2:
            v.z = a;
            break;
        default:
            break;
    }
    return v;
}
float4 operator[]=(float4 v, uint index, float a) {
    switch (index) {
        case 0:
            v.x = a;
            break;
        case 1:
            v.y = a;
            break;
        case 2:
            v.z = a;
            break;
        case 3:
            v.w = a;
            break;
        default:
            break;
    }
    return v;
}

native float2x2 operator[]=(float2x2, uint, float2);
native float2x3 operator[]=(float2x3, uint, float3);
native float2x4 operator[]=(float2x4, uint, float4);
native float3x2 operator[]=(float3x2, uint, float2);
native float3x3 operator[]=(float3x3, uint, float3);
native float3x4 operator[]=(float3x4, uint, float4);
native float4x2 operator[]=(float4x2, uint, float2);
native float4x3 operator[]=(float4x3, uint, float3);
native float4x4 operator[]=(float4x4, uint, float4);


/* Functions named operator.yxyx */
bool4 operator.yxyx(bool2 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
bool4 operator.yxyx(bool3 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
bool4 operator.yxyx(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
uint4 operator.yxyx(uint2 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
uint4 operator.yxyx(uint3 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
uint4 operator.yxyx(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
int4 operator.yxyx(int2 v) {
    int4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
int4 operator.yxyx(int3 v) {
    int4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
int4 operator.yxyx(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
float4 operator.yxyx(float2 v) {
    float4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
float4 operator.yxyx(float3 v) {
    float4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
float4 operator.yxyx(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}

/* Functions named operator.zwxy */
bool4 operator.zwxy(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.x;
    result.w = v.y;
    return result;
}
uint4 operator.zwxy(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.x;
    result.w = v.y;
    return result;
}
int4 operator.zwxy(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.x;
    result.w = v.y;
    return result;
}
float4 operator.zwxy(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.x;
    result.w = v.y;
    return result;
}

/* Functions named operator.wyyw */
bool4 operator.wyyw(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.y;
    result.w = v.w;
    return result;
}
uint4 operator.wyyw(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.y;
    result.w = v.w;
    return result;
}
int4 operator.wyyw(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.y;
    result.w = v.w;
    return result;
}
float4 operator.wyyw(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.y;
    result.w = v.w;
    return result;
}

/* Functions named operator.xxxw */
bool4 operator.xxxw(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.w;
    return result;
}
uint4 operator.xxxw(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.w;
    return result;
}
int4 operator.xxxw(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.w;
    return result;
}
float4 operator.xxxw(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.w;
    return result;
}

/* Functions named operator.ywy */
bool3 operator.ywy(bool4 v) {
    bool3 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.y;
    return result;
}
uint3 operator.ywy(uint4 v) {
    uint3 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.y;
    return result;
}
int3 operator.ywy(int4 v) {
    int3 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.y;
    return result;
}
float3 operator.ywy(float4 v) {
    float3 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.y;
    return result;
}

/* Functions named operator.xyzw= */
bool4 operator.xyzw=(bool4 v, bool4 c) {
    bool4 result = v;
    result.x = c.x;
    result.y = c.y;
    result.z = c.z;
    result.w = c.w;
    return result;
}
uint4 operator.xyzw=(uint4 v, uint4 c) {
    uint4 result = v;
    result.x = c.x;
    result.y = c.y;
    result.z = c.z;
    result.w = c.w;
    return result;
}
int4 operator.xyzw=(int4 v, int4 c) {
    int4 result = v;
    result.x = c.x;
    result.y = c.y;
    result.z = c.z;
    result.w = c.w;
    return result;
}
float4 operator.xyzw=(float4 v, float4 c) {
    float4 result = v;
    result.x = c.x;
    result.y = c.y;
    result.z = c.z;
    result.w = c.w;
    return result;
}

/* Functions named operator.xzww */
bool4 operator.xzww(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.w;
    result.w = v.w;
    return result;
}
uint4 operator.xzww(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.w;
    result.w = v.w;
    return result;
}
int4 operator.xzww(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.w;
    result.w = v.w;
    return result;
}
float4 operator.xzww(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.w;
    result.w = v.w;
    return result;
}

/* Functions named operator.xzwy */
bool4 operator.xzwy(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.w;
    result.w = v.y;
    return result;
}
uint4 operator.xzwy(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.w;
    result.w = v.y;
    return result;
}
int4 operator.xzwy(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.w;
    result.w = v.y;
    return result;
}
float4 operator.xzwy(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.w;
    result.w = v.y;
    return result;
}

/* Functions named operator.wwwz */
bool4 operator.wwwz(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.w;
    result.w = v.z;
    return result;
}
uint4 operator.wwwz(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.w;
    result.w = v.z;
    return result;
}
int4 operator.wwwz(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.w;
    result.w = v.z;
    return result;
}
float4 operator.wwwz(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.w;
    result.w = v.z;
    return result;
}

/* Functions named operator.zxzx */
bool4 operator.zxzx(bool3 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    result.w = v.x;
    return result;
}
bool4 operator.zxzx(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    result.w = v.x;
    return result;
}
uint4 operator.zxzx(uint3 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    result.w = v.x;
    return result;
}
uint4 operator.zxzx(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    result.w = v.x;
    return result;
}
int4 operator.zxzx(int3 v) {
    int4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    result.w = v.x;
    return result;
}
int4 operator.zxzx(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    result.w = v.x;
    return result;
}
float4 operator.zxzx(float3 v) {
    float4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    result.w = v.x;
    return result;
}
float4 operator.zxzx(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    result.w = v.x;
    return result;
}

/* Functions named operator.zyx= */
bool3 operator.zyx=(bool3 v, bool3 c) {
    bool3 result = v;
    result.z = c.x;
    result.y = c.y;
    result.x = c.z;
    return result;
}
bool4 operator.zyx=(bool4 v, bool3 c) {
    bool4 result = v;
    result.z = c.x;
    result.y = c.y;
    result.x = c.z;
    return result;
}
uint3 operator.zyx=(uint3 v, uint3 c) {
    uint3 result = v;
    result.z = c.x;
    result.y = c.y;
    result.x = c.z;
    return result;
}
uint4 operator.zyx=(uint4 v, uint3 c) {
    uint4 result = v;
    result.z = c.x;
    result.y = c.y;
    result.x = c.z;
    return result;
}
int3 operator.zyx=(int3 v, int3 c) {
    int3 result = v;
    result.z = c.x;
    result.y = c.y;
    result.x = c.z;
    return result;
}
int4 operator.zyx=(int4 v, int3 c) {
    int4 result = v;
    result.z = c.x;
    result.y = c.y;
    result.x = c.z;
    return result;
}
float3 operator.zyx=(float3 v, float3 c) {
    float3 result = v;
    result.z = c.x;
    result.y = c.y;
    result.x = c.z;
    return result;
}
float4 operator.zyx=(float4 v, float3 c) {
    float4 result = v;
    result.z = c.x;
    result.y = c.y;
    result.x = c.z;
    return result;
}

/* Functions named InterlockedMin */
native void InterlockedMin(device atomic_uint*, uint, thread uint*);
native void InterlockedMin(device atomic_int*, int, thread int*);
native void InterlockedMin(device atomic_uint*, uint, device uint*);
native void InterlockedMin(device atomic_int*, int, device int*);
native void InterlockedMin(device atomic_uint*, uint, threadgroup uint*);
native void InterlockedMin(device atomic_int*, int, threadgroup int*);
native void InterlockedMin(threadgroup atomic_uint*, uint, thread uint*);
native void InterlockedMin(threadgroup atomic_int*, int, thread int*);
native void InterlockedMin(threadgroup atomic_uint*, uint, device uint*);
native void InterlockedMin(threadgroup atomic_int*, int, device int*);
native void InterlockedMin(threadgroup atomic_uint*, uint, threadgroup uint*);
native void InterlockedMin(threadgroup atomic_int*, int, threadgroup int*);

/* Functions named length */
float length(float x) {
    return sqrt(dot(x, x));
}
float length(float2 x) {
    return sqrt(dot(x, x));
}
float length(float3 x) {
    return sqrt(dot(x, x));
}
float length(float4 x) {
    return sqrt(dot(x, x));
}


/* Functions named operator.xwzy */
bool4 operator.xwzy(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.z;
    result.w = v.y;
    return result;
}
uint4 operator.xwzy(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.z;
    result.w = v.y;
    return result;
}
int4 operator.xwzy(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.z;
    result.w = v.y;
    return result;
}
float4 operator.xwzy(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.z;
    result.w = v.y;
    return result;
}

/* Functions named operator-- */
uint operator--(uint value) {
    return value - 1;
}
int operator--(int value) {
    return value - 1;
}
float operator--(float value) {
    return value - 1;
}

/* Functions named operator<< */
native int operator<<(int, uint);
native uint operator<<(uint, uint);

/* Functions named operator.wwyz */
bool4 operator.wwyz(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.y;
    result.w = v.z;
    return result;
}
uint4 operator.wwyz(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.y;
    result.w = v.z;
    return result;
}
int4 operator.wwyz(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.y;
    result.w = v.z;
    return result;
}
float4 operator.wwyz(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.y;
    result.w = v.z;
    return result;
}

/* Functions named operator.xxy */
bool3 operator.xxy(bool2 v) {
    bool3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    return result;
}
bool3 operator.xxy(bool3 v) {
    bool3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    return result;
}
bool3 operator.xxy(bool4 v) {
    bool3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    return result;
}
uint3 operator.xxy(uint2 v) {
    uint3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    return result;
}
uint3 operator.xxy(uint3 v) {
    uint3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    return result;
}
uint3 operator.xxy(uint4 v) {
    uint3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    return result;
}
int3 operator.xxy(int2 v) {
    int3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    return result;
}
int3 operator.xxy(int3 v) {
    int3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    return result;
}
int3 operator.xxy(int4 v) {
    int3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    return result;
}
float3 operator.xxy(float2 v) {
    float3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    return result;
}
float3 operator.xxy(float3 v) {
    float3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    return result;
}
float3 operator.xxy(float4 v) {
    float3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    return result;
}

/* Functions named operator.xww */
bool3 operator.xww(bool4 v) {
    bool3 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.w;
    return result;
}
uint3 operator.xww(uint4 v) {
    uint3 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.w;
    return result;
}
int3 operator.xww(int4 v) {
    int3 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.w;
    return result;
}
float3 operator.xww(float4 v) {
    float3 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.w;
    return result;
}

/* Functions named operator.zyxw= */
bool4 operator.zyxw=(bool4 v, bool4 c) {
    bool4 result = v;
    result.z = c.x;
    result.y = c.y;
    result.x = c.z;
    result.w = c.w;
    return result;
}
uint4 operator.zyxw=(uint4 v, uint4 c) {
    uint4 result = v;
    result.z = c.x;
    result.y = c.y;
    result.x = c.z;
    result.w = c.w;
    return result;
}
int4 operator.zyxw=(int4 v, int4 c) {
    int4 result = v;
    result.z = c.x;
    result.y = c.y;
    result.x = c.z;
    result.w = c.w;
    return result;
}
float4 operator.zyxw=(float4 v, float4 c) {
    float4 result = v;
    result.z = c.x;
    result.y = c.y;
    result.x = c.z;
    result.w = c.w;
    return result;
}

/* Functions named operator.ywwz */
bool4 operator.ywwz(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.w;
    result.w = v.z;
    return result;
}
uint4 operator.ywwz(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.w;
    result.w = v.z;
    return result;
}
int4 operator.ywwz(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.w;
    result.w = v.z;
    return result;
}
float4 operator.ywwz(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.w;
    result.w = v.z;
    return result;
}

/* Functions named operator.wyzz */
bool4 operator.wyzz(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.z;
    result.w = v.z;
    return result;
}
uint4 operator.wyzz(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.z;
    result.w = v.z;
    return result;
}
int4 operator.wyzz(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.z;
    result.w = v.z;
    return result;
}
float4 operator.wyzz(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.z;
    result.w = v.z;
    return result;
}

/* Functions named exp2 */
float exp2(float x) {
    return exp(x * log(float(2)));
}
float2 exp2(float2 x) {
    float2 result;
    result[0] = exp2(x[0]);
    result[1] = exp2(x[1]);
    return result;
}
float3 exp2(float3 x) {
    float3 result;
    result[0] = exp2(x[0]);
    result[1] = exp2(x[1]);
    result[2] = exp2(x[2]);
    return result;
}
float4 exp2(float4 x) {
    float4 result;
    result[0] = exp2(x[0]);
    result[1] = exp2(x[1]);
    result[2] = exp2(x[2]);
    result[3] = exp2(x[3]);
    return result;
}
float2x2 exp2(float2x2 x) {
    float2x2 result;
    result[0][0] = exp2(x[0][0]);
    result[0][1] = exp2(x[0][1]);
    result[1][0] = exp2(x[1][0]);
    result[1][1] = exp2(x[1][1]);
    return result;
}
float2x3 exp2(float2x3 x) {
    float2x3 result;
    result[0][0] = exp2(x[0][0]);
    result[0][1] = exp2(x[0][1]);
    result[0][2] = exp2(x[0][2]);
    result[1][0] = exp2(x[1][0]);
    result[1][1] = exp2(x[1][1]);
    result[1][2] = exp2(x[1][2]);
    return result;
}
float2x4 exp2(float2x4 x) {
    float2x4 result;
    result[0][0] = exp2(x[0][0]);
    result[0][1] = exp2(x[0][1]);
    result[0][2] = exp2(x[0][2]);
    result[0][3] = exp2(x[0][3]);
    result[1][0] = exp2(x[1][0]);
    result[1][1] = exp2(x[1][1]);
    result[1][2] = exp2(x[1][2]);
    result[1][3] = exp2(x[1][3]);
    return result;
}
float3x2 exp2(float3x2 x) {
    float3x2 result;
    result[0][0] = exp2(x[0][0]);
    result[0][1] = exp2(x[0][1]);
    result[1][0] = exp2(x[1][0]);
    result[1][1] = exp2(x[1][1]);
    result[2][0] = exp2(x[2][0]);
    result[2][1] = exp2(x[2][1]);
    return result;
}
float3x3 exp2(float3x3 x) {
    float3x3 result;
    result[0][0] = exp2(x[0][0]);
    result[0][1] = exp2(x[0][1]);
    result[0][2] = exp2(x[0][2]);
    result[1][0] = exp2(x[1][0]);
    result[1][1] = exp2(x[1][1]);
    result[1][2] = exp2(x[1][2]);
    result[2][0] = exp2(x[2][0]);
    result[2][1] = exp2(x[2][1]);
    result[2][2] = exp2(x[2][2]);
    return result;
}
float3x4 exp2(float3x4 x) {
    float3x4 result;
    result[0][0] = exp2(x[0][0]);
    result[0][1] = exp2(x[0][1]);
    result[0][2] = exp2(x[0][2]);
    result[0][3] = exp2(x[0][3]);
    result[1][0] = exp2(x[1][0]);
    result[1][1] = exp2(x[1][1]);
    result[1][2] = exp2(x[1][2]);
    result[1][3] = exp2(x[1][3]);
    result[2][0] = exp2(x[2][0]);
    result[2][1] = exp2(x[2][1]);
    result[2][2] = exp2(x[2][2]);
    result[2][3] = exp2(x[2][3]);
    return result;
}
float4x2 exp2(float4x2 x) {
    float4x2 result;
    result[0][0] = exp2(x[0][0]);
    result[0][1] = exp2(x[0][1]);
    result[1][0] = exp2(x[1][0]);
    result[1][1] = exp2(x[1][1]);
    result[2][0] = exp2(x[2][0]);
    result[2][1] = exp2(x[2][1]);
    result[3][0] = exp2(x[3][0]);
    result[3][1] = exp2(x[3][1]);
    return result;
}
float4x3 exp2(float4x3 x) {
    float4x3 result;
    result[0][0] = exp2(x[0][0]);
    result[0][1] = exp2(x[0][1]);
    result[0][2] = exp2(x[0][2]);
    result[1][0] = exp2(x[1][0]);
    result[1][1] = exp2(x[1][1]);
    result[1][2] = exp2(x[1][2]);
    result[2][0] = exp2(x[2][0]);
    result[2][1] = exp2(x[2][1]);
    result[2][2] = exp2(x[2][2]);
    result[3][0] = exp2(x[3][0]);
    result[3][1] = exp2(x[3][1]);
    result[3][2] = exp2(x[3][2]);
    return result;
}
float4x4 exp2(float4x4 x) {
    float4x4 result;
    result[0][0] = exp2(x[0][0]);
    result[0][1] = exp2(x[0][1]);
    result[0][2] = exp2(x[0][2]);
    result[0][3] = exp2(x[0][3]);
    result[1][0] = exp2(x[1][0]);
    result[1][1] = exp2(x[1][1]);
    result[1][2] = exp2(x[1][2]);
    result[1][3] = exp2(x[1][3]);
    result[2][0] = exp2(x[2][0]);
    result[2][1] = exp2(x[2][1]);
    result[2][2] = exp2(x[2][2]);
    result[2][3] = exp2(x[2][3]);
    result[3][0] = exp2(x[3][0]);
    result[3][1] = exp2(x[3][1]);
    result[3][2] = exp2(x[3][2]);
    result[3][3] = exp2(x[3][3]);
    return result;
}

/* Functions named operator.zyx */
bool3 operator.zyx(bool3 v) {
    bool3 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    return result;
}
bool3 operator.zyx(bool4 v) {
    bool3 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    return result;
}
uint3 operator.zyx(uint3 v) {
    uint3 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    return result;
}
uint3 operator.zyx(uint4 v) {
    uint3 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    return result;
}
int3 operator.zyx(int3 v) {
    int3 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    return result;
}
int3 operator.zyx(int4 v) {
    int3 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    return result;
}
float3 operator.zyx(float3 v) {
    float3 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    return result;
}
float3 operator.zyx(float4 v) {
    float3 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    return result;
}

/* Functions named operator.wwww */
bool4 operator.wwww(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.w;
    result.w = v.w;
    return result;
}
uint4 operator.wwww(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.w;
    result.w = v.w;
    return result;
}
int4 operator.wwww(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.w;
    result.w = v.w;
    return result;
}
float4 operator.wwww(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.w;
    result.w = v.w;
    return result;
}

/* Functions named operator.wyzw */
bool4 operator.wyzw(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.z;
    result.w = v.w;
    return result;
}
uint4 operator.wyzw(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.z;
    result.w = v.w;
    return result;
}
int4 operator.wyzw(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.z;
    result.w = v.w;
    return result;
}
float4 operator.wyzw(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.z;
    result.w = v.w;
    return result;
}

/* Functions named operator.yzzw */
bool4 operator.yzzw(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    result.w = v.w;
    return result;
}
uint4 operator.yzzw(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    result.w = v.w;
    return result;
}
int4 operator.yzzw(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    result.w = v.w;
    return result;
}
float4 operator.yzzw(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    result.w = v.w;
    return result;
}

/* Functions named operator.wwy */
bool3 operator.wwy(bool4 v) {
    bool3 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.y;
    return result;
}
uint3 operator.wwy(uint4 v) {
    uint3 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.y;
    return result;
}
int3 operator.wwy(int4 v) {
    int3 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.y;
    return result;
}
float3 operator.wwy(float4 v) {
    float3 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.y;
    return result;
}

/* Functions named operator.wz */
bool2 operator.wz(bool4 v) {
    bool2 result;
    result.x = v.w;
    result.y = v.z;
    return result;
}
uint2 operator.wz(uint4 v) {
    uint2 result;
    result.x = v.w;
    result.y = v.z;
    return result;
}
int2 operator.wz(int4 v) {
    int2 result;
    result.x = v.w;
    result.y = v.z;
    return result;
}
float2 operator.wz(float4 v) {
    float2 result;
    result.x = v.w;
    result.y = v.z;
    return result;
}

/* Functions named operator.zx= */
bool3 operator.zx=(bool3 v, bool2 c) {
    bool3 result = v;
    result.z = c.x;
    result.x = c.y;
    return result;
}
bool4 operator.zx=(bool4 v, bool2 c) {
    bool4 result = v;
    result.z = c.x;
    result.x = c.y;
    return result;
}
uint3 operator.zx=(uint3 v, uint2 c) {
    uint3 result = v;
    result.z = c.x;
    result.x = c.y;
    return result;
}
uint4 operator.zx=(uint4 v, uint2 c) {
    uint4 result = v;
    result.z = c.x;
    result.x = c.y;
    return result;
}
int3 operator.zx=(int3 v, int2 c) {
    int3 result = v;
    result.z = c.x;
    result.x = c.y;
    return result;
}
int4 operator.zx=(int4 v, int2 c) {
    int4 result = v;
    result.z = c.x;
    result.x = c.y;
    return result;
}
float3 operator.zx=(float3 v, float2 c) {
    float3 result = v;
    result.z = c.x;
    result.x = c.y;
    return result;
}
float4 operator.zx=(float4 v, float2 c) {
    float4 result = v;
    result.z = c.x;
    result.x = c.y;
    return result;
}

/* Functions named operator.yxyy */
bool4 operator.yxyy(bool2 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
bool4 operator.yxyy(bool3 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
bool4 operator.yxyy(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
uint4 operator.yxyy(uint2 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
uint4 operator.yxyy(uint3 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
uint4 operator.yxyy(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
int4 operator.yxyy(int2 v) {
    int4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
int4 operator.yxyy(int3 v) {
    int4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
int4 operator.yxyy(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
float4 operator.yxyy(float2 v) {
    float4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
float4 operator.yxyy(float3 v) {
    float4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
float4 operator.yxyy(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}

/* Functions named operator.wyyx */
bool4 operator.wyyx(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
uint4 operator.wyyx(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
int4 operator.wyyx(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
float4 operator.wyyx(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}

/* Functions named operator.y */
native bool operator.y(bool2);
native bool operator.y(bool3);
native bool operator.y(bool4);
native uint operator.y(uint2);
native uint operator.y(uint3);
native uint operator.y(uint4);
native int operator.y(int2);
native int operator.y(int3);
native int operator.y(int4);
native float operator.y(float2);
native float operator.y(float3);
native float operator.y(float4);

/* Functions named operator.wwzx */
bool4 operator.wwzx(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.z;
    result.w = v.x;
    return result;
}
uint4 operator.wwzx(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.z;
    result.w = v.x;
    return result;
}
int4 operator.wwzx(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.z;
    result.w = v.x;
    return result;
}
float4 operator.wwzx(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.z;
    result.w = v.x;
    return result;
}

/* Functions named operator.yxzz */
bool4 operator.yxzz(bool3 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    result.w = v.z;
    return result;
}
bool4 operator.yxzz(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    result.w = v.z;
    return result;
}
uint4 operator.yxzz(uint3 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    result.w = v.z;
    return result;
}
uint4 operator.yxzz(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    result.w = v.z;
    return result;
}
int4 operator.yxzz(int3 v) {
    int4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    result.w = v.z;
    return result;
}
int4 operator.yxzz(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    result.w = v.z;
    return result;
}
float4 operator.yxzz(float3 v) {
    float4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    result.w = v.z;
    return result;
}
float4 operator.yxzz(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    result.w = v.z;
    return result;
}

/* Functions named operator.wxzw */
bool4 operator.wxzw(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.z;
    result.w = v.w;
    return result;
}
uint4 operator.wxzw(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.z;
    result.w = v.w;
    return result;
}
int4 operator.wxzw(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.z;
    result.w = v.w;
    return result;
}
float4 operator.wxzw(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.z;
    result.w = v.w;
    return result;
}

/* Functions named operator.zxyx */
bool4 operator.zxyx(bool3 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
bool4 operator.zxyx(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
uint4 operator.zxyx(uint3 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
uint4 operator.zxyx(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
int4 operator.zxyx(int3 v) {
    int4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
int4 operator.zxyx(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
float4 operator.zxyx(float3 v) {
    float4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
float4 operator.zxyx(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}

/* Functions named operator.wxyz= */
bool4 operator.wxyz=(bool4 v, bool4 c) {
    bool4 result = v;
    result.w = c.x;
    result.x = c.y;
    result.y = c.z;
    result.z = c.w;
    return result;
}
uint4 operator.wxyz=(uint4 v, uint4 c) {
    uint4 result = v;
    result.w = c.x;
    result.x = c.y;
    result.y = c.z;
    result.z = c.w;
    return result;
}
int4 operator.wxyz=(int4 v, int4 c) {
    int4 result = v;
    result.w = c.x;
    result.x = c.y;
    result.y = c.z;
    result.z = c.w;
    return result;
}
float4 operator.wxyz=(float4 v, float4 c) {
    float4 result = v;
    result.w = c.x;
    result.x = c.y;
    result.y = c.z;
    result.z = c.w;
    return result;
}

/* Functions named operator.yyxy */
bool4 operator.yyxy(bool2 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
bool4 operator.yyxy(bool3 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
bool4 operator.yyxy(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
uint4 operator.yyxy(uint2 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
uint4 operator.yyxy(uint3 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
uint4 operator.yyxy(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
int4 operator.yyxy(int2 v) {
    int4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
int4 operator.yyxy(int3 v) {
    int4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
int4 operator.yyxy(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
float4 operator.yyxy(float2 v) {
    float4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
float4 operator.yyxy(float3 v) {
    float4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
float4 operator.yyxy(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}

/* Functions named operator.xz */
bool2 operator.xz(bool3 v) {
    bool2 result;
    result.x = v.x;
    result.y = v.z;
    return result;
}
bool2 operator.xz(bool4 v) {
    bool2 result;
    result.x = v.x;
    result.y = v.z;
    return result;
}
uint2 operator.xz(uint3 v) {
    uint2 result;
    result.x = v.x;
    result.y = v.z;
    return result;
}
uint2 operator.xz(uint4 v) {
    uint2 result;
    result.x = v.x;
    result.y = v.z;
    return result;
}
int2 operator.xz(int3 v) {
    int2 result;
    result.x = v.x;
    result.y = v.z;
    return result;
}
int2 operator.xz(int4 v) {
    int2 result;
    result.x = v.x;
    result.y = v.z;
    return result;
}
float2 operator.xz(float3 v) {
    float2 result;
    result.x = v.x;
    result.y = v.z;
    return result;
}
float2 operator.xz(float4 v) {
    float2 result;
    result.x = v.x;
    result.y = v.z;
    return result;
}

/* Functions named operator.ywyw */
bool4 operator.ywyw(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.y;
    result.w = v.w;
    return result;
}
uint4 operator.ywyw(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.y;
    result.w = v.w;
    return result;
}
int4 operator.ywyw(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.y;
    result.w = v.w;
    return result;
}
float4 operator.ywyw(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.y;
    result.w = v.w;
    return result;
}

/* Functions named operator.wzzz */
bool4 operator.wzzz(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.z;
    result.w = v.z;
    return result;
}
uint4 operator.wzzz(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.z;
    result.w = v.z;
    return result;
}
int4 operator.wzzz(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.z;
    result.w = v.z;
    return result;
}
float4 operator.wzzz(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.z;
    result.w = v.z;
    return result;
}

/* Functions named isunordered */

bool isunordered(float x, float y) {
    return isnan(x) || isnan(y);
}
bool2 isunordered(float2 x, float2 y) {
    bool2 result;
    result[0] = isunordered(x[0], y[0]);
    result[1] = isunordered(x[1], y[1]);
    return result;
}
bool3 isunordered(float3 x, float3 y) {
    bool3 result;
    result[0] = isunordered(x[0], y[0]);
    result[1] = isunordered(x[1], y[1]);
    result[2] = isunordered(x[2], y[2]);
    return result;
}
bool4 isunordered(float4 x, float4 y) {
    bool4 result;
    result[0] = isunordered(x[0], y[0]);
    result[1] = isunordered(x[1], y[1]);
    result[2] = isunordered(x[2], y[2]);
    result[3] = isunordered(x[3], y[3]);
    return result;
}


/* Functions named operator.zwwy */
bool4 operator.zwwy(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.w;
    result.w = v.y;
    return result;
}
uint4 operator.zwwy(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.w;
    result.w = v.y;
    return result;
}
int4 operator.zwwy(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.w;
    result.w = v.y;
    return result;
}
float4 operator.zwwy(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.w;
    result.w = v.y;
    return result;
}

/* Functions named operator.zzxz */
bool4 operator.zzxz(bool3 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    result.w = v.z;
    return result;
}
bool4 operator.zzxz(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    result.w = v.z;
    return result;
}
uint4 operator.zzxz(uint3 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    result.w = v.z;
    return result;
}
uint4 operator.zzxz(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    result.w = v.z;
    return result;
}
int4 operator.zzxz(int3 v) {
    int4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    result.w = v.z;
    return result;
}
int4 operator.zzxz(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    result.w = v.z;
    return result;
}
float4 operator.zzxz(float3 v) {
    float4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    result.w = v.z;
    return result;
}
float4 operator.zzxz(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    result.w = v.z;
    return result;
}

/* Functions named atan */
native float atan(float);
float2 atan(float2 x) {
    float2 result;
    result[0] = atan(x[0]);
    result[1] = atan(x[1]);
    return result;
}
float3 atan(float3 x) {
    float3 result;
    result[0] = atan(x[0]);
    result[1] = atan(x[1]);
    result[2] = atan(x[2]);
    return result;
}
float4 atan(float4 x) {
    float4 result;
    result[0] = atan(x[0]);
    result[1] = atan(x[1]);
    result[2] = atan(x[2]);
    result[3] = atan(x[3]);
    return result;
}
float2x2 atan(float2x2 x) {
    float2x2 result;
    result[0][0] = atan(x[0][0]);
    result[0][1] = atan(x[0][1]);
    result[1][0] = atan(x[1][0]);
    result[1][1] = atan(x[1][1]);
    return result;
}
float2x3 atan(float2x3 x) {
    float2x3 result;
    result[0][0] = atan(x[0][0]);
    result[0][1] = atan(x[0][1]);
    result[0][2] = atan(x[0][2]);
    result[1][0] = atan(x[1][0]);
    result[1][1] = atan(x[1][1]);
    result[1][2] = atan(x[1][2]);
    return result;
}
float2x4 atan(float2x4 x) {
    float2x4 result;
    result[0][0] = atan(x[0][0]);
    result[0][1] = atan(x[0][1]);
    result[0][2] = atan(x[0][2]);
    result[0][3] = atan(x[0][3]);
    result[1][0] = atan(x[1][0]);
    result[1][1] = atan(x[1][1]);
    result[1][2] = atan(x[1][2]);
    result[1][3] = atan(x[1][3]);
    return result;
}
float3x2 atan(float3x2 x) {
    float3x2 result;
    result[0][0] = atan(x[0][0]);
    result[0][1] = atan(x[0][1]);
    result[1][0] = atan(x[1][0]);
    result[1][1] = atan(x[1][1]);
    result[2][0] = atan(x[2][0]);
    result[2][1] = atan(x[2][1]);
    return result;
}
float3x3 atan(float3x3 x) {
    float3x3 result;
    result[0][0] = atan(x[0][0]);
    result[0][1] = atan(x[0][1]);
    result[0][2] = atan(x[0][2]);
    result[1][0] = atan(x[1][0]);
    result[1][1] = atan(x[1][1]);
    result[1][2] = atan(x[1][2]);
    result[2][0] = atan(x[2][0]);
    result[2][1] = atan(x[2][1]);
    result[2][2] = atan(x[2][2]);
    return result;
}
float3x4 atan(float3x4 x) {
    float3x4 result;
    result[0][0] = atan(x[0][0]);
    result[0][1] = atan(x[0][1]);
    result[0][2] = atan(x[0][2]);
    result[0][3] = atan(x[0][3]);
    result[1][0] = atan(x[1][0]);
    result[1][1] = atan(x[1][1]);
    result[1][2] = atan(x[1][2]);
    result[1][3] = atan(x[1][3]);
    result[2][0] = atan(x[2][0]);
    result[2][1] = atan(x[2][1]);
    result[2][2] = atan(x[2][2]);
    result[2][3] = atan(x[2][3]);
    return result;
}
float4x2 atan(float4x2 x) {
    float4x2 result;
    result[0][0] = atan(x[0][0]);
    result[0][1] = atan(x[0][1]);
    result[1][0] = atan(x[1][0]);
    result[1][1] = atan(x[1][1]);
    result[2][0] = atan(x[2][0]);
    result[2][1] = atan(x[2][1]);
    result[3][0] = atan(x[3][0]);
    result[3][1] = atan(x[3][1]);
    return result;
}
float4x3 atan(float4x3 x) {
    float4x3 result;
    result[0][0] = atan(x[0][0]);
    result[0][1] = atan(x[0][1]);
    result[0][2] = atan(x[0][2]);
    result[1][0] = atan(x[1][0]);
    result[1][1] = atan(x[1][1]);
    result[1][2] = atan(x[1][2]);
    result[2][0] = atan(x[2][0]);
    result[2][1] = atan(x[2][1]);
    result[2][2] = atan(x[2][2]);
    result[3][0] = atan(x[3][0]);
    result[3][1] = atan(x[3][1]);
    result[3][2] = atan(x[3][2]);
    return result;
}
float4x4 atan(float4x4 x) {
    float4x4 result;
    result[0][0] = atan(x[0][0]);
    result[0][1] = atan(x[0][1]);
    result[0][2] = atan(x[0][2]);
    result[0][3] = atan(x[0][3]);
    result[1][0] = atan(x[1][0]);
    result[1][1] = atan(x[1][1]);
    result[1][2] = atan(x[1][2]);
    result[1][3] = atan(x[1][3]);
    result[2][0] = atan(x[2][0]);
    result[2][1] = atan(x[2][1]);
    result[2][2] = atan(x[2][2]);
    result[2][3] = atan(x[2][3]);
    result[3][0] = atan(x[3][0]);
    result[3][1] = atan(x[3][1]);
    result[3][2] = atan(x[3][2]);
    result[3][3] = atan(x[3][3]);
    return result;
}

/* Functions named operator.xxyz */
bool4 operator.xxyz(bool3 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.z;
    return result;
}
bool4 operator.xxyz(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.z;
    return result;
}
uint4 operator.xxyz(uint3 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.z;
    return result;
}
uint4 operator.xxyz(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.z;
    return result;
}
int4 operator.xxyz(int3 v) {
    int4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.z;
    return result;
}
int4 operator.xxyz(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.z;
    return result;
}
float4 operator.xxyz(float3 v) {
    float4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.z;
    return result;
}
float4 operator.xxyz(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.z;
    return result;
}

/* Functions named operator.xywy */
bool4 operator.xywy(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.w;
    result.w = v.y;
    return result;
}
uint4 operator.xywy(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.w;
    result.w = v.y;
    return result;
}
int4 operator.xywy(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.w;
    result.w = v.y;
    return result;
}
float4 operator.xywy(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.w;
    result.w = v.y;
    return result;
}

/* Functions named log */
native float log(float);
float2 log(float2 x) {
    float2 result;
    result[0] = log(x[0]);
    result[1] = log(x[1]);
    return result;
}
float3 log(float3 x) {
    float3 result;
    result[0] = log(x[0]);
    result[1] = log(x[1]);
    result[2] = log(x[2]);
    return result;
}
float4 log(float4 x) {
    float4 result;
    result[0] = log(x[0]);
    result[1] = log(x[1]);
    result[2] = log(x[2]);
    result[3] = log(x[3]);
    return result;
}
float2x2 log(float2x2 x) {
    float2x2 result;
    result[0][0] = log(x[0][0]);
    result[0][1] = log(x[0][1]);
    result[1][0] = log(x[1][0]);
    result[1][1] = log(x[1][1]);
    return result;
}
float2x3 log(float2x3 x) {
    float2x3 result;
    result[0][0] = log(x[0][0]);
    result[0][1] = log(x[0][1]);
    result[0][2] = log(x[0][2]);
    result[1][0] = log(x[1][0]);
    result[1][1] = log(x[1][1]);
    result[1][2] = log(x[1][2]);
    return result;
}
float2x4 log(float2x4 x) {
    float2x4 result;
    result[0][0] = log(x[0][0]);
    result[0][1] = log(x[0][1]);
    result[0][2] = log(x[0][2]);
    result[0][3] = log(x[0][3]);
    result[1][0] = log(x[1][0]);
    result[1][1] = log(x[1][1]);
    result[1][2] = log(x[1][2]);
    result[1][3] = log(x[1][3]);
    return result;
}
float3x2 log(float3x2 x) {
    float3x2 result;
    result[0][0] = log(x[0][0]);
    result[0][1] = log(x[0][1]);
    result[1][0] = log(x[1][0]);
    result[1][1] = log(x[1][1]);
    result[2][0] = log(x[2][0]);
    result[2][1] = log(x[2][1]);
    return result;
}
float3x3 log(float3x3 x) {
    float3x3 result;
    result[0][0] = log(x[0][0]);
    result[0][1] = log(x[0][1]);
    result[0][2] = log(x[0][2]);
    result[1][0] = log(x[1][0]);
    result[1][1] = log(x[1][1]);
    result[1][2] = log(x[1][2]);
    result[2][0] = log(x[2][0]);
    result[2][1] = log(x[2][1]);
    result[2][2] = log(x[2][2]);
    return result;
}
float3x4 log(float3x4 x) {
    float3x4 result;
    result[0][0] = log(x[0][0]);
    result[0][1] = log(x[0][1]);
    result[0][2] = log(x[0][2]);
    result[0][3] = log(x[0][3]);
    result[1][0] = log(x[1][0]);
    result[1][1] = log(x[1][1]);
    result[1][2] = log(x[1][2]);
    result[1][3] = log(x[1][3]);
    result[2][0] = log(x[2][0]);
    result[2][1] = log(x[2][1]);
    result[2][2] = log(x[2][2]);
    result[2][3] = log(x[2][3]);
    return result;
}
float4x2 log(float4x2 x) {
    float4x2 result;
    result[0][0] = log(x[0][0]);
    result[0][1] = log(x[0][1]);
    result[1][0] = log(x[1][0]);
    result[1][1] = log(x[1][1]);
    result[2][0] = log(x[2][0]);
    result[2][1] = log(x[2][1]);
    result[3][0] = log(x[3][0]);
    result[3][1] = log(x[3][1]);
    return result;
}
float4x3 log(float4x3 x) {
    float4x3 result;
    result[0][0] = log(x[0][0]);
    result[0][1] = log(x[0][1]);
    result[0][2] = log(x[0][2]);
    result[1][0] = log(x[1][0]);
    result[1][1] = log(x[1][1]);
    result[1][2] = log(x[1][2]);
    result[2][0] = log(x[2][0]);
    result[2][1] = log(x[2][1]);
    result[2][2] = log(x[2][2]);
    result[3][0] = log(x[3][0]);
    result[3][1] = log(x[3][1]);
    result[3][2] = log(x[3][2]);
    return result;
}
float4x4 log(float4x4 x) {
    float4x4 result;
    result[0][0] = log(x[0][0]);
    result[0][1] = log(x[0][1]);
    result[0][2] = log(x[0][2]);
    result[0][3] = log(x[0][3]);
    result[1][0] = log(x[1][0]);
    result[1][1] = log(x[1][1]);
    result[1][2] = log(x[1][2]);
    result[1][3] = log(x[1][3]);
    result[2][0] = log(x[2][0]);
    result[2][1] = log(x[2][1]);
    result[2][2] = log(x[2][2]);
    result[2][3] = log(x[2][3]);
    result[3][0] = log(x[3][0]);
    result[3][1] = log(x[3][1]);
    result[3][2] = log(x[3][2]);
    result[3][3] = log(x[3][3]);
    return result;
}

/* Functions named operator.wxwx */
bool4 operator.wxwx(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.w;
    result.w = v.x;
    return result;
}
uint4 operator.wxwx(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.w;
    result.w = v.x;
    return result;
}
int4 operator.wxwx(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.w;
    result.w = v.x;
    return result;
}
float4 operator.wxwx(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.w;
    result.w = v.x;
    return result;
}

/* Functions named operator.yxzw */
bool4 operator.yxzw(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    result.w = v.w;
    return result;
}
uint4 operator.yxzw(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    result.w = v.w;
    return result;
}
int4 operator.yxzw(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    result.w = v.w;
    return result;
}
float4 operator.yxzw(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    result.w = v.w;
    return result;
}

/* Functions named Load */
native uint Load(Texture1D<uint>, int location);
native uint Load(Texture1DArray<uint>, int2 location);
native uint Load(Texture2D<uint>, int2 location);
native uint Load(Texture2DArray<uint>, int3 location);
native uint Load(Texture3D<uint>, int3 location);
native uint2 Load(Texture1D<uint2>, int location);
native uint2 Load(Texture1DArray<uint2>, int2 location);
native uint2 Load(Texture2D<uint2>, int2 location);
native uint2 Load(Texture2DArray<uint2>, int3 location);
native uint2 Load(Texture3D<uint2>, int3 location);
native uint3 Load(Texture1D<uint3>, int location);
native uint3 Load(Texture1DArray<uint3>, int2 location);
native uint3 Load(Texture2D<uint3>, int2 location);
native uint3 Load(Texture2DArray<uint3>, int3 location);
native uint3 Load(Texture3D<uint3>, int3 location);
native uint4 Load(Texture1D<uint4>, int location);
native uint4 Load(Texture1DArray<uint4>, int2 location);
native uint4 Load(Texture2D<uint4>, int2 location);
native uint4 Load(Texture2DArray<uint4>, int3 location);
native uint4 Load(Texture3D<uint4>, int3 location);
native int Load(Texture1D<int>, int location);
native int Load(Texture1DArray<int>, int2 location);
native int Load(Texture2D<int>, int2 location);
native int Load(Texture2DArray<int>, int3 location);
native int Load(Texture3D<int>, int3 location);
native int2 Load(Texture1D<int2>, int location);
native int2 Load(Texture1DArray<int2>, int2 location);
native int2 Load(Texture2D<int2>, int2 location);
native int2 Load(Texture2DArray<int2>, int3 location);
native int2 Load(Texture3D<int2>, int3 location);
native int3 Load(Texture1D<int3>, int location);
native int3 Load(Texture1DArray<int3>, int2 location);
native int3 Load(Texture2D<int3>, int2 location);
native int3 Load(Texture2DArray<int3>, int3 location);
native int3 Load(Texture3D<int3>, int3 location);
native int4 Load(Texture1D<int4>, int location);
native int4 Load(Texture1DArray<int4>, int2 location);
native int4 Load(Texture2D<int4>, int2 location);
native int4 Load(Texture2DArray<int4>, int3 location);
native int4 Load(Texture3D<int4>, int3 location);
native float Load(Texture1D<float>, int location);
native float Load(Texture1DArray<float>, int2 location);
native float Load(Texture2D<float>, int2 location);
native float Load(Texture2DArray<float>, int3 location);
native float Load(Texture3D<float>, int3 location);
native float2 Load(Texture1D<float2>, int location);
native float2 Load(Texture1DArray<float2>, int2 location);
native float2 Load(Texture2D<float2>, int2 location);
native float2 Load(Texture2DArray<float2>, int3 location);
native float2 Load(Texture3D<float2>, int3 location);
native float3 Load(Texture1D<float3>, int location);
native float3 Load(Texture1DArray<float3>, int2 location);
native float3 Load(Texture2D<float3>, int2 location);
native float3 Load(Texture2DArray<float3>, int3 location);
native float3 Load(Texture3D<float3>, int3 location);
native float4 Load(Texture1D<float4>, int location);
native float4 Load(Texture1DArray<float4>, int2 location);
native float4 Load(Texture2D<float4>, int2 location);
native float4 Load(Texture2DArray<float4>, int3 location);
native float4 Load(Texture3D<float4>, int3 location);
native float Load(TextureDepth2D<float>, int2 location);
native float Load(TextureDepth2DArray<float>, int3 location);

/* Functions named operator.wwyx */
bool4 operator.wwyx(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.y;
    result.w = v.x;
    return result;
}
uint4 operator.wwyx(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.y;
    result.w = v.x;
    return result;
}
int4 operator.wwyx(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.y;
    result.w = v.x;
    return result;
}
float4 operator.wwyx(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.y;
    result.w = v.x;
    return result;
}

/* Functions named operator.yzw= */
bool4 operator.yzw=(bool4 v, bool3 c) {
    bool4 result = v;
    result.y = c.x;
    result.z = c.y;
    result.w = c.z;
    return result;
}
uint4 operator.yzw=(uint4 v, uint3 c) {
    uint4 result = v;
    result.y = c.x;
    result.z = c.y;
    result.w = c.z;
    return result;
}
int4 operator.yzw=(int4 v, int3 c) {
    int4 result = v;
    result.y = c.x;
    result.z = c.y;
    result.w = c.z;
    return result;
}
float4 operator.yzw=(float4 v, float3 c) {
    float4 result = v;
    result.y = c.x;
    result.z = c.y;
    result.w = c.z;
    return result;
}

/* Functions named operator.yzw */
bool3 operator.yzw(bool4 v) {
    bool3 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.w;
    return result;
}
uint3 operator.yzw(uint4 v) {
    uint3 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.w;
    return result;
}
int3 operator.yzw(int4 v) {
    int3 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.w;
    return result;
}
float3 operator.yzw(float4 v) {
    float3 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.w;
    return result;
}

/* Functions named operator.yzx= */
bool3 operator.yzx=(bool3 v, bool3 c) {
    bool3 result = v;
    result.y = c.x;
    result.z = c.y;
    result.x = c.z;
    return result;
}
bool4 operator.yzx=(bool4 v, bool3 c) {
    bool4 result = v;
    result.y = c.x;
    result.z = c.y;
    result.x = c.z;
    return result;
}
uint3 operator.yzx=(uint3 v, uint3 c) {
    uint3 result = v;
    result.y = c.x;
    result.z = c.y;
    result.x = c.z;
    return result;
}
uint4 operator.yzx=(uint4 v, uint3 c) {
    uint4 result = v;
    result.y = c.x;
    result.z = c.y;
    result.x = c.z;
    return result;
}
int3 operator.yzx=(int3 v, int3 c) {
    int3 result = v;
    result.y = c.x;
    result.z = c.y;
    result.x = c.z;
    return result;
}
int4 operator.yzx=(int4 v, int3 c) {
    int4 result = v;
    result.y = c.x;
    result.z = c.y;
    result.x = c.z;
    return result;
}
float3 operator.yzx=(float3 v, float3 c) {
    float3 result = v;
    result.y = c.x;
    result.z = c.y;
    result.x = c.z;
    return result;
}
float4 operator.yzx=(float4 v, float3 c) {
    float4 result = v;
    result.y = c.x;
    result.z = c.y;
    result.x = c.z;
    return result;
}

/* Functions named operator.xxwz */
bool4 operator.xxwz(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.w;
    result.w = v.z;
    return result;
}
uint4 operator.xxwz(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.w;
    result.w = v.z;
    return result;
}
int4 operator.xxwz(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.w;
    result.w = v.z;
    return result;
}
float4 operator.xxwz(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.w;
    result.w = v.z;
    return result;
}

/* Functions named operator.yzyz */
bool4 operator.yzyz(bool3 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    result.w = v.z;
    return result;
}
bool4 operator.yzyz(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    result.w = v.z;
    return result;
}
uint4 operator.yzyz(uint3 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    result.w = v.z;
    return result;
}
uint4 operator.yzyz(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    result.w = v.z;
    return result;
}
int4 operator.yzyz(int3 v) {
    int4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    result.w = v.z;
    return result;
}
int4 operator.yzyz(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    result.w = v.z;
    return result;
}
float4 operator.yzyz(float3 v) {
    float4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    result.w = v.z;
    return result;
}
float4 operator.yzyz(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    result.w = v.z;
    return result;
}

/* Functions named operator.yzxw */
bool4 operator.yzxw(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    result.w = v.w;
    return result;
}
uint4 operator.yzxw(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    result.w = v.w;
    return result;
}
int4 operator.yzxw(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    result.w = v.w;
    return result;
}
float4 operator.yzxw(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    result.w = v.w;
    return result;
}

/* Functions named operator.zywx */
bool4 operator.zywx(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.w;
    result.w = v.x;
    return result;
}
uint4 operator.zywx(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.w;
    result.w = v.x;
    return result;
}
int4 operator.zywx(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.w;
    result.w = v.x;
    return result;
}
float4 operator.zywx(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.w;
    result.w = v.x;
    return result;
}

/* Functions named sin */
native float sin(float);
float2 sin(float2 x) {
    float2 result;
    result[0] = sin(x[0]);
    result[1] = sin(x[1]);
    return result;
}
float3 sin(float3 x) {
    float3 result;
    result[0] = sin(x[0]);
    result[1] = sin(x[1]);
    result[2] = sin(x[2]);
    return result;
}
float4 sin(float4 x) {
    float4 result;
    result[0] = sin(x[0]);
    result[1] = sin(x[1]);
    result[2] = sin(x[2]);
    result[3] = sin(x[3]);
    return result;
}
float2x2 sin(float2x2 x) {
    float2x2 result;
    result[0][0] = sin(x[0][0]);
    result[0][1] = sin(x[0][1]);
    result[1][0] = sin(x[1][0]);
    result[1][1] = sin(x[1][1]);
    return result;
}
float2x3 sin(float2x3 x) {
    float2x3 result;
    result[0][0] = sin(x[0][0]);
    result[0][1] = sin(x[0][1]);
    result[0][2] = sin(x[0][2]);
    result[1][0] = sin(x[1][0]);
    result[1][1] = sin(x[1][1]);
    result[1][2] = sin(x[1][2]);
    return result;
}
float2x4 sin(float2x4 x) {
    float2x4 result;
    result[0][0] = sin(x[0][0]);
    result[0][1] = sin(x[0][1]);
    result[0][2] = sin(x[0][2]);
    result[0][3] = sin(x[0][3]);
    result[1][0] = sin(x[1][0]);
    result[1][1] = sin(x[1][1]);
    result[1][2] = sin(x[1][2]);
    result[1][3] = sin(x[1][3]);
    return result;
}
float3x2 sin(float3x2 x) {
    float3x2 result;
    result[0][0] = sin(x[0][0]);
    result[0][1] = sin(x[0][1]);
    result[1][0] = sin(x[1][0]);
    result[1][1] = sin(x[1][1]);
    result[2][0] = sin(x[2][0]);
    result[2][1] = sin(x[2][1]);
    return result;
}
float3x3 sin(float3x3 x) {
    float3x3 result;
    result[0][0] = sin(x[0][0]);
    result[0][1] = sin(x[0][1]);
    result[0][2] = sin(x[0][2]);
    result[1][0] = sin(x[1][0]);
    result[1][1] = sin(x[1][1]);
    result[1][2] = sin(x[1][2]);
    result[2][0] = sin(x[2][0]);
    result[2][1] = sin(x[2][1]);
    result[2][2] = sin(x[2][2]);
    return result;
}
float3x4 sin(float3x4 x) {
    float3x4 result;
    result[0][0] = sin(x[0][0]);
    result[0][1] = sin(x[0][1]);
    result[0][2] = sin(x[0][2]);
    result[0][3] = sin(x[0][3]);
    result[1][0] = sin(x[1][0]);
    result[1][1] = sin(x[1][1]);
    result[1][2] = sin(x[1][2]);
    result[1][3] = sin(x[1][3]);
    result[2][0] = sin(x[2][0]);
    result[2][1] = sin(x[2][1]);
    result[2][2] = sin(x[2][2]);
    result[2][3] = sin(x[2][3]);
    return result;
}
float4x2 sin(float4x2 x) {
    float4x2 result;
    result[0][0] = sin(x[0][0]);
    result[0][1] = sin(x[0][1]);
    result[1][0] = sin(x[1][0]);
    result[1][1] = sin(x[1][1]);
    result[2][0] = sin(x[2][0]);
    result[2][1] = sin(x[2][1]);
    result[3][0] = sin(x[3][0]);
    result[3][1] = sin(x[3][1]);
    return result;
}
float4x3 sin(float4x3 x) {
    float4x3 result;
    result[0][0] = sin(x[0][0]);
    result[0][1] = sin(x[0][1]);
    result[0][2] = sin(x[0][2]);
    result[1][0] = sin(x[1][0]);
    result[1][1] = sin(x[1][1]);
    result[1][2] = sin(x[1][2]);
    result[2][0] = sin(x[2][0]);
    result[2][1] = sin(x[2][1]);
    result[2][2] = sin(x[2][2]);
    result[3][0] = sin(x[3][0]);
    result[3][1] = sin(x[3][1]);
    result[3][2] = sin(x[3][2]);
    return result;
}
float4x4 sin(float4x4 x) {
    float4x4 result;
    result[0][0] = sin(x[0][0]);
    result[0][1] = sin(x[0][1]);
    result[0][2] = sin(x[0][2]);
    result[0][3] = sin(x[0][3]);
    result[1][0] = sin(x[1][0]);
    result[1][1] = sin(x[1][1]);
    result[1][2] = sin(x[1][2]);
    result[1][3] = sin(x[1][3]);
    result[2][0] = sin(x[2][0]);
    result[2][1] = sin(x[2][1]);
    result[2][2] = sin(x[2][2]);
    result[2][3] = sin(x[2][3]);
    result[3][0] = sin(x[3][0]);
    result[3][1] = sin(x[3][1]);
    result[3][2] = sin(x[3][2]);
    result[3][3] = sin(x[3][3]);
    return result;
}

/* Functions named operator.ywzy */
bool4 operator.ywzy(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.z;
    result.w = v.y;
    return result;
}
uint4 operator.ywzy(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.z;
    result.w = v.y;
    return result;
}
int4 operator.ywzy(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.z;
    result.w = v.y;
    return result;
}
float4 operator.ywzy(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.z;
    result.w = v.y;
    return result;
}

/* Functions named operator.zyy */
bool3 operator.zyy(bool3 v) {
    bool3 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    return result;
}
bool3 operator.zyy(bool4 v) {
    bool3 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    return result;
}
uint3 operator.zyy(uint3 v) {
    uint3 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    return result;
}
uint3 operator.zyy(uint4 v) {
    uint3 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    return result;
}
int3 operator.zyy(int3 v) {
    int3 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    return result;
}
int3 operator.zyy(int4 v) {
    int3 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    return result;
}
float3 operator.zyy(float3 v) {
    float3 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    return result;
}
float3 operator.zyy(float4 v) {
    float3 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    return result;
}

/* Functions named operator.wxwz */
bool4 operator.wxwz(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.w;
    result.w = v.z;
    return result;
}
uint4 operator.wxwz(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.w;
    result.w = v.z;
    return result;
}
int4 operator.wxwz(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.w;
    result.w = v.z;
    return result;
}
float4 operator.wxwz(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.w;
    result.w = v.z;
    return result;
}

/* Functions named operator.zwxw */
bool4 operator.zwxw(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.x;
    result.w = v.w;
    return result;
}
uint4 operator.zwxw(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.x;
    result.w = v.w;
    return result;
}
int4 operator.zwxw(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.x;
    result.w = v.w;
    return result;
}
float4 operator.zwxw(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.x;
    result.w = v.w;
    return result;
}

/* Functions named operator.zwyy */
bool4 operator.zwyy(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.y;
    result.w = v.y;
    return result;
}
uint4 operator.zwyy(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.y;
    result.w = v.y;
    return result;
}
int4 operator.zwyy(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.y;
    result.w = v.y;
    return result;
}
float4 operator.zwyy(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.y;
    result.w = v.y;
    return result;
}

/* Functions named operator.wxy= */
bool4 operator.wxy=(bool4 v, bool3 c) {
    bool4 result = v;
    result.w = c.x;
    result.x = c.y;
    result.y = c.z;
    return result;
}
uint4 operator.wxy=(uint4 v, uint3 c) {
    uint4 result = v;
    result.w = c.x;
    result.x = c.y;
    result.y = c.z;
    return result;
}
int4 operator.wxy=(int4 v, int3 c) {
    int4 result = v;
    result.w = c.x;
    result.x = c.y;
    result.y = c.z;
    return result;
}
float4 operator.wxy=(float4 v, float3 c) {
    float4 result = v;
    result.w = c.x;
    result.x = c.y;
    result.y = c.z;
    return result;
}

/* Functions named operator.xyyy */
bool4 operator.xyyy(bool2 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
bool4 operator.xyyy(bool3 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
bool4 operator.xyyy(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
uint4 operator.xyyy(uint2 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
uint4 operator.xyyy(uint3 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
uint4 operator.xyyy(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
int4 operator.xyyy(int2 v) {
    int4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
int4 operator.xyyy(int3 v) {
    int4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
int4 operator.xyyy(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
float4 operator.xyyy(float2 v) {
    float4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
float4 operator.xyyy(float3 v) {
    float4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
float4 operator.xyyy(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}

/* Functions named operator.yxzx */
bool4 operator.yxzx(bool3 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    result.w = v.x;
    return result;
}
bool4 operator.yxzx(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    result.w = v.x;
    return result;
}
uint4 operator.yxzx(uint3 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    result.w = v.x;
    return result;
}
uint4 operator.yxzx(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    result.w = v.x;
    return result;
}
int4 operator.yxzx(int3 v) {
    int4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    result.w = v.x;
    return result;
}
int4 operator.yxzx(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    result.w = v.x;
    return result;
}
float4 operator.yxzx(float3 v) {
    float4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    result.w = v.x;
    return result;
}
float4 operator.yxzx(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    result.w = v.x;
    return result;
}

/* Functions named operator.yy */
bool2 operator.yy(bool2 v) {
    bool2 result;
    result.x = v.y;
    result.y = v.y;
    return result;
}
bool2 operator.yy(bool3 v) {
    bool2 result;
    result.x = v.y;
    result.y = v.y;
    return result;
}
bool2 operator.yy(bool4 v) {
    bool2 result;
    result.x = v.y;
    result.y = v.y;
    return result;
}
uint2 operator.yy(uint2 v) {
    uint2 result;
    result.x = v.y;
    result.y = v.y;
    return result;
}
uint2 operator.yy(uint3 v) {
    uint2 result;
    result.x = v.y;
    result.y = v.y;
    return result;
}
uint2 operator.yy(uint4 v) {
    uint2 result;
    result.x = v.y;
    result.y = v.y;
    return result;
}
int2 operator.yy(int2 v) {
    int2 result;
    result.x = v.y;
    result.y = v.y;
    return result;
}
int2 operator.yy(int3 v) {
    int2 result;
    result.x = v.y;
    result.y = v.y;
    return result;
}
int2 operator.yy(int4 v) {
    int2 result;
    result.x = v.y;
    result.y = v.y;
    return result;
}
float2 operator.yy(float2 v) {
    float2 result;
    result.x = v.y;
    result.y = v.y;
    return result;
}
float2 operator.yy(float3 v) {
    float2 result;
    result.x = v.y;
    result.y = v.y;
    return result;
}
float2 operator.yy(float4 v) {
    float2 result;
    result.x = v.y;
    result.y = v.y;
    return result;
}

/* Functions named operator.wzx */
bool3 operator.wzx(bool4 v) {
    bool3 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.x;
    return result;
}
uint3 operator.wzx(uint4 v) {
    uint3 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.x;
    return result;
}
int3 operator.wzx(int4 v) {
    int3 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.x;
    return result;
}
float3 operator.wzx(float4 v) {
    float3 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.x;
    return result;
}

/* Functions named operator.yyzx */
bool4 operator.yyzx(bool3 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    result.w = v.x;
    return result;
}
bool4 operator.yyzx(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    result.w = v.x;
    return result;
}
uint4 operator.yyzx(uint3 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    result.w = v.x;
    return result;
}
uint4 operator.yyzx(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    result.w = v.x;
    return result;
}
int4 operator.yyzx(int3 v) {
    int4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    result.w = v.x;
    return result;
}
int4 operator.yyzx(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    result.w = v.x;
    return result;
}
float4 operator.yyzx(float3 v) {
    float4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    result.w = v.x;
    return result;
}
float4 operator.yyzx(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    result.w = v.x;
    return result;
}

/* Functions named sincos */
void sincos(float x, thread float* y, thread float* z) {
    if (y != null)
        *y = sin(x);
    if (z != null)
        *z = cos(x);
}
void sincos(float2 x, thread float2* y, thread float2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0] = sinResult;
    if (z != null)
        (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1] = sinResult;
    if (z != null)
        (*z)[1] = cosResult;
}
void sincos(float3 x, thread float3* y, thread float3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0] = sinResult;
    if (z != null)
        (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1] = sinResult;
    if (z != null)
        (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2] = sinResult;
    if (z != null)
        (*z)[2] = cosResult;
}
void sincos(float4 x, thread float4* y, thread float4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0] = sinResult;
    if (z != null)
        (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1] = sinResult;
    if (z != null)
        (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2] = sinResult;
    if (z != null)
        (*z)[2] = cosResult;
    sincos(x[3], &sinResult, &cosResult);
    if (y != null)
        (*y)[3] = sinResult;
    if (z != null)
        (*z)[3] = cosResult;
}
void sincos(float2x2 x, thread float2x2* y, thread float2x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
}
void sincos(float2x3 x, thread float2x3* y, thread float2x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
}
void sincos(float2x4 x, thread float2x4* y, thread float2x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][3] = sinResult;
    if (z != null)
        (*z)[0][3] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][3] = sinResult;
    if (z != null)
        (*z)[1][3] = cosResult;
}
void sincos(float3x2 x, thread float3x2* y, thread float3x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
}
void sincos(float3x3 x, thread float3x3* y, thread float3x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
}
void sincos(float3x4 x, thread float3x4* y, thread float3x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][3] = sinResult;
    if (z != null)
        (*z)[0][3] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][3] = sinResult;
    if (z != null)
        (*z)[1][3] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][3] = sinResult;
    if (z != null)
        (*z)[2][3] = cosResult;
}
void sincos(float4x2 x, thread float4x2* y, thread float4x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][0] = sinResult;
    if (z != null)
        (*z)[3][0] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][1] = sinResult;
    if (z != null)
        (*z)[3][1] = cosResult;
}
void sincos(float4x3 x, thread float4x3* y, thread float4x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][0] = sinResult;
    if (z != null)
        (*z)[3][0] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][1] = sinResult;
    if (z != null)
        (*z)[3][1] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][2] = sinResult;
    if (z != null)
        (*z)[3][2] = cosResult;
}
void sincos(float4x4 x, thread float4x4* y, thread float4x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][3] = sinResult;
    if (z != null)
        (*z)[0][3] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][3] = sinResult;
    if (z != null)
        (*z)[1][3] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][3] = sinResult;
    if (z != null)
        (*z)[2][3] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][0] = sinResult;
    if (z != null)
        (*z)[3][0] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][1] = sinResult;
    if (z != null)
        (*z)[3][1] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][2] = sinResult;
    if (z != null)
        (*z)[3][2] = cosResult;
    sincos(x[3][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][3] = sinResult;
    if (z != null)
        (*z)[3][3] = cosResult;
}
void sincos(float x, thread float* y, device float* z) {
    if (y != null)
        *y = sin(x);
    if (z != null)
        *z = cos(x);
}
void sincos(float2 x, thread float2* y, device float2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0] = sinResult;
    if (z != null)
        (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1] = sinResult;
    if (z != null)
        (*z)[1] = cosResult;
}
void sincos(float3 x, thread float3* y, device float3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0] = sinResult;
    if (z != null)
        (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1] = sinResult;
    if (z != null)
        (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2] = sinResult;
    if (z != null)
        (*z)[2] = cosResult;
}
void sincos(float4 x, thread float4* y, device float4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0] = sinResult;
    if (z != null)
        (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1] = sinResult;
    if (z != null)
        (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2] = sinResult;
    if (z != null)
        (*z)[2] = cosResult;
    sincos(x[3], &sinResult, &cosResult);
    if (y != null)
        (*y)[3] = sinResult;
    if (z != null)
        (*z)[3] = cosResult;
}
void sincos(float2x2 x, thread float2x2* y, device float2x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
}
void sincos(float2x3 x, thread float2x3* y, device float2x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
}
void sincos(float2x4 x, thread float2x4* y, device float2x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][3] = sinResult;
    if (z != null)
        (*z)[0][3] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][3] = sinResult;
    if (z != null)
        (*z)[1][3] = cosResult;
}
void sincos(float3x2 x, thread float3x2* y, device float3x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
}
void sincos(float3x3 x, thread float3x3* y, device float3x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
}
void sincos(float3x4 x, thread float3x4* y, device float3x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][3] = sinResult;
    if (z != null)
        (*z)[0][3] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][3] = sinResult;
    if (z != null)
        (*z)[1][3] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][3] = sinResult;
    if (z != null)
        (*z)[2][3] = cosResult;
}
void sincos(float4x2 x, thread float4x2* y, device float4x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][0] = sinResult;
    if (z != null)
        (*z)[3][0] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][1] = sinResult;
    if (z != null)
        (*z)[3][1] = cosResult;
}
void sincos(float4x3 x, thread float4x3* y, device float4x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][0] = sinResult;
    if (z != null)
        (*z)[3][0] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][1] = sinResult;
    if (z != null)
        (*z)[3][1] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][2] = sinResult;
    if (z != null)
        (*z)[3][2] = cosResult;
}
void sincos(float4x4 x, thread float4x4* y, device float4x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][3] = sinResult;
    if (z != null)
        (*z)[0][3] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][3] = sinResult;
    if (z != null)
        (*z)[1][3] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][3] = sinResult;
    if (z != null)
        (*z)[2][3] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][0] = sinResult;
    if (z != null)
        (*z)[3][0] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][1] = sinResult;
    if (z != null)
        (*z)[3][1] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][2] = sinResult;
    if (z != null)
        (*z)[3][2] = cosResult;
    sincos(x[3][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][3] = sinResult;
    if (z != null)
        (*z)[3][3] = cosResult;
}
void sincos(float x, thread float* y, threadgroup float* z) {
    if (y != null)
        *y = sin(x);
    if (z != null)
        *z = cos(x);
}
void sincos(float2 x, thread float2* y, threadgroup float2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0] = sinResult;
    if (z != null)
        (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1] = sinResult;
    if (z != null)
        (*z)[1] = cosResult;
}
void sincos(float3 x, thread float3* y, threadgroup float3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0] = sinResult;
    if (z != null)
        (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1] = sinResult;
    if (z != null)
        (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2] = sinResult;
    if (z != null)
        (*z)[2] = cosResult;
}
void sincos(float4 x, thread float4* y, threadgroup float4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0] = sinResult;
    if (z != null)
        (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1] = sinResult;
    if (z != null)
        (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2] = sinResult;
    if (z != null)
        (*z)[2] = cosResult;
    sincos(x[3], &sinResult, &cosResult);
    if (y != null)
        (*y)[3] = sinResult;
    if (z != null)
        (*z)[3] = cosResult;
}
void sincos(float2x2 x, thread float2x2* y, threadgroup float2x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
}
void sincos(float2x3 x, thread float2x3* y, threadgroup float2x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
}
void sincos(float2x4 x, thread float2x4* y, threadgroup float2x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][3] = sinResult;
    if (z != null)
        (*z)[0][3] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][3] = sinResult;
    if (z != null)
        (*z)[1][3] = cosResult;
}
void sincos(float3x2 x, thread float3x2* y, threadgroup float3x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
}
void sincos(float3x3 x, thread float3x3* y, threadgroup float3x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
}
void sincos(float3x4 x, thread float3x4* y, threadgroup float3x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][3] = sinResult;
    if (z != null)
        (*z)[0][3] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][3] = sinResult;
    if (z != null)
        (*z)[1][3] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][3] = sinResult;
    if (z != null)
        (*z)[2][3] = cosResult;
}
void sincos(float4x2 x, thread float4x2* y, threadgroup float4x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][0] = sinResult;
    if (z != null)
        (*z)[3][0] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][1] = sinResult;
    if (z != null)
        (*z)[3][1] = cosResult;
}
void sincos(float4x3 x, thread float4x3* y, threadgroup float4x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][0] = sinResult;
    if (z != null)
        (*z)[3][0] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][1] = sinResult;
    if (z != null)
        (*z)[3][1] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][2] = sinResult;
    if (z != null)
        (*z)[3][2] = cosResult;
}
void sincos(float4x4 x, thread float4x4* y, threadgroup float4x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][3] = sinResult;
    if (z != null)
        (*z)[0][3] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][3] = sinResult;
    if (z != null)
        (*z)[1][3] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][3] = sinResult;
    if (z != null)
        (*z)[2][3] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][0] = sinResult;
    if (z != null)
        (*z)[3][0] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][1] = sinResult;
    if (z != null)
        (*z)[3][1] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][2] = sinResult;
    if (z != null)
        (*z)[3][2] = cosResult;
    sincos(x[3][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][3] = sinResult;
    if (z != null)
        (*z)[3][3] = cosResult;
}
void sincos(float x, device float* y, thread float* z) {
    if (y != null)
        *y = sin(x);
    if (z != null)
        *z = cos(x);
}
void sincos(float2 x, device float2* y, thread float2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0] = sinResult;
    if (z != null)
        (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1] = sinResult;
    if (z != null)
        (*z)[1] = cosResult;
}
void sincos(float3 x, device float3* y, thread float3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0] = sinResult;
    if (z != null)
        (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1] = sinResult;
    if (z != null)
        (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2] = sinResult;
    if (z != null)
        (*z)[2] = cosResult;
}
void sincos(float4 x, device float4* y, thread float4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0] = sinResult;
    if (z != null)
        (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1] = sinResult;
    if (z != null)
        (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2] = sinResult;
    if (z != null)
        (*z)[2] = cosResult;
    sincos(x[3], &sinResult, &cosResult);
    if (y != null)
        (*y)[3] = sinResult;
    if (z != null)
        (*z)[3] = cosResult;
}
void sincos(float2x2 x, device float2x2* y, thread float2x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
}
void sincos(float2x3 x, device float2x3* y, thread float2x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
}
void sincos(float2x4 x, device float2x4* y, thread float2x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][3] = sinResult;
    if (z != null)
        (*z)[0][3] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][3] = sinResult;
    if (z != null)
        (*z)[1][3] = cosResult;
}
void sincos(float3x2 x, device float3x2* y, thread float3x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
}
void sincos(float3x3 x, device float3x3* y, thread float3x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
}
void sincos(float3x4 x, device float3x4* y, thread float3x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][3] = sinResult;
    if (z != null)
        (*z)[0][3] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][3] = sinResult;
    if (z != null)
        (*z)[1][3] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][3] = sinResult;
    if (z != null)
        (*z)[2][3] = cosResult;
}
void sincos(float4x2 x, device float4x2* y, thread float4x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][0] = sinResult;
    if (z != null)
        (*z)[3][0] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][1] = sinResult;
    if (z != null)
        (*z)[3][1] = cosResult;
}
void sincos(float4x3 x, device float4x3* y, thread float4x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][0] = sinResult;
    if (z != null)
        (*z)[3][0] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][1] = sinResult;
    if (z != null)
        (*z)[3][1] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][2] = sinResult;
    if (z != null)
        (*z)[3][2] = cosResult;
}
void sincos(float4x4 x, device float4x4* y, thread float4x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][3] = sinResult;
    if (z != null)
        (*z)[0][3] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][3] = sinResult;
    if (z != null)
        (*z)[1][3] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][3] = sinResult;
    if (z != null)
        (*z)[2][3] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][0] = sinResult;
    if (z != null)
        (*z)[3][0] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][1] = sinResult;
    if (z != null)
        (*z)[3][1] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][2] = sinResult;
    if (z != null)
        (*z)[3][2] = cosResult;
    sincos(x[3][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][3] = sinResult;
    if (z != null)
        (*z)[3][3] = cosResult;
}
void sincos(float x, device float* y, device float* z) {
    if (y != null)
        *y = sin(x);
    if (z != null)
        *z = cos(x);
}
void sincos(float2 x, device float2* y, device float2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0] = sinResult;
    if (z != null)
        (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1] = sinResult;
    if (z != null)
        (*z)[1] = cosResult;
}
void sincos(float3 x, device float3* y, device float3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0] = sinResult;
    if (z != null)
        (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1] = sinResult;
    if (z != null)
        (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2] = sinResult;
    if (z != null)
        (*z)[2] = cosResult;
}
void sincos(float4 x, device float4* y, device float4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0] = sinResult;
    if (z != null)
        (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1] = sinResult;
    if (z != null)
        (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2] = sinResult;
    if (z != null)
        (*z)[2] = cosResult;
    sincos(x[3], &sinResult, &cosResult);
    if (y != null)
        (*y)[3] = sinResult;
    if (z != null)
        (*z)[3] = cosResult;
}
void sincos(float2x2 x, device float2x2* y, device float2x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
}
void sincos(float2x3 x, device float2x3* y, device float2x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
}
void sincos(float2x4 x, device float2x4* y, device float2x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][3] = sinResult;
    if (z != null)
        (*z)[0][3] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][3] = sinResult;
    if (z != null)
        (*z)[1][3] = cosResult;
}
void sincos(float3x2 x, device float3x2* y, device float3x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
}
void sincos(float3x3 x, device float3x3* y, device float3x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
}
void sincos(float3x4 x, device float3x4* y, device float3x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][3] = sinResult;
    if (z != null)
        (*z)[0][3] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][3] = sinResult;
    if (z != null)
        (*z)[1][3] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][3] = sinResult;
    if (z != null)
        (*z)[2][3] = cosResult;
}
void sincos(float4x2 x, device float4x2* y, device float4x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][0] = sinResult;
    if (z != null)
        (*z)[3][0] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][1] = sinResult;
    if (z != null)
        (*z)[3][1] = cosResult;
}
void sincos(float4x3 x, device float4x3* y, device float4x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][0] = sinResult;
    if (z != null)
        (*z)[3][0] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][1] = sinResult;
    if (z != null)
        (*z)[3][1] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][2] = sinResult;
    if (z != null)
        (*z)[3][2] = cosResult;
}
void sincos(float4x4 x, device float4x4* y, device float4x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][3] = sinResult;
    if (z != null)
        (*z)[0][3] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][3] = sinResult;
    if (z != null)
        (*z)[1][3] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][3] = sinResult;
    if (z != null)
        (*z)[2][3] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][0] = sinResult;
    if (z != null)
        (*z)[3][0] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][1] = sinResult;
    if (z != null)
        (*z)[3][1] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][2] = sinResult;
    if (z != null)
        (*z)[3][2] = cosResult;
    sincos(x[3][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][3] = sinResult;
    if (z != null)
        (*z)[3][3] = cosResult;
}
void sincos(float x, device float* y, threadgroup float* z) {
    if (y != null)
        *y = sin(x);
    if (z != null)
        *z = cos(x);
}
void sincos(float2 x, device float2* y, threadgroup float2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0] = sinResult;
    if (z != null)
        (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1] = sinResult;
    if (z != null)
        (*z)[1] = cosResult;
}
void sincos(float3 x, device float3* y, threadgroup float3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0] = sinResult;
    if (z != null)
        (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1] = sinResult;
    if (z != null)
        (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2] = sinResult;
    if (z != null)
        (*z)[2] = cosResult;
}
void sincos(float4 x, device float4* y, threadgroup float4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0] = sinResult;
    if (z != null)
        (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1] = sinResult;
    if (z != null)
        (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2] = sinResult;
    if (z != null)
        (*z)[2] = cosResult;
    sincos(x[3], &sinResult, &cosResult);
    if (y != null)
        (*y)[3] = sinResult;
    if (z != null)
        (*z)[3] = cosResult;
}
void sincos(float2x2 x, device float2x2* y, threadgroup float2x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
}
void sincos(float2x3 x, device float2x3* y, threadgroup float2x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
}
void sincos(float2x4 x, device float2x4* y, threadgroup float2x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][3] = sinResult;
    if (z != null)
        (*z)[0][3] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][3] = sinResult;
    if (z != null)
        (*z)[1][3] = cosResult;
}
void sincos(float3x2 x, device float3x2* y, threadgroup float3x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
}
void sincos(float3x3 x, device float3x3* y, threadgroup float3x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
}
void sincos(float3x4 x, device float3x4* y, threadgroup float3x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][3] = sinResult;
    if (z != null)
        (*z)[0][3] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][3] = sinResult;
    if (z != null)
        (*z)[1][3] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][3] = sinResult;
    if (z != null)
        (*z)[2][3] = cosResult;
}
void sincos(float4x2 x, device float4x2* y, threadgroup float4x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][0] = sinResult;
    if (z != null)
        (*z)[3][0] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][1] = sinResult;
    if (z != null)
        (*z)[3][1] = cosResult;
}
void sincos(float4x3 x, device float4x3* y, threadgroup float4x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][0] = sinResult;
    if (z != null)
        (*z)[3][0] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][1] = sinResult;
    if (z != null)
        (*z)[3][1] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][2] = sinResult;
    if (z != null)
        (*z)[3][2] = cosResult;
}
void sincos(float4x4 x, device float4x4* y, threadgroup float4x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][3] = sinResult;
    if (z != null)
        (*z)[0][3] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][3] = sinResult;
    if (z != null)
        (*z)[1][3] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][3] = sinResult;
    if (z != null)
        (*z)[2][3] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][0] = sinResult;
    if (z != null)
        (*z)[3][0] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][1] = sinResult;
    if (z != null)
        (*z)[3][1] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][2] = sinResult;
    if (z != null)
        (*z)[3][2] = cosResult;
    sincos(x[3][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][3] = sinResult;
    if (z != null)
        (*z)[3][3] = cosResult;
}
void sincos(float x, threadgroup float* y, thread float* z) {
    if (y != null)
        *y = sin(x);
    if (z != null)
        *z = cos(x);
}
void sincos(float2 x, threadgroup float2* y, thread float2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0] = sinResult;
    if (z != null)
        (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1] = sinResult;
    if (z != null)
        (*z)[1] = cosResult;
}
void sincos(float3 x, threadgroup float3* y, thread float3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0] = sinResult;
    if (z != null)
        (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1] = sinResult;
    if (z != null)
        (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2] = sinResult;
    if (z != null)
        (*z)[2] = cosResult;
}
void sincos(float4 x, threadgroup float4* y, thread float4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0] = sinResult;
    if (z != null)
        (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1] = sinResult;
    if (z != null)
        (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2] = sinResult;
    if (z != null)
        (*z)[2] = cosResult;
    sincos(x[3], &sinResult, &cosResult);
    if (y != null)
        (*y)[3] = sinResult;
    if (z != null)
        (*z)[3] = cosResult;
}
void sincos(float2x2 x, threadgroup float2x2* y, thread float2x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
}
void sincos(float2x3 x, threadgroup float2x3* y, thread float2x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
}
void sincos(float2x4 x, threadgroup float2x4* y, thread float2x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][3] = sinResult;
    if (z != null)
        (*z)[0][3] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][3] = sinResult;
    if (z != null)
        (*z)[1][3] = cosResult;
}
void sincos(float3x2 x, threadgroup float3x2* y, thread float3x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
}
void sincos(float3x3 x, threadgroup float3x3* y, thread float3x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
}
void sincos(float3x4 x, threadgroup float3x4* y, thread float3x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][3] = sinResult;
    if (z != null)
        (*z)[0][3] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][3] = sinResult;
    if (z != null)
        (*z)[1][3] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][3] = sinResult;
    if (z != null)
        (*z)[2][3] = cosResult;
}
void sincos(float4x2 x, threadgroup float4x2* y, thread float4x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][0] = sinResult;
    if (z != null)
        (*z)[3][0] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][1] = sinResult;
    if (z != null)
        (*z)[3][1] = cosResult;
}
void sincos(float4x3 x, threadgroup float4x3* y, thread float4x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][0] = sinResult;
    if (z != null)
        (*z)[3][0] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][1] = sinResult;
    if (z != null)
        (*z)[3][1] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][2] = sinResult;
    if (z != null)
        (*z)[3][2] = cosResult;
}
void sincos(float4x4 x, threadgroup float4x4* y, thread float4x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][3] = sinResult;
    if (z != null)
        (*z)[0][3] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][3] = sinResult;
    if (z != null)
        (*z)[1][3] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][3] = sinResult;
    if (z != null)
        (*z)[2][3] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][0] = sinResult;
    if (z != null)
        (*z)[3][0] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][1] = sinResult;
    if (z != null)
        (*z)[3][1] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][2] = sinResult;
    if (z != null)
        (*z)[3][2] = cosResult;
    sincos(x[3][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][3] = sinResult;
    if (z != null)
        (*z)[3][3] = cosResult;
}
void sincos(float x, threadgroup float* y, device float* z) {
    if (y != null)
        *y = sin(x);
    if (z != null)
        *z = cos(x);
}
void sincos(float2 x, threadgroup float2* y, device float2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0] = sinResult;
    if (z != null)
        (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1] = sinResult;
    if (z != null)
        (*z)[1] = cosResult;
}
void sincos(float3 x, threadgroup float3* y, device float3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0] = sinResult;
    if (z != null)
        (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1] = sinResult;
    if (z != null)
        (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2] = sinResult;
    if (z != null)
        (*z)[2] = cosResult;
}
void sincos(float4 x, threadgroup float4* y, device float4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0] = sinResult;
    if (z != null)
        (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1] = sinResult;
    if (z != null)
        (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2] = sinResult;
    if (z != null)
        (*z)[2] = cosResult;
    sincos(x[3], &sinResult, &cosResult);
    if (y != null)
        (*y)[3] = sinResult;
    if (z != null)
        (*z)[3] = cosResult;
}
void sincos(float2x2 x, threadgroup float2x2* y, device float2x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
}
void sincos(float2x3 x, threadgroup float2x3* y, device float2x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
}
void sincos(float2x4 x, threadgroup float2x4* y, device float2x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][3] = sinResult;
    if (z != null)
        (*z)[0][3] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][3] = sinResult;
    if (z != null)
        (*z)[1][3] = cosResult;
}
void sincos(float3x2 x, threadgroup float3x2* y, device float3x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
}
void sincos(float3x3 x, threadgroup float3x3* y, device float3x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
}
void sincos(float3x4 x, threadgroup float3x4* y, device float3x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][3] = sinResult;
    if (z != null)
        (*z)[0][3] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][3] = sinResult;
    if (z != null)
        (*z)[1][3] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][3] = sinResult;
    if (z != null)
        (*z)[2][3] = cosResult;
}
void sincos(float4x2 x, threadgroup float4x2* y, device float4x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][0] = sinResult;
    if (z != null)
        (*z)[3][0] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][1] = sinResult;
    if (z != null)
        (*z)[3][1] = cosResult;
}
void sincos(float4x3 x, threadgroup float4x3* y, device float4x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][0] = sinResult;
    if (z != null)
        (*z)[3][0] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][1] = sinResult;
    if (z != null)
        (*z)[3][1] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][2] = sinResult;
    if (z != null)
        (*z)[3][2] = cosResult;
}
void sincos(float4x4 x, threadgroup float4x4* y, device float4x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][3] = sinResult;
    if (z != null)
        (*z)[0][3] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][3] = sinResult;
    if (z != null)
        (*z)[1][3] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][3] = sinResult;
    if (z != null)
        (*z)[2][3] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][0] = sinResult;
    if (z != null)
        (*z)[3][0] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][1] = sinResult;
    if (z != null)
        (*z)[3][1] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][2] = sinResult;
    if (z != null)
        (*z)[3][2] = cosResult;
    sincos(x[3][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][3] = sinResult;
    if (z != null)
        (*z)[3][3] = cosResult;
}
void sincos(float x, threadgroup float* y, threadgroup float* z) {
    if (y != null)
        *y = sin(x);
    if (z != null)
        *z = cos(x);
}
void sincos(float2 x, threadgroup float2* y, threadgroup float2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0] = sinResult;
    if (z != null)
        (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1] = sinResult;
    if (z != null)
        (*z)[1] = cosResult;
}
void sincos(float3 x, threadgroup float3* y, threadgroup float3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0] = sinResult;
    if (z != null)
        (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1] = sinResult;
    if (z != null)
        (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2] = sinResult;
    if (z != null)
        (*z)[2] = cosResult;
}
void sincos(float4 x, threadgroup float4* y, threadgroup float4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0] = sinResult;
    if (z != null)
        (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1] = sinResult;
    if (z != null)
        (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2] = sinResult;
    if (z != null)
        (*z)[2] = cosResult;
    sincos(x[3], &sinResult, &cosResult);
    if (y != null)
        (*y)[3] = sinResult;
    if (z != null)
        (*z)[3] = cosResult;
}
void sincos(float2x2 x, threadgroup float2x2* y, threadgroup float2x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
}
void sincos(float2x3 x, threadgroup float2x3* y, threadgroup float2x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
}
void sincos(float2x4 x, threadgroup float2x4* y, threadgroup float2x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][3] = sinResult;
    if (z != null)
        (*z)[0][3] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][3] = sinResult;
    if (z != null)
        (*z)[1][3] = cosResult;
}
void sincos(float3x2 x, threadgroup float3x2* y, threadgroup float3x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
}
void sincos(float3x3 x, threadgroup float3x3* y, threadgroup float3x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
}
void sincos(float3x4 x, threadgroup float3x4* y, threadgroup float3x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][3] = sinResult;
    if (z != null)
        (*z)[0][3] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][3] = sinResult;
    if (z != null)
        (*z)[1][3] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][3] = sinResult;
    if (z != null)
        (*z)[2][3] = cosResult;
}
void sincos(float4x2 x, threadgroup float4x2* y, threadgroup float4x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][0] = sinResult;
    if (z != null)
        (*z)[3][0] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][1] = sinResult;
    if (z != null)
        (*z)[3][1] = cosResult;
}
void sincos(float4x3 x, threadgroup float4x3* y, threadgroup float4x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][0] = sinResult;
    if (z != null)
        (*z)[3][0] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][1] = sinResult;
    if (z != null)
        (*z)[3][1] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][2] = sinResult;
    if (z != null)
        (*z)[3][2] = cosResult;
}
void sincos(float4x4 x, threadgroup float4x4* y, threadgroup float4x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][0] = sinResult;
    if (z != null)
        (*z)[0][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][1] = sinResult;
    if (z != null)
        (*z)[0][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][2] = sinResult;
    if (z != null)
        (*z)[0][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[0][3] = sinResult;
    if (z != null)
        (*z)[0][3] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][0] = sinResult;
    if (z != null)
        (*z)[1][0] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][1] = sinResult;
    if (z != null)
        (*z)[1][1] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][2] = sinResult;
    if (z != null)
        (*z)[1][2] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[1][3] = sinResult;
    if (z != null)
        (*z)[1][3] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][0] = sinResult;
    if (z != null)
        (*z)[2][0] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][1] = sinResult;
    if (z != null)
        (*z)[2][1] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][2] = sinResult;
    if (z != null)
        (*z)[2][2] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[2][3] = sinResult;
    if (z != null)
        (*z)[2][3] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][0] = sinResult;
    if (z != null)
        (*z)[3][0] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][1] = sinResult;
    if (z != null)
        (*z)[3][1] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][2] = sinResult;
    if (z != null)
        (*z)[3][2] = cosResult;
    sincos(x[3][3], &sinResult, &cosResult);
    if (y != null)
        (*y)[3][3] = sinResult;
    if (z != null)
        (*z)[3][3] = cosResult;
}


/* Functions named InterlockedCompareExchange */
native void InterlockedCompareExchange(device atomic_uint*, uint, uint, thread uint*);
native void InterlockedCompareExchange(device atomic_int*, int, int, thread int*);
native void InterlockedCompareExchange(device atomic_uint*, uint, uint, device uint*);
native void InterlockedCompareExchange(device atomic_int*, int, int, device int*);
native void InterlockedCompareExchange(device atomic_uint*, uint, uint, threadgroup uint*);
native void InterlockedCompareExchange(device atomic_int*, int, int, threadgroup int*);
native void InterlockedCompareExchange(threadgroup atomic_uint*, uint, uint, thread uint*);
native void InterlockedCompareExchange(threadgroup atomic_int*, int, int, thread int*);
native void InterlockedCompareExchange(threadgroup atomic_uint*, uint, uint, device uint*);
native void InterlockedCompareExchange(threadgroup atomic_int*, int, int, device int*);
native void InterlockedCompareExchange(threadgroup atomic_uint*, uint, uint, threadgroup uint*);
native void InterlockedCompareExchange(threadgroup atomic_int*, int, int, threadgroup int*);


/* Functions named operator.xwz */
bool3 operator.xwz(bool4 v) {
    bool3 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.z;
    return result;
}
uint3 operator.xwz(uint4 v) {
    uint3 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.z;
    return result;
}
int3 operator.xwz(int4 v) {
    int3 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.z;
    return result;
}
float3 operator.xwz(float4 v) {
    float3 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.z;
    return result;
}

/* Functions named operator.wzxz */
bool4 operator.wzxz(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.x;
    result.w = v.z;
    return result;
}
uint4 operator.wzxz(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.x;
    result.w = v.z;
    return result;
}
int4 operator.wzxz(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.x;
    result.w = v.z;
    return result;
}
float4 operator.wzxz(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.x;
    result.w = v.z;
    return result;
}

/* Functions named operator.zxwy */
bool4 operator.zxwy(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.w;
    result.w = v.y;
    return result;
}
uint4 operator.zxwy(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.w;
    result.w = v.y;
    return result;
}
int4 operator.zxwy(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.w;
    result.w = v.y;
    return result;
}
float4 operator.zxwy(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.w;
    result.w = v.y;
    return result;
}

/* Functions named operator.wzxw */
bool4 operator.wzxw(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.x;
    result.w = v.w;
    return result;
}
uint4 operator.wzxw(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.x;
    result.w = v.w;
    return result;
}
int4 operator.wzxw(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.x;
    result.w = v.w;
    return result;
}
float4 operator.wzxw(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.x;
    result.w = v.w;
    return result;
}

/* Functions named operator.zyz */
bool3 operator.zyz(bool3 v) {
    bool3 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    return result;
}
bool3 operator.zyz(bool4 v) {
    bool3 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    return result;
}
uint3 operator.zyz(uint3 v) {
    uint3 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    return result;
}
uint3 operator.zyz(uint4 v) {
    uint3 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    return result;
}
int3 operator.zyz(int3 v) {
    int3 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    return result;
}
int3 operator.zyz(int4 v) {
    int3 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    return result;
}
float3 operator.zyz(float3 v) {
    float3 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    return result;
}
float3 operator.zyz(float4 v) {
    float3 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    return result;
}

/* Functions named operator.yyyz */
bool4 operator.yyyz(bool3 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.z;
    return result;
}
bool4 operator.yyyz(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.z;
    return result;
}
uint4 operator.yyyz(uint3 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.z;
    return result;
}
uint4 operator.yyyz(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.z;
    return result;
}
int4 operator.yyyz(int3 v) {
    int4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.z;
    return result;
}
int4 operator.yyyz(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.z;
    return result;
}
float4 operator.yyyz(float3 v) {
    float4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.z;
    return result;
}
float4 operator.yyyz(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.z;
    return result;
}

/* Functions named operator.xzyw */
bool4 operator.xzyw(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    result.w = v.w;
    return result;
}
uint4 operator.xzyw(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    result.w = v.w;
    return result;
}
int4 operator.xzyw(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    result.w = v.w;
    return result;
}
float4 operator.xzyw(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    result.w = v.w;
    return result;
}

/* Functions named smoothstep */
float smoothstep(float edge0, float edge1, float x) {
    float t = clamp((x - edge0) / (edge1 - edge0), 0, 1);
    return t * t * (3 - 2 * t);
}
float2 smoothstep(float2 x, float2 y, float2 z) {
    float2 result;
    result[0] = smoothstep(x[0], y[0], z[0]);
    result[1] = smoothstep(x[1], y[1], z[1]);
    return result;
}
float3 smoothstep(float3 x, float3 y, float3 z) {
    float3 result;
    result[0] = smoothstep(x[0], y[0], z[0]);
    result[1] = smoothstep(x[1], y[1], z[1]);
    result[2] = smoothstep(x[2], y[2], z[2]);
    return result;
}
float4 smoothstep(float4 x, float4 y, float4 z) {
    float4 result;
    result[0] = smoothstep(x[0], y[0], z[0]);
    result[1] = smoothstep(x[1], y[1], z[1]);
    result[2] = smoothstep(x[2], y[2], z[2]);
    result[3] = smoothstep(x[3], y[3], z[3]);
    return result;
}
float2x2 smoothstep(float2x2 x, float2x2 y, float2x2 z) {
    float2x2 result;
    result[0][0] = smoothstep(x[0][0], y[0][0], z[0][0]);
    result[0][1] = smoothstep(x[0][1], y[0][1], z[0][1]);
    result[1][0] = smoothstep(x[1][0], y[1][0], z[1][0]);
    result[1][1] = smoothstep(x[1][1], y[1][1], z[1][1]);
    return result;
}
float2x3 smoothstep(float2x3 x, float2x3 y, float2x3 z) {
    float2x3 result;
    result[0][0] = smoothstep(x[0][0], y[0][0], z[0][0]);
    result[0][1] = smoothstep(x[0][1], y[0][1], z[0][1]);
    result[0][2] = smoothstep(x[0][2], y[0][2], z[0][2]);
    result[1][0] = smoothstep(x[1][0], y[1][0], z[1][0]);
    result[1][1] = smoothstep(x[1][1], y[1][1], z[1][1]);
    result[1][2] = smoothstep(x[1][2], y[1][2], z[1][2]);
    return result;
}
float2x4 smoothstep(float2x4 x, float2x4 y, float2x4 z) {
    float2x4 result;
    result[0][0] = smoothstep(x[0][0], y[0][0], z[0][0]);
    result[0][1] = smoothstep(x[0][1], y[0][1], z[0][1]);
    result[0][2] = smoothstep(x[0][2], y[0][2], z[0][2]);
    result[0][3] = smoothstep(x[0][3], y[0][3], z[0][3]);
    result[1][0] = smoothstep(x[1][0], y[1][0], z[1][0]);
    result[1][1] = smoothstep(x[1][1], y[1][1], z[1][1]);
    result[1][2] = smoothstep(x[1][2], y[1][2], z[1][2]);
    result[1][3] = smoothstep(x[1][3], y[1][3], z[1][3]);
    return result;
}
float3x2 smoothstep(float3x2 x, float3x2 y, float3x2 z) {
    float3x2 result;
    result[0][0] = smoothstep(x[0][0], y[0][0], z[0][0]);
    result[0][1] = smoothstep(x[0][1], y[0][1], z[0][1]);
    result[1][0] = smoothstep(x[1][0], y[1][0], z[1][0]);
    result[1][1] = smoothstep(x[1][1], y[1][1], z[1][1]);
    result[2][0] = smoothstep(x[2][0], y[2][0], z[2][0]);
    result[2][1] = smoothstep(x[2][1], y[2][1], z[2][1]);
    return result;
}
float3x3 smoothstep(float3x3 x, float3x3 y, float3x3 z) {
    float3x3 result;
    result[0][0] = smoothstep(x[0][0], y[0][0], z[0][0]);
    result[0][1] = smoothstep(x[0][1], y[0][1], z[0][1]);
    result[0][2] = smoothstep(x[0][2], y[0][2], z[0][2]);
    result[1][0] = smoothstep(x[1][0], y[1][0], z[1][0]);
    result[1][1] = smoothstep(x[1][1], y[1][1], z[1][1]);
    result[1][2] = smoothstep(x[1][2], y[1][2], z[1][2]);
    result[2][0] = smoothstep(x[2][0], y[2][0], z[2][0]);
    result[2][1] = smoothstep(x[2][1], y[2][1], z[2][1]);
    result[2][2] = smoothstep(x[2][2], y[2][2], z[2][2]);
    return result;
}
float3x4 smoothstep(float3x4 x, float3x4 y, float3x4 z) {
    float3x4 result;
    result[0][0] = smoothstep(x[0][0], y[0][0], z[0][0]);
    result[0][1] = smoothstep(x[0][1], y[0][1], z[0][1]);
    result[0][2] = smoothstep(x[0][2], y[0][2], z[0][2]);
    result[0][3] = smoothstep(x[0][3], y[0][3], z[0][3]);
    result[1][0] = smoothstep(x[1][0], y[1][0], z[1][0]);
    result[1][1] = smoothstep(x[1][1], y[1][1], z[1][1]);
    result[1][2] = smoothstep(x[1][2], y[1][2], z[1][2]);
    result[1][3] = smoothstep(x[1][3], y[1][3], z[1][3]);
    result[2][0] = smoothstep(x[2][0], y[2][0], z[2][0]);
    result[2][1] = smoothstep(x[2][1], y[2][1], z[2][1]);
    result[2][2] = smoothstep(x[2][2], y[2][2], z[2][2]);
    result[2][3] = smoothstep(x[2][3], y[2][3], z[2][3]);
    return result;
}
float4x2 smoothstep(float4x2 x, float4x2 y, float4x2 z) {
    float4x2 result;
    result[0][0] = smoothstep(x[0][0], y[0][0], z[0][0]);
    result[0][1] = smoothstep(x[0][1], y[0][1], z[0][1]);
    result[1][0] = smoothstep(x[1][0], y[1][0], z[1][0]);
    result[1][1] = smoothstep(x[1][1], y[1][1], z[1][1]);
    result[2][0] = smoothstep(x[2][0], y[2][0], z[2][0]);
    result[2][1] = smoothstep(x[2][1], y[2][1], z[2][1]);
    result[3][0] = smoothstep(x[3][0], y[3][0], z[3][0]);
    result[3][1] = smoothstep(x[3][1], y[3][1], z[3][1]);
    return result;
}
float4x3 smoothstep(float4x3 x, float4x3 y, float4x3 z) {
    float4x3 result;
    result[0][0] = smoothstep(x[0][0], y[0][0], z[0][0]);
    result[0][1] = smoothstep(x[0][1], y[0][1], z[0][1]);
    result[0][2] = smoothstep(x[0][2], y[0][2], z[0][2]);
    result[1][0] = smoothstep(x[1][0], y[1][0], z[1][0]);
    result[1][1] = smoothstep(x[1][1], y[1][1], z[1][1]);
    result[1][2] = smoothstep(x[1][2], y[1][2], z[1][2]);
    result[2][0] = smoothstep(x[2][0], y[2][0], z[2][0]);
    result[2][1] = smoothstep(x[2][1], y[2][1], z[2][1]);
    result[2][2] = smoothstep(x[2][2], y[2][2], z[2][2]);
    result[3][0] = smoothstep(x[3][0], y[3][0], z[3][0]);
    result[3][1] = smoothstep(x[3][1], y[3][1], z[3][1]);
    result[3][2] = smoothstep(x[3][2], y[3][2], z[3][2]);
    return result;
}
float4x4 smoothstep(float4x4 x, float4x4 y, float4x4 z) {
    float4x4 result;
    result[0][0] = smoothstep(x[0][0], y[0][0], z[0][0]);
    result[0][1] = smoothstep(x[0][1], y[0][1], z[0][1]);
    result[0][2] = smoothstep(x[0][2], y[0][2], z[0][2]);
    result[0][3] = smoothstep(x[0][3], y[0][3], z[0][3]);
    result[1][0] = smoothstep(x[1][0], y[1][0], z[1][0]);
    result[1][1] = smoothstep(x[1][1], y[1][1], z[1][1]);
    result[1][2] = smoothstep(x[1][2], y[1][2], z[1][2]);
    result[1][3] = smoothstep(x[1][3], y[1][3], z[1][3]);
    result[2][0] = smoothstep(x[2][0], y[2][0], z[2][0]);
    result[2][1] = smoothstep(x[2][1], y[2][1], z[2][1]);
    result[2][2] = smoothstep(x[2][2], y[2][2], z[2][2]);
    result[2][3] = smoothstep(x[2][3], y[2][3], z[2][3]);
    result[3][0] = smoothstep(x[3][0], y[3][0], z[3][0]);
    result[3][1] = smoothstep(x[3][1], y[3][1], z[3][1]);
    result[3][2] = smoothstep(x[3][2], y[3][2], z[3][2]);
    result[3][3] = smoothstep(x[3][3], y[3][3], z[3][3]);
    return result;
}

/* Functions named operator.wyyz */
bool4 operator.wyyz(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.y;
    result.w = v.z;
    return result;
}
uint4 operator.wyyz(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.y;
    result.w = v.z;
    return result;
}
int4 operator.wyyz(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.y;
    result.w = v.z;
    return result;
}
float4 operator.wyyz(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.y;
    result.w = v.z;
    return result;
}

/* Functions named operator.ww */
bool2 operator.ww(bool4 v) {
    bool2 result;
    result.x = v.w;
    result.y = v.w;
    return result;
}
uint2 operator.ww(uint4 v) {
    uint2 result;
    result.x = v.w;
    result.y = v.w;
    return result;
}
int2 operator.ww(int4 v) {
    int2 result;
    result.x = v.w;
    result.y = v.w;
    return result;
}
float2 operator.ww(float4 v) {
    float2 result;
    result.x = v.w;
    result.y = v.w;
    return result;
}

/* Functions named operator[] */
bool operator[](bool2 v, uint index) {
    switch (index) {
        case 0:
            return v.x;
        case 1:
            return v.y;
        default:
            break;
    }
    bool result;
    return result;
}
bool operator[](bool3 v, uint index) {
    switch (index) {
        case 0:
            return v.x;
        case 1:
            return v.y;
        case 2:
            return v.z;
        default:
            break;
    }
    bool result;
    return result;
}
bool operator[](bool4 v, uint index) {
    switch (index) {
        case 0:
            return v.x;
        case 1:
            return v.y;
        case 2:
            return v.z;
        case 3:
            return v.w;
        default:
            break;
    }
    bool result;
    return result;
}
uint operator[](uint2 v, uint index) {
    switch (index) {
        case 0:
            return v.x;
        case 1:
            return v.y;
        default:
            break;
    }
    uint result;
    return result;
}
uint operator[](uint3 v, uint index) {
    switch (index) {
        case 0:
            return v.x;
        case 1:
            return v.y;
        case 2:
            return v.z;
        default:
            break;
    }
    uint result;
    return result;
}
uint operator[](uint4 v, uint index) {
    switch (index) {
        case 0:
            return v.x;
        case 1:
            return v.y;
        case 2:
            return v.z;
        case 3:
            return v.w;
        default:
            break;
    }
    uint result;
    return result;
}
int operator[](int2 v, uint index) {
    switch (index) {
        case 0:
            return v.x;
        case 1:
            return v.y;
        default:
            break;
    }
    int result;
    return result;
}
int operator[](int3 v, uint index) {
    switch (index) {
        case 0:
            return v.x;
        case 1:
            return v.y;
        case 2:
            return v.z;
        default:
            break;
    }
    int result;
    return result;
}
int operator[](int4 v, uint index) {
    switch (index) {
        case 0:
            return v.x;
        case 1:
            return v.y;
        case 2:
            return v.z;
        case 3:
            return v.w;
        default:
            break;
    }
    int result;
    return result;
}
float operator[](float2 v, uint index) {
    switch (index) {
        case 0:
            return v.x;
        case 1:
            return v.y;
        default:
            break;
    }
    float result;
    return result;
}
float operator[](float3 v, uint index) {
    switch (index) {
        case 0:
            return v.x;
        case 1:
            return v.y;
        case 2:
            return v.z;
        default:
            break;
    }
    float result;
    return result;
}
float operator[](float4 v, uint index) {
    switch (index) {
        case 0:
            return v.x;
        case 1:
            return v.y;
        case 2:
            return v.z;
        case 3:
            return v.w;
        default:
            break;
    }
    float result;
    return result;
}
native float2 operator[](float2x2, uint);
native float3 operator[](float2x3, uint);
native float4 operator[](float2x4, uint);
native float2 operator[](float3x2, uint);
native float3 operator[](float3x3, uint);
native float4 operator[](float3x4, uint);
native float2 operator[](float4x2, uint);
native float3 operator[](float4x3, uint);
native float4 operator[](float4x4, uint);

/* Functions named operator.yywz */
bool4 operator.yywz(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.w;
    result.w = v.z;
    return result;
}
uint4 operator.yywz(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.w;
    result.w = v.z;
    return result;
}
int4 operator.yywz(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.w;
    result.w = v.z;
    return result;
}
float4 operator.yywz(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.w;
    result.w = v.z;
    return result;
}

/* Functions named exp */
native float exp(float);
float2 exp(float2 x) {
    float2 result;
    result[0] = exp(x[0]);
    result[1] = exp(x[1]);
    return result;
}
float3 exp(float3 x) {
    float3 result;
    result[0] = exp(x[0]);
    result[1] = exp(x[1]);
    result[2] = exp(x[2]);
    return result;
}
float4 exp(float4 x) {
    float4 result;
    result[0] = exp(x[0]);
    result[1] = exp(x[1]);
    result[2] = exp(x[2]);
    result[3] = exp(x[3]);
    return result;
}
float2x2 exp(float2x2 x) {
    float2x2 result;
    result[0][0] = exp(x[0][0]);
    result[0][1] = exp(x[0][1]);
    result[1][0] = exp(x[1][0]);
    result[1][1] = exp(x[1][1]);
    return result;
}
float2x3 exp(float2x3 x) {
    float2x3 result;
    result[0][0] = exp(x[0][0]);
    result[0][1] = exp(x[0][1]);
    result[0][2] = exp(x[0][2]);
    result[1][0] = exp(x[1][0]);
    result[1][1] = exp(x[1][1]);
    result[1][2] = exp(x[1][2]);
    return result;
}
float2x4 exp(float2x4 x) {
    float2x4 result;
    result[0][0] = exp(x[0][0]);
    result[0][1] = exp(x[0][1]);
    result[0][2] = exp(x[0][2]);
    result[0][3] = exp(x[0][3]);
    result[1][0] = exp(x[1][0]);
    result[1][1] = exp(x[1][1]);
    result[1][2] = exp(x[1][2]);
    result[1][3] = exp(x[1][3]);
    return result;
}
float3x2 exp(float3x2 x) {
    float3x2 result;
    result[0][0] = exp(x[0][0]);
    result[0][1] = exp(x[0][1]);
    result[1][0] = exp(x[1][0]);
    result[1][1] = exp(x[1][1]);
    result[2][0] = exp(x[2][0]);
    result[2][1] = exp(x[2][1]);
    return result;
}
float3x3 exp(float3x3 x) {
    float3x3 result;
    result[0][0] = exp(x[0][0]);
    result[0][1] = exp(x[0][1]);
    result[0][2] = exp(x[0][2]);
    result[1][0] = exp(x[1][0]);
    result[1][1] = exp(x[1][1]);
    result[1][2] = exp(x[1][2]);
    result[2][0] = exp(x[2][0]);
    result[2][1] = exp(x[2][1]);
    result[2][2] = exp(x[2][2]);
    return result;
}
float3x4 exp(float3x4 x) {
    float3x4 result;
    result[0][0] = exp(x[0][0]);
    result[0][1] = exp(x[0][1]);
    result[0][2] = exp(x[0][2]);
    result[0][3] = exp(x[0][3]);
    result[1][0] = exp(x[1][0]);
    result[1][1] = exp(x[1][1]);
    result[1][2] = exp(x[1][2]);
    result[1][3] = exp(x[1][3]);
    result[2][0] = exp(x[2][0]);
    result[2][1] = exp(x[2][1]);
    result[2][2] = exp(x[2][2]);
    result[2][3] = exp(x[2][3]);
    return result;
}
float4x2 exp(float4x2 x) {
    float4x2 result;
    result[0][0] = exp(x[0][0]);
    result[0][1] = exp(x[0][1]);
    result[1][0] = exp(x[1][0]);
    result[1][1] = exp(x[1][1]);
    result[2][0] = exp(x[2][0]);
    result[2][1] = exp(x[2][1]);
    result[3][0] = exp(x[3][0]);
    result[3][1] = exp(x[3][1]);
    return result;
}
float4x3 exp(float4x3 x) {
    float4x3 result;
    result[0][0] = exp(x[0][0]);
    result[0][1] = exp(x[0][1]);
    result[0][2] = exp(x[0][2]);
    result[1][0] = exp(x[1][0]);
    result[1][1] = exp(x[1][1]);
    result[1][2] = exp(x[1][2]);
    result[2][0] = exp(x[2][0]);
    result[2][1] = exp(x[2][1]);
    result[2][2] = exp(x[2][2]);
    result[3][0] = exp(x[3][0]);
    result[3][1] = exp(x[3][1]);
    result[3][2] = exp(x[3][2]);
    return result;
}
float4x4 exp(float4x4 x) {
    float4x4 result;
    result[0][0] = exp(x[0][0]);
    result[0][1] = exp(x[0][1]);
    result[0][2] = exp(x[0][2]);
    result[0][3] = exp(x[0][3]);
    result[1][0] = exp(x[1][0]);
    result[1][1] = exp(x[1][1]);
    result[1][2] = exp(x[1][2]);
    result[1][3] = exp(x[1][3]);
    result[2][0] = exp(x[2][0]);
    result[2][1] = exp(x[2][1]);
    result[2][2] = exp(x[2][2]);
    result[2][3] = exp(x[2][3]);
    result[3][0] = exp(x[3][0]);
    result[3][1] = exp(x[3][1]);
    result[3][2] = exp(x[3][2]);
    result[3][3] = exp(x[3][3]);
    return result;
}

/* Functions named operator.zxw= */
bool4 operator.zxw=(bool4 v, bool3 c) {
    bool4 result = v;
    result.z = c.x;
    result.x = c.y;
    result.w = c.z;
    return result;
}
uint4 operator.zxw=(uint4 v, uint3 c) {
    uint4 result = v;
    result.z = c.x;
    result.x = c.y;
    result.w = c.z;
    return result;
}
int4 operator.zxw=(int4 v, int3 c) {
    int4 result = v;
    result.z = c.x;
    result.x = c.y;
    result.w = c.z;
    return result;
}
float4 operator.zxw=(float4 v, float3 c) {
    float4 result = v;
    result.z = c.x;
    result.x = c.y;
    result.w = c.z;
    return result;
}

/* Functions named operator.zzz */
bool3 operator.zzz(bool3 v) {
    bool3 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    return result;
}
bool3 operator.zzz(bool4 v) {
    bool3 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    return result;
}
uint3 operator.zzz(uint3 v) {
    uint3 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    return result;
}
uint3 operator.zzz(uint4 v) {
    uint3 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    return result;
}
int3 operator.zzz(int3 v) {
    int3 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    return result;
}
int3 operator.zzz(int4 v) {
    int3 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    return result;
}
float3 operator.zzz(float3 v) {
    float3 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    return result;
}
float3 operator.zzz(float4 v) {
    float3 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    return result;
}

/* Functions named operator.wzwx */
bool4 operator.wzwx(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.w;
    result.w = v.x;
    return result;
}
uint4 operator.wzwx(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.w;
    result.w = v.x;
    return result;
}
int4 operator.wzwx(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.w;
    result.w = v.x;
    return result;
}
float4 operator.wzwx(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.w;
    result.w = v.x;
    return result;
}

/* Functions named operator.yyzz */
bool4 operator.yyzz(bool3 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    result.w = v.z;
    return result;
}
bool4 operator.yyzz(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    result.w = v.z;
    return result;
}
uint4 operator.yyzz(uint3 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    result.w = v.z;
    return result;
}
uint4 operator.yyzz(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    result.w = v.z;
    return result;
}
int4 operator.yyzz(int3 v) {
    int4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    result.w = v.z;
    return result;
}
int4 operator.yyzz(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    result.w = v.z;
    return result;
}
float4 operator.yyzz(float3 v) {
    float4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    result.w = v.z;
    return result;
}
float4 operator.yyzz(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    result.w = v.z;
    return result;
}

/* Functions named operator.yywx */
bool4 operator.yywx(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.w;
    result.w = v.x;
    return result;
}
uint4 operator.yywx(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.w;
    result.w = v.x;
    return result;
}
int4 operator.yywx(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.w;
    result.w = v.x;
    return result;
}
float4 operator.yywx(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.w;
    result.w = v.x;
    return result;
}

/* Functions named operator.zzx */
bool3 operator.zzx(bool3 v) {
    bool3 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    return result;
}
bool3 operator.zzx(bool4 v) {
    bool3 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    return result;
}
uint3 operator.zzx(uint3 v) {
    uint3 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    return result;
}
uint3 operator.zzx(uint4 v) {
    uint3 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    return result;
}
int3 operator.zzx(int3 v) {
    int3 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    return result;
}
int3 operator.zzx(int4 v) {
    int3 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    return result;
}
float3 operator.zzx(float3 v) {
    float3 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    return result;
}
float3 operator.zzx(float4 v) {
    float3 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    return result;
}

/* Functions named operator.xxx */
bool3 operator.xxx(bool2 v) {
    bool3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    return result;
}
bool3 operator.xxx(bool3 v) {
    bool3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    return result;
}
bool3 operator.xxx(bool4 v) {
    bool3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    return result;
}
uint3 operator.xxx(uint2 v) {
    uint3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    return result;
}
uint3 operator.xxx(uint3 v) {
    uint3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    return result;
}
uint3 operator.xxx(uint4 v) {
    uint3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    return result;
}
int3 operator.xxx(int2 v) {
    int3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    return result;
}
int3 operator.xxx(int3 v) {
    int3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    return result;
}
int3 operator.xxx(int4 v) {
    int3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    return result;
}
float3 operator.xxx(float2 v) {
    float3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    return result;
}
float3 operator.xxx(float3 v) {
    float3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    return result;
}
float3 operator.xxx(float4 v) {
    float3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    return result;
}

/* Functions named operator.yxxy */
bool4 operator.yxxy(bool2 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
bool4 operator.yxxy(bool3 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
bool4 operator.yxxy(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
uint4 operator.yxxy(uint2 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
uint4 operator.yxxy(uint3 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
uint4 operator.yxxy(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
int4 operator.yxxy(int2 v) {
    int4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
int4 operator.yxxy(int3 v) {
    int4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
int4 operator.yxxy(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
float4 operator.yxxy(float2 v) {
    float4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
float4 operator.yxxy(float3 v) {
    float4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
float4 operator.yxxy(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}

/* Functions named operator.wyyy */
bool4 operator.wyyy(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
uint4 operator.wyyy(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
int4 operator.wyyy(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
float4 operator.wyyy(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}

/* Functions named operator.wyww */
bool4 operator.wyww(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.w;
    result.w = v.w;
    return result;
}
uint4 operator.wyww(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.w;
    result.w = v.w;
    return result;
}
int4 operator.wyww(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.w;
    result.w = v.w;
    return result;
}
float4 operator.wyww(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.w;
    result.w = v.w;
    return result;
}

/* Functions named operator.yyyw */
bool4 operator.yyyw(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.w;
    return result;
}
uint4 operator.yyyw(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.w;
    return result;
}
int4 operator.yyyw(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.w;
    return result;
}
float4 operator.yyyw(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.w;
    return result;
}

/* Functions named operator.xxw */
bool3 operator.xxw(bool4 v) {
    bool3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.w;
    return result;
}
uint3 operator.xxw(uint4 v) {
    uint3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.w;
    return result;
}
int3 operator.xxw(int4 v) {
    int3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.w;
    return result;
}
float3 operator.xxw(float4 v) {
    float3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.w;
    return result;
}

/* Functions named operator.xzxy */
bool4 operator.xzxy(bool3 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    result.w = v.y;
    return result;
}
bool4 operator.xzxy(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    result.w = v.y;
    return result;
}
uint4 operator.xzxy(uint3 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    result.w = v.y;
    return result;
}
uint4 operator.xzxy(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    result.w = v.y;
    return result;
}
int4 operator.xzxy(int3 v) {
    int4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    result.w = v.y;
    return result;
}
int4 operator.xzxy(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    result.w = v.y;
    return result;
}
float4 operator.xzxy(float3 v) {
    float4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    result.w = v.y;
    return result;
}
float4 operator.xzxy(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    result.w = v.y;
    return result;
}

/* Functions named operator.yw= */
bool4 operator.yw=(bool4 v, bool2 c) {
    bool4 result = v;
    result.y = c.x;
    result.w = c.y;
    return result;
}
uint4 operator.yw=(uint4 v, uint2 c) {
    uint4 result = v;
    result.y = c.x;
    result.w = c.y;
    return result;
}
int4 operator.yw=(int4 v, int2 c) {
    int4 result = v;
    result.y = c.x;
    result.w = c.y;
    return result;
}
float4 operator.yw=(float4 v, float2 c) {
    float4 result = v;
    result.y = c.x;
    result.w = c.y;
    return result;
}

/* Functions named operator.xyx */
bool3 operator.xyx(bool2 v) {
    bool3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    return result;
}
bool3 operator.xyx(bool3 v) {
    bool3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    return result;
}
bool3 operator.xyx(bool4 v) {
    bool3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    return result;
}
uint3 operator.xyx(uint2 v) {
    uint3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    return result;
}
uint3 operator.xyx(uint3 v) {
    uint3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    return result;
}
uint3 operator.xyx(uint4 v) {
    uint3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    return result;
}
int3 operator.xyx(int2 v) {
    int3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    return result;
}
int3 operator.xyx(int3 v) {
    int3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    return result;
}
int3 operator.xyx(int4 v) {
    int3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    return result;
}
float3 operator.xyx(float2 v) {
    float3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    return result;
}
float3 operator.xyx(float3 v) {
    float3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    return result;
}
float3 operator.xyx(float4 v) {
    float3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    return result;
}

/* Functions named all */
bool all(bool x) {
    return x;
}
bool all(bool2 x) {
    bool result = true;
    result = result && (x[0]);
    result = result && (x[1]);
    return result;
}
bool all(bool3 x) {
    bool result = true;
    result = result && (x[0]);
    result = result && (x[1]);
    result = result && (x[2]);
    return result;
}
bool all(bool4 x) {
    bool result = true;
    result = result && (x[0]);
    result = result && (x[1]);
    result = result && (x[2]);
    result = result && (x[3]);
    return result;
}
bool all(uint x) {
    return x != 0;
}
bool all(uint2 x) {
    bool result = true;
    result = result && (x[0] != 0);
    result = result && (x[1] != 0);
    return result;
}
bool all(uint3 x) {
    bool result = true;
    result = result && (x[0] != 0);
    result = result && (x[1] != 0);
    result = result && (x[2] != 0);
    return result;
}
bool all(uint4 x) {
    bool result = true;
    result = result && (x[0] != 0);
    result = result && (x[1] != 0);
    result = result && (x[2] != 0);
    result = result && (x[3] != 0);
    return result;
}
bool all(int x) {
    return x != 0;
}
bool all(int2 x) {
    bool result = true;
    result = result && (x[0] != 0);
    result = result && (x[1] != 0);
    return result;
}
bool all(int3 x) {
    bool result = true;
    result = result && (x[0] != 0);
    result = result && (x[1] != 0);
    result = result && (x[2] != 0);
    return result;
}
bool all(int4 x) {
    bool result = true;
    result = result && (x[0] != 0);
    result = result && (x[1] != 0);
    result = result && (x[2] != 0);
    result = result && (x[3] != 0);
    return result;
}
bool all(float x) {
    return x != 0;
}
bool all(float2 x) {
    bool result = true;
    result = result && (x[0] != 0);
    result = result && (x[1] != 0);
    return result;
}
bool all(float3 x) {
    bool result = true;
    result = result && (x[0] != 0);
    result = result && (x[1] != 0);
    result = result && (x[2] != 0);
    return result;
}
bool all(float4 x) {
    bool result = true;
    result = result && (x[0] != 0);
    result = result && (x[1] != 0);
    result = result && (x[2] != 0);
    result = result && (x[3] != 0);
    return result;
}
bool all(float2x2 x) {
    bool result = true;
    result = result && (x[0][0] != 0);
    result = result && (x[0][1] != 0);
    result = result && (x[1][0] != 0);
    result = result && (x[1][1] != 0);
    return result;
}
bool all(float2x3 x) {
    bool result = true;
    result = result && (x[0][0] != 0);
    result = result && (x[0][1] != 0);
    result = result && (x[0][2] != 0);
    result = result && (x[1][0] != 0);
    result = result && (x[1][1] != 0);
    result = result && (x[1][2] != 0);
    return result;
}
bool all(float2x4 x) {
    bool result = true;
    result = result && (x[0][0] != 0);
    result = result && (x[0][1] != 0);
    result = result && (x[0][2] != 0);
    result = result && (x[0][3] != 0);
    result = result && (x[1][0] != 0);
    result = result && (x[1][1] != 0);
    result = result && (x[1][2] != 0);
    result = result && (x[1][3] != 0);
    return result;
}
bool all(float3x2 x) {
    bool result = true;
    result = result && (x[0][0] != 0);
    result = result && (x[0][1] != 0);
    result = result && (x[1][0] != 0);
    result = result && (x[1][1] != 0);
    result = result && (x[2][0] != 0);
    result = result && (x[2][1] != 0);
    return result;
}
bool all(float3x3 x) {
    bool result = true;
    result = result && (x[0][0] != 0);
    result = result && (x[0][1] != 0);
    result = result && (x[0][2] != 0);
    result = result && (x[1][0] != 0);
    result = result && (x[1][1] != 0);
    result = result && (x[1][2] != 0);
    result = result && (x[2][0] != 0);
    result = result && (x[2][1] != 0);
    result = result && (x[2][2] != 0);
    return result;
}
bool all(float3x4 x) {
    bool result = true;
    result = result && (x[0][0] != 0);
    result = result && (x[0][1] != 0);
    result = result && (x[0][2] != 0);
    result = result && (x[0][3] != 0);
    result = result && (x[1][0] != 0);
    result = result && (x[1][1] != 0);
    result = result && (x[1][2] != 0);
    result = result && (x[1][3] != 0);
    result = result && (x[2][0] != 0);
    result = result && (x[2][1] != 0);
    result = result && (x[2][2] != 0);
    result = result && (x[2][3] != 0);
    return result;
}
bool all(float4x2 x) {
    bool result = true;
    result = result && (x[0][0] != 0);
    result = result && (x[0][1] != 0);
    result = result && (x[1][0] != 0);
    result = result && (x[1][1] != 0);
    result = result && (x[2][0] != 0);
    result = result && (x[2][1] != 0);
    result = result && (x[3][0] != 0);
    result = result && (x[3][1] != 0);
    return result;
}
bool all(float4x3 x) {
    bool result = true;
    result = result && (x[0][0] != 0);
    result = result && (x[0][1] != 0);
    result = result && (x[0][2] != 0);
    result = result && (x[1][0] != 0);
    result = result && (x[1][1] != 0);
    result = result && (x[1][2] != 0);
    result = result && (x[2][0] != 0);
    result = result && (x[2][1] != 0);
    result = result && (x[2][2] != 0);
    result = result && (x[3][0] != 0);
    result = result && (x[3][1] != 0);
    result = result && (x[3][2] != 0);
    return result;
}
bool all(float4x4 x) {
    bool result = true;
    result = result && (x[0][0] != 0);
    result = result && (x[0][1] != 0);
    result = result && (x[0][2] != 0);
    result = result && (x[0][3] != 0);
    result = result && (x[1][0] != 0);
    result = result && (x[1][1] != 0);
    result = result && (x[1][2] != 0);
    result = result && (x[1][3] != 0);
    result = result && (x[2][0] != 0);
    result = result && (x[2][1] != 0);
    result = result && (x[2][2] != 0);
    result = result && (x[2][3] != 0);
    result = result && (x[3][0] != 0);
    result = result && (x[3][1] != 0);
    result = result && (x[3][2] != 0);
    result = result && (x[3][3] != 0);
    return result;
}


/* Functions named operator.w= */
native bool4 operator.w=(bool4, bool);
native uint4 operator.w=(uint4, uint);
native int4 operator.w=(int4, int);
native float4 operator.w=(float4, float);

/* Functions named firstbitlow */
uint firstbitlow(uint x) {
    if ((x & uint(1 << 0)) != 0)
        return 31;
    if ((x & uint(1 << 1)) != 0)
        return 30;
    if ((x & uint(1 << 2)) != 0)
        return 29;
    if ((x & uint(1 << 3)) != 0)
        return 28;
    if ((x & uint(1 << 4)) != 0)
        return 27;
    if ((x & uint(1 << 5)) != 0)
        return 26;
    if ((x & uint(1 << 6)) != 0)
        return 25;
    if ((x & uint(1 << 7)) != 0)
        return 24;
    if ((x & uint(1 << 8)) != 0)
        return 23;
    if ((x & uint(1 << 9)) != 0)
        return 22;
    if ((x & uint(1 << 10)) != 0)
        return 21;
    if ((x & uint(1 << 11)) != 0)
        return 20;
    if ((x & uint(1 << 12)) != 0)
        return 19;
    if ((x & uint(1 << 13)) != 0)
        return 18;
    if ((x & uint(1 << 14)) != 0)
        return 17;
    if ((x & uint(1 << 15)) != 0)
        return 16;
    if ((x & uint(1 << 16)) != 0)
        return 15;
    if ((x & uint(1 << 17)) != 0)
        return 14;
    if ((x & uint(1 << 18)) != 0)
        return 13;
    if ((x & uint(1 << 19)) != 0)
        return 12;
    if ((x & uint(1 << 20)) != 0)
        return 11;
    if ((x & uint(1 << 21)) != 0)
        return 10;
    if ((x & uint(1 << 22)) != 0)
        return 9;
    if ((x & uint(1 << 23)) != 0)
        return 8;
    if ((x & uint(1 << 24)) != 0)
        return 7;
    if ((x & uint(1 << 25)) != 0)
        return 6;
    if ((x & uint(1 << 26)) != 0)
        return 5;
    if ((x & uint(1 << 27)) != 0)
        return 4;
    if ((x & uint(1 << 28)) != 0)
        return 3;
    if ((x & uint(1 << 29)) != 0)
        return 2;
    if ((x & uint(1 << 30)) != 0)
        return 1;
    if ((x & uint(1 << 31)) != 0)
        return 0;
    return 32;
}
uint firstbitlow(int x) {
    return firstbitlow(uint(x));
}
uint2 firstbitlow(uint2 x) {
    uint2 result;
    result[0] = firstbitlow(x[0]);
    result[1] = firstbitlow(x[1]);
    return result;
}
uint3 firstbitlow(uint3 x) {
    uint3 result;
    result[0] = firstbitlow(x[0]);
    result[1] = firstbitlow(x[1]);
    result[2] = firstbitlow(x[2]);
    return result;
}
uint4 firstbitlow(uint4 x) {
    uint4 result;
    result[0] = firstbitlow(x[0]);
    result[1] = firstbitlow(x[1]);
    result[2] = firstbitlow(x[2]);
    result[3] = firstbitlow(x[3]);
    return result;
}
uint2 firstbitlow(int2 x) {
    uint2 result;
    result[0] = firstbitlow(x[0]);
    result[1] = firstbitlow(x[1]);
    return result;
}
uint3 firstbitlow(int3 x) {
    uint3 result;
    result[0] = firstbitlow(x[0]);
    result[1] = firstbitlow(x[1]);
    result[2] = firstbitlow(x[2]);
    return result;
}
uint4 firstbitlow(int4 x) {
    uint4 result;
    result[0] = firstbitlow(x[0]);
    result[1] = firstbitlow(x[1]);
    result[2] = firstbitlow(x[2]);
    result[3] = firstbitlow(x[3]);
    return result;
}


/* Functions named operator.xwxy */
bool4 operator.xwxy(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.x;
    result.w = v.y;
    return result;
}
uint4 operator.xwxy(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.x;
    result.w = v.y;
    return result;
}
int4 operator.xwxy(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.x;
    result.w = v.y;
    return result;
}
float4 operator.xwxy(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.x;
    result.w = v.y;
    return result;
}

/* Functions named operator.yzz */
bool3 operator.yzz(bool3 v) {
    bool3 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    return result;
}
bool3 operator.yzz(bool4 v) {
    bool3 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    return result;
}
uint3 operator.yzz(uint3 v) {
    uint3 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    return result;
}
uint3 operator.yzz(uint4 v) {
    uint3 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    return result;
}
int3 operator.yzz(int3 v) {
    int3 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    return result;
}
int3 operator.yzz(int4 v) {
    int3 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    return result;
}
float3 operator.yzz(float3 v) {
    float3 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    return result;
}
float3 operator.yzz(float4 v) {
    float3 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    return result;
}

/* Functions named operator.yzwx */
bool4 operator.yzwx(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.w;
    result.w = v.x;
    return result;
}
uint4 operator.yzwx(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.w;
    result.w = v.x;
    return result;
}
int4 operator.yzwx(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.w;
    result.w = v.x;
    return result;
}
float4 operator.yzwx(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.w;
    result.w = v.x;
    return result;
}

/* Functions named operator.ywxz= */
bool4 operator.ywxz=(bool4 v, bool4 c) {
    bool4 result = v;
    result.y = c.x;
    result.w = c.y;
    result.x = c.z;
    result.z = c.w;
    return result;
}
uint4 operator.ywxz=(uint4 v, uint4 c) {
    uint4 result = v;
    result.y = c.x;
    result.w = c.y;
    result.x = c.z;
    result.z = c.w;
    return result;
}
int4 operator.ywxz=(int4 v, int4 c) {
    int4 result = v;
    result.y = c.x;
    result.w = c.y;
    result.x = c.z;
    result.z = c.w;
    return result;
}
float4 operator.ywxz=(float4 v, float4 c) {
    float4 result = v;
    result.y = c.x;
    result.w = c.y;
    result.x = c.z;
    result.z = c.w;
    return result;
}

/* Functions named operator.ywwx */
bool4 operator.ywwx(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.w;
    result.w = v.x;
    return result;
}
uint4 operator.ywwx(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.w;
    result.w = v.x;
    return result;
}
int4 operator.ywwx(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.w;
    result.w = v.x;
    return result;
}
float4 operator.ywwx(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.w;
    result.w = v.x;
    return result;
}

/* Functions named operator.zyzw */
bool4 operator.zyzw(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    result.w = v.w;
    return result;
}
uint4 operator.zyzw(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    result.w = v.w;
    return result;
}
int4 operator.zyzw(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    result.w = v.w;
    return result;
}
float4 operator.zyzw(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    result.w = v.w;
    return result;
}

/* Functions named operator.zwwz */
bool4 operator.zwwz(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.w;
    result.w = v.z;
    return result;
}
uint4 operator.zwwz(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.w;
    result.w = v.z;
    return result;
}
int4 operator.zwwz(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.w;
    result.w = v.z;
    return result;
}
float4 operator.zwwz(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.w;
    result.w = v.z;
    return result;
}

/* Functions named operator.yyww */
bool4 operator.yyww(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.w;
    result.w = v.w;
    return result;
}
uint4 operator.yyww(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.w;
    result.w = v.w;
    return result;
}
int4 operator.yyww(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.w;
    result.w = v.w;
    return result;
}
float4 operator.yyww(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.w;
    result.w = v.w;
    return result;
}

/* Functions named operator<= */
native bool operator<=(int, int);
native bool operator<=(uint, uint);
native bool operator<=(float, float);

/* Functions named ddx_fine */
float ddx_fine(float x) {
    return ddx(x);
}
float2 ddx_fine(float2 x) {
    float2 result;
    result[0] = ddx_fine(x[0]);
    result[1] = ddx_fine(x[1]);
    return result;
}
float3 ddx_fine(float3 x) {
    float3 result;
    result[0] = ddx_fine(x[0]);
    result[1] = ddx_fine(x[1]);
    result[2] = ddx_fine(x[2]);
    return result;
}
float4 ddx_fine(float4 x) {
    float4 result;
    result[0] = ddx_fine(x[0]);
    result[1] = ddx_fine(x[1]);
    result[2] = ddx_fine(x[2]);
    result[3] = ddx_fine(x[3]);
    return result;
}
float2x2 ddx_fine(float2x2 x) {
    float2x2 result;
    result[0][0] = ddx_fine(x[0][0]);
    result[0][1] = ddx_fine(x[0][1]);
    result[1][0] = ddx_fine(x[1][0]);
    result[1][1] = ddx_fine(x[1][1]);
    return result;
}
float2x3 ddx_fine(float2x3 x) {
    float2x3 result;
    result[0][0] = ddx_fine(x[0][0]);
    result[0][1] = ddx_fine(x[0][1]);
    result[0][2] = ddx_fine(x[0][2]);
    result[1][0] = ddx_fine(x[1][0]);
    result[1][1] = ddx_fine(x[1][1]);
    result[1][2] = ddx_fine(x[1][2]);
    return result;
}
float2x4 ddx_fine(float2x4 x) {
    float2x4 result;
    result[0][0] = ddx_fine(x[0][0]);
    result[0][1] = ddx_fine(x[0][1]);
    result[0][2] = ddx_fine(x[0][2]);
    result[0][3] = ddx_fine(x[0][3]);
    result[1][0] = ddx_fine(x[1][0]);
    result[1][1] = ddx_fine(x[1][1]);
    result[1][2] = ddx_fine(x[1][2]);
    result[1][3] = ddx_fine(x[1][3]);
    return result;
}
float3x2 ddx_fine(float3x2 x) {
    float3x2 result;
    result[0][0] = ddx_fine(x[0][0]);
    result[0][1] = ddx_fine(x[0][1]);
    result[1][0] = ddx_fine(x[1][0]);
    result[1][1] = ddx_fine(x[1][1]);
    result[2][0] = ddx_fine(x[2][0]);
    result[2][1] = ddx_fine(x[2][1]);
    return result;
}
float3x3 ddx_fine(float3x3 x) {
    float3x3 result;
    result[0][0] = ddx_fine(x[0][0]);
    result[0][1] = ddx_fine(x[0][1]);
    result[0][2] = ddx_fine(x[0][2]);
    result[1][0] = ddx_fine(x[1][0]);
    result[1][1] = ddx_fine(x[1][1]);
    result[1][2] = ddx_fine(x[1][2]);
    result[2][0] = ddx_fine(x[2][0]);
    result[2][1] = ddx_fine(x[2][1]);
    result[2][2] = ddx_fine(x[2][2]);
    return result;
}
float3x4 ddx_fine(float3x4 x) {
    float3x4 result;
    result[0][0] = ddx_fine(x[0][0]);
    result[0][1] = ddx_fine(x[0][1]);
    result[0][2] = ddx_fine(x[0][2]);
    result[0][3] = ddx_fine(x[0][3]);
    result[1][0] = ddx_fine(x[1][0]);
    result[1][1] = ddx_fine(x[1][1]);
    result[1][2] = ddx_fine(x[1][2]);
    result[1][3] = ddx_fine(x[1][3]);
    result[2][0] = ddx_fine(x[2][0]);
    result[2][1] = ddx_fine(x[2][1]);
    result[2][2] = ddx_fine(x[2][2]);
    result[2][3] = ddx_fine(x[2][3]);
    return result;
}
float4x2 ddx_fine(float4x2 x) {
    float4x2 result;
    result[0][0] = ddx_fine(x[0][0]);
    result[0][1] = ddx_fine(x[0][1]);
    result[1][0] = ddx_fine(x[1][0]);
    result[1][1] = ddx_fine(x[1][1]);
    result[2][0] = ddx_fine(x[2][0]);
    result[2][1] = ddx_fine(x[2][1]);
    result[3][0] = ddx_fine(x[3][0]);
    result[3][1] = ddx_fine(x[3][1]);
    return result;
}
float4x3 ddx_fine(float4x3 x) {
    float4x3 result;
    result[0][0] = ddx_fine(x[0][0]);
    result[0][1] = ddx_fine(x[0][1]);
    result[0][2] = ddx_fine(x[0][2]);
    result[1][0] = ddx_fine(x[1][0]);
    result[1][1] = ddx_fine(x[1][1]);
    result[1][2] = ddx_fine(x[1][2]);
    result[2][0] = ddx_fine(x[2][0]);
    result[2][1] = ddx_fine(x[2][1]);
    result[2][2] = ddx_fine(x[2][2]);
    result[3][0] = ddx_fine(x[3][0]);
    result[3][1] = ddx_fine(x[3][1]);
    result[3][2] = ddx_fine(x[3][2]);
    return result;
}
float4x4 ddx_fine(float4x4 x) {
    float4x4 result;
    result[0][0] = ddx_fine(x[0][0]);
    result[0][1] = ddx_fine(x[0][1]);
    result[0][2] = ddx_fine(x[0][2]);
    result[0][3] = ddx_fine(x[0][3]);
    result[1][0] = ddx_fine(x[1][0]);
    result[1][1] = ddx_fine(x[1][1]);
    result[1][2] = ddx_fine(x[1][2]);
    result[1][3] = ddx_fine(x[1][3]);
    result[2][0] = ddx_fine(x[2][0]);
    result[2][1] = ddx_fine(x[2][1]);
    result[2][2] = ddx_fine(x[2][2]);
    result[2][3] = ddx_fine(x[2][3]);
    result[3][0] = ddx_fine(x[3][0]);
    result[3][1] = ddx_fine(x[3][1]);
    result[3][2] = ddx_fine(x[3][2]);
    result[3][3] = ddx_fine(x[3][3]);
    return result;
}

/* Functions named operator.xwx */
bool3 operator.xwx(bool4 v) {
    bool3 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.x;
    return result;
}
uint3 operator.xwx(uint4 v) {
    uint3 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.x;
    return result;
}
int3 operator.xwx(int4 v) {
    int3 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.x;
    return result;
}
float3 operator.xwx(float4 v) {
    float3 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.x;
    return result;
}

/* Functions named operator cast */
native operator uint(int);
native operator uint(float);
native operator int(uint);
native operator int(float);
native operator float(uint);
native operator float(int);

operator int(bool x) {
    return x ? 1 : 0;
}
operator bool(uint x) {
    return x != 0;
}
operator bool(int x) {
    return x != 0;
}
operator bool(float x) {
    return x != 0;
}

operator bool2(bool x, bool y) {
    bool2 result;
    result.x = x;
    result.y = y;
    return result;
}
operator bool3(bool x, bool y, bool z) {
    bool3 result;
    result.x = x;
    result.y = y;
    result.z = z;
    return result;
}
operator bool3(bool2 x, bool y) {
    bool3 result;
    result.x = x.x;
    result.y = x.y;
    result.z = y;
    return result;
}
operator bool3(bool x, bool2 y) {
    bool3 result;
    result.x = x;
    result.y = y.x;
    result.z = y.y;
    return result;
}
operator bool4(bool x, bool y, bool z, bool w) {
    bool4 result;
    result.x = x;
    result.y = y;
    result.z = z;
    result.w = w;
    return result;
}
operator bool4(bool2 x, bool y, bool z) {
    bool4 result;
    result.x = x.x;
    result.y = x.y;
    result.z = y;
    result.w = z;
    return result;
}
operator bool4(bool x, bool2 y, bool z) {
    bool4 result;
    result.x = x;
    result.y = y.x;
    result.z = y.y;
    result.w = z;
    return result;
}
operator bool4(bool x, bool y, bool2 z) {
    bool4 result;
    result.x = x;
    result.y = y;
    result.z = z.x;
    result.w = z.y;
    return result;
}
operator bool4(bool2 x, bool2 y) {
    bool4 result;
    result.x = x.x;
    result.y = x.y;
    result.z = y.x;
    result.w = y.y;
    return result;
}
operator bool4(bool3 x, bool y) {
    bool4 result;
    result.x = x.x;
    result.y = x.y;
    result.z = x.z;
    result.w = y;
    return result;
}
operator bool4(bool x, bool3 y) {
    bool4 result;
    result.x = x;
    result.y = y.x;
    result.z = y.y;
    result.w = y.z;
    return result;
}
operator uint2(uint x, uint y) {
    uint2 result;
    result.x = x;
    result.y = y;
    return result;
}
operator uint3(uint x, uint y, uint z) {
    uint3 result;
    result.x = x;
    result.y = y;
    result.z = z;
    return result;
}
operator uint3(uint2 x, uint y) {
    uint3 result;
    result.x = x.x;
    result.y = x.y;
    result.z = y;
    return result;
}
operator uint3(uint x, uint2 y) {
    uint3 result;
    result.x = x;
    result.y = y.x;
    result.z = y.y;
    return result;
}
operator uint4(uint x, uint y, uint z, uint w) {
    uint4 result;
    result.x = x;
    result.y = y;
    result.z = z;
    result.w = w;
    return result;
}
operator uint4(uint2 x, uint y, uint z) {
    uint4 result;
    result.x = x.x;
    result.y = x.y;
    result.z = y;
    result.w = z;
    return result;
}
operator uint4(uint x, uint2 y, uint z) {
    uint4 result;
    result.x = x;
    result.y = y.x;
    result.z = y.y;
    result.w = z;
    return result;
}
operator uint4(uint x, uint y, uint2 z) {
    uint4 result;
    result.x = x;
    result.y = y;
    result.z = z.x;
    result.w = z.y;
    return result;
}
operator uint4(uint2 x, uint2 y) {
    uint4 result;
    result.x = x.x;
    result.y = x.y;
    result.z = y.x;
    result.w = y.y;
    return result;
}
operator uint4(uint3 x, uint y) {
    uint4 result;
    result.x = x.x;
    result.y = x.y;
    result.z = x.z;
    result.w = y;
    return result;
}
operator uint4(uint x, uint3 y) {
    uint4 result;
    result.x = x;
    result.y = y.x;
    result.z = y.y;
    result.w = y.z;
    return result;
}
operator int2(int x, int y) {
    int2 result;
    result.x = x;
    result.y = y;
    return result;
}
operator int3(int x, int y, int z) {
    int3 result;
    result.x = x;
    result.y = y;
    result.z = z;
    return result;
}
operator int3(int2 x, int y) {
    int3 result;
    result.x = x.x;
    result.y = x.y;
    result.z = y;
    return result;
}
operator int3(int x, int2 y) {
    int3 result;
    result.x = x;
    result.y = y.x;
    result.z = y.y;
    return result;
}
operator int4(int x, int y, int z, int w) {
    int4 result;
    result.x = x;
    result.y = y;
    result.z = z;
    result.w = w;
    return result;
}
operator int4(int2 x, int y, int z) {
    int4 result;
    result.x = x.x;
    result.y = x.y;
    result.z = y;
    result.w = z;
    return result;
}
operator int4(int x, int2 y, int z) {
    int4 result;
    result.x = x;
    result.y = y.x;
    result.z = y.y;
    result.w = z;
    return result;
}
operator int4(int x, int y, int2 z) {
    int4 result;
    result.x = x;
    result.y = y;
    result.z = z.x;
    result.w = z.y;
    return result;
}
operator int4(int2 x, int2 y) {
    int4 result;
    result.x = x.x;
    result.y = x.y;
    result.z = y.x;
    result.w = y.y;
    return result;
}
operator int4(int3 x, int y) {
    int4 result;
    result.x = x.x;
    result.y = x.y;
    result.z = x.z;
    result.w = y;
    return result;
}
operator int4(int x, int3 y) {
    int4 result;
    result.x = x;
    result.y = y.x;
    result.z = y.y;
    result.w = y.z;
    return result;
}
operator float2(float x, float y) {
    float2 result;
    result.x = x;
    result.y = y;
    return result;
}
operator float3(float x, float y, float z) {
    float3 result;
    result.x = x;
    result.y = y;
    result.z = z;
    return result;
}
operator float3(float2 x, float y) {
    float3 result;
    result.x = x.x;
    result.y = x.y;
    result.z = y;
    return result;
}
operator float3(float x, float2 y) {
    float3 result;
    result.x = x;
    result.y = y.x;
    result.z = y.y;
    return result;
}
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;
}
operator float4(float2 x, float y, float z) {
    float4 result;
    result.x = x.x;
    result.y = x.y;
    result.z = y;
    result.w = z;
    return result;
}
operator float4(float x, float2 y, float z) {
    float4 result;
    result.x = x;
    result.y = y.x;
    result.z = y.y;
    result.w = z;
    return result;
}
operator float4(float x, float y, float2 z) {
    float4 result;
    result.x = x;
    result.y = y;
    result.z = z.x;
    result.w = z.y;
    return result;
}
operator float4(float2 x, float2 y) {
    float4 result;
    result.x = x.x;
    result.y = x.y;
    result.z = y.x;
    result.w = y.y;
    return result;
}
operator float4(float3 x, float y) {
    float4 result;
    result.x = x.x;
    result.y = x.y;
    result.z = x.z;
    result.w = y;
    return result;
}
operator float4(float x, float3 y) {
    float4 result;
    result.x = x;
    result.y = y.x;
    result.z = y.y;
    result.w = y.z;
    return result;
}
operator float2x2(float2 a, float2 b) {
    float2x2 result;
    result[0] = a;
    result[1] = b;
    return result;
}
operator float2x3(float3 a, float3 b) {
    float2x3 result;
    result[0] = a;
    result[1] = b;
    return result;
}
operator float2x4(float4 a, float4 b) {
    float2x4 result;
    result[0] = a;
    result[1] = b;
    return result;
}
operator float3x2(float2 a, float2 b, float2 c) {
    float3x2 result;
    result[0] = a;
    result[1] = b;
    result[2] = c;
    return result;
}
operator float3x3(float3 a, float3 b, float3 c) {
    float3x3 result;
    result[0] = a;
    result[1] = b;
    result[2] = c;
    return result;
}
operator float3x4(float4 a, float4 b, float4 c) {
    float3x4 result;
    result[0] = a;
    result[1] = b;
    result[2] = c;
    return result;
}
operator float4x2(float2 a, float2 b, float2 c, float2 d) {
    float4x2 result;
    result[0] = a;
    result[1] = b;
    result[2] = c;
    result[3] = d;
    return result;
}
operator float4x3(float3 a, float3 b, float3 c, float3 d) {
    float4x3 result;
    result[0] = a;
    result[1] = b;
    result[2] = c;
    result[3] = d;
    return result;
}
operator float4x4(float4 a, float4 b, float4 c, float4 d) {
    float4x4 result;
    result[0] = a;
    result[1] = b;
    result[2] = c;
    result[3] = d;
    return result;
}


/* Functions named operator.wyx */
bool3 operator.wyx(bool4 v) {
    bool3 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.x;
    return result;
}
uint3 operator.wyx(uint4 v) {
    uint3 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.x;
    return result;
}
int3 operator.wyx(int4 v) {
    int3 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.x;
    return result;
}
float3 operator.wyx(float4 v) {
    float3 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.x;
    return result;
}

/* Functions named load */
native int load(device atomic_int*);
native uint load(device atomic_uint*);
native int load(threadgroup atomic_int*);
native uint load(threadgroup atomic_uint*);

/* Functions named operator.xxxx */
bool4 operator.xxxx(bool2 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
bool4 operator.xxxx(bool3 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
bool4 operator.xxxx(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
uint4 operator.xxxx(uint2 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
uint4 operator.xxxx(uint3 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
uint4 operator.xxxx(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
int4 operator.xxxx(int2 v) {
    int4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
int4 operator.xxxx(int3 v) {
    int4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
int4 operator.xxxx(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
float4 operator.xxxx(float2 v) {
    float4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
float4 operator.xxxx(float3 v) {
    float4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
float4 operator.xxxx(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}

/* Functions named operator.zyxz */
bool4 operator.zyxz(bool3 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    result.w = v.z;
    return result;
}
bool4 operator.zyxz(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    result.w = v.z;
    return result;
}
uint4 operator.zyxz(uint3 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    result.w = v.z;
    return result;
}
uint4 operator.zyxz(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    result.w = v.z;
    return result;
}
int4 operator.zyxz(int3 v) {
    int4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    result.w = v.z;
    return result;
}
int4 operator.zyxz(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    result.w = v.z;
    return result;
}
float4 operator.zyxz(float3 v) {
    float4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    result.w = v.z;
    return result;
}
float4 operator.zyxz(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    result.w = v.z;
    return result;
}

/* Functions named operator.xz= */
bool3 operator.xz=(bool3 v, bool2 c) {
    bool3 result = v;
    result.x = c.x;
    result.z = c.y;
    return result;
}
bool4 operator.xz=(bool4 v, bool2 c) {
    bool4 result = v;
    result.x = c.x;
    result.z = c.y;
    return result;
}
uint3 operator.xz=(uint3 v, uint2 c) {
    uint3 result = v;
    result.x = c.x;
    result.z = c.y;
    return result;
}
uint4 operator.xz=(uint4 v, uint2 c) {
    uint4 result = v;
    result.x = c.x;
    result.z = c.y;
    return result;
}
int3 operator.xz=(int3 v, int2 c) {
    int3 result = v;
    result.x = c.x;
    result.z = c.y;
    return result;
}
int4 operator.xz=(int4 v, int2 c) {
    int4 result = v;
    result.x = c.x;
    result.z = c.y;
    return result;
}
float3 operator.xz=(float3 v, float2 c) {
    float3 result = v;
    result.x = c.x;
    result.z = c.y;
    return result;
}
float4 operator.xz=(float4 v, float2 c) {
    float4 result = v;
    result.x = c.x;
    result.z = c.y;
    return result;
}

/* Functions named operator.zyxw */
bool4 operator.zyxw(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    result.w = v.w;
    return result;
}
uint4 operator.zyxw(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    result.w = v.w;
    return result;
}
int4 operator.zyxw(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    result.w = v.w;
    return result;
}
float4 operator.zyxw(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    result.w = v.w;
    return result;
}

/* Functions named operator.zz */
bool2 operator.zz(bool3 v) {
    bool2 result;
    result.x = v.z;
    result.y = v.z;
    return result;
}
bool2 operator.zz(bool4 v) {
    bool2 result;
    result.x = v.z;
    result.y = v.z;
    return result;
}
uint2 operator.zz(uint3 v) {
    uint2 result;
    result.x = v.z;
    result.y = v.z;
    return result;
}
uint2 operator.zz(uint4 v) {
    uint2 result;
    result.x = v.z;
    result.y = v.z;
    return result;
}
int2 operator.zz(int3 v) {
    int2 result;
    result.x = v.z;
    result.y = v.z;
    return result;
}
int2 operator.zz(int4 v) {
    int2 result;
    result.x = v.z;
    result.y = v.z;
    return result;
}
float2 operator.zz(float3 v) {
    float2 result;
    result.x = v.z;
    result.y = v.z;
    return result;
}
float2 operator.zz(float4 v) {
    float2 result;
    result.x = v.z;
    result.y = v.z;
    return result;
}

/* Functions named operator.wxzz */
bool4 operator.wxzz(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.z;
    result.w = v.z;
    return result;
}
uint4 operator.wxzz(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.z;
    result.w = v.z;
    return result;
}
int4 operator.wxzz(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.z;
    result.w = v.z;
    return result;
}
float4 operator.wxzz(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.z;
    result.w = v.z;
    return result;
}

/* Functions named operator.wzwy */
bool4 operator.wzwy(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.w;
    result.w = v.y;
    return result;
}
uint4 operator.wzwy(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.w;
    result.w = v.y;
    return result;
}
int4 operator.wzwy(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.w;
    result.w = v.y;
    return result;
}
float4 operator.wzwy(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.w;
    result.w = v.y;
    return result;
}

/* Functions named operator.wyzy */
bool4 operator.wyzy(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.z;
    result.w = v.y;
    return result;
}
uint4 operator.wyzy(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.z;
    result.w = v.y;
    return result;
}
int4 operator.wyzy(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.z;
    result.w = v.y;
    return result;
}
float4 operator.wyzy(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.z;
    result.w = v.y;
    return result;
}

/* Functions named operator.xwxx */
bool4 operator.xwxx(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.x;
    result.w = v.x;
    return result;
}
uint4 operator.xwxx(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.x;
    result.w = v.x;
    return result;
}
int4 operator.xwxx(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.x;
    result.w = v.x;
    return result;
}
float4 operator.xwxx(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.x;
    result.w = v.x;
    return result;
}

/* Functions named operator.xyy */
bool3 operator.xyy(bool2 v) {
    bool3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    return result;
}
bool3 operator.xyy(bool3 v) {
    bool3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    return result;
}
bool3 operator.xyy(bool4 v) {
    bool3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    return result;
}
uint3 operator.xyy(uint2 v) {
    uint3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    return result;
}
uint3 operator.xyy(uint3 v) {
    uint3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    return result;
}
uint3 operator.xyy(uint4 v) {
    uint3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    return result;
}
int3 operator.xyy(int2 v) {
    int3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    return result;
}
int3 operator.xyy(int3 v) {
    int3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    return result;
}
int3 operator.xyy(int4 v) {
    int3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    return result;
}
float3 operator.xyy(float2 v) {
    float3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    return result;
}
float3 operator.xyy(float3 v) {
    float3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    return result;
}
float3 operator.xyy(float4 v) {
    float3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    return result;
}

/* Functions named operator.wzxy= */
bool4 operator.wzxy=(bool4 v, bool4 c) {
    bool4 result = v;
    result.w = c.x;
    result.z = c.y;
    result.x = c.z;
    result.y = c.w;
    return result;
}
uint4 operator.wzxy=(uint4 v, uint4 c) {
    uint4 result = v;
    result.w = c.x;
    result.z = c.y;
    result.x = c.z;
    result.y = c.w;
    return result;
}
int4 operator.wzxy=(int4 v, int4 c) {
    int4 result = v;
    result.w = c.x;
    result.z = c.y;
    result.x = c.z;
    result.y = c.w;
    return result;
}
float4 operator.wzxy=(float4 v, float4 c) {
    float4 result = v;
    result.w = c.x;
    result.z = c.y;
    result.x = c.z;
    result.y = c.w;
    return result;
}

/* Functions named operator.zw */
bool2 operator.zw(bool4 v) {
    bool2 result;
    result.x = v.z;
    result.y = v.w;
    return result;
}
uint2 operator.zw(uint4 v) {
    uint2 result;
    result.x = v.z;
    result.y = v.w;
    return result;
}
int2 operator.zw(int4 v) {
    int2 result;
    result.x = v.z;
    result.y = v.w;
    return result;
}
float2 operator.zw(float4 v) {
    float2 result;
    result.x = v.z;
    result.y = v.w;
    return result;
}

/* Functions named operator.xxz */
bool3 operator.xxz(bool3 v) {
    bool3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    return result;
}
bool3 operator.xxz(bool4 v) {
    bool3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    return result;
}
uint3 operator.xxz(uint3 v) {
    uint3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    return result;
}
uint3 operator.xxz(uint4 v) {
    uint3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    return result;
}
int3 operator.xxz(int3 v) {
    int3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    return result;
}
int3 operator.xxz(int4 v) {
    int3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    return result;
}
float3 operator.xxz(float3 v) {
    float3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    return result;
}
float3 operator.xxz(float4 v) {
    float3 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    return result;
}

/* Functions named operator.yxy */
bool3 operator.yxy(bool2 v) {
    bool3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    return result;
}
bool3 operator.yxy(bool3 v) {
    bool3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    return result;
}
bool3 operator.yxy(bool4 v) {
    bool3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    return result;
}
uint3 operator.yxy(uint2 v) {
    uint3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    return result;
}
uint3 operator.yxy(uint3 v) {
    uint3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    return result;
}
uint3 operator.yxy(uint4 v) {
    uint3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    return result;
}
int3 operator.yxy(int2 v) {
    int3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    return result;
}
int3 operator.yxy(int3 v) {
    int3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    return result;
}
int3 operator.yxy(int4 v) {
    int3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    return result;
}
float3 operator.yxy(float2 v) {
    float3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    return result;
}
float3 operator.yxy(float3 v) {
    float3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    return result;
}
float3 operator.yxy(float4 v) {
    float3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    return result;
}

/* Functions named count_bits */

/* Functions named operator.yyz */
bool3 operator.yyz(bool3 v) {
    bool3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    return result;
}
bool3 operator.yyz(bool4 v) {
    bool3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    return result;
}
uint3 operator.yyz(uint3 v) {
    uint3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    return result;
}
uint3 operator.yyz(uint4 v) {
    uint3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    return result;
}
int3 operator.yyz(int3 v) {
    int3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    return result;
}
int3 operator.yyz(int4 v) {
    int3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    return result;
}
float3 operator.yyz(float3 v) {
    float3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    return result;
}
float3 operator.yyz(float4 v) {
    float3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    return result;
}

/* Functions named operator.wx */
bool2 operator.wx(bool4 v) {
    bool2 result;
    result.x = v.w;
    result.y = v.x;
    return result;
}
uint2 operator.wx(uint4 v) {
    uint2 result;
    result.x = v.w;
    result.y = v.x;
    return result;
}
int2 operator.wx(int4 v) {
    int2 result;
    result.x = v.w;
    result.y = v.x;
    return result;
}
float2 operator.wx(float4 v) {
    float2 result;
    result.x = v.w;
    result.y = v.x;
    return result;
}

/* Functions named operator.yxwz= */
bool4 operator.yxwz=(bool4 v, bool4 c) {
    bool4 result = v;
    result.y = c.x;
    result.x = c.y;
    result.w = c.z;
    result.z = c.w;
    return result;
}
uint4 operator.yxwz=(uint4 v, uint4 c) {
    uint4 result = v;
    result.y = c.x;
    result.x = c.y;
    result.w = c.z;
    result.z = c.w;
    return result;
}
int4 operator.yxwz=(int4 v, int4 c) {
    int4 result = v;
    result.y = c.x;
    result.x = c.y;
    result.w = c.z;
    result.z = c.w;
    return result;
}
float4 operator.yxwz=(float4 v, float4 c) {
    float4 result = v;
    result.y = c.x;
    result.x = c.y;
    result.w = c.z;
    result.z = c.w;
    return result;
}

/* Functions named operator.xx */
bool2 operator.xx(bool2 v) {
    bool2 result;
    result.x = v.x;
    result.y = v.x;
    return result;
}
bool2 operator.xx(bool3 v) {
    bool2 result;
    result.x = v.x;
    result.y = v.x;
    return result;
}
bool2 operator.xx(bool4 v) {
    bool2 result;
    result.x = v.x;
    result.y = v.x;
    return result;
}
uint2 operator.xx(uint2 v) {
    uint2 result;
    result.x = v.x;
    result.y = v.x;
    return result;
}
uint2 operator.xx(uint3 v) {
    uint2 result;
    result.x = v.x;
    result.y = v.x;
    return result;
}
uint2 operator.xx(uint4 v) {
    uint2 result;
    result.x = v.x;
    result.y = v.x;
    return result;
}
int2 operator.xx(int2 v) {
    int2 result;
    result.x = v.x;
    result.y = v.x;
    return result;
}
int2 operator.xx(int3 v) {
    int2 result;
    result.x = v.x;
    result.y = v.x;
    return result;
}
int2 operator.xx(int4 v) {
    int2 result;
    result.x = v.x;
    result.y = v.x;
    return result;
}
float2 operator.xx(float2 v) {
    float2 result;
    result.x = v.x;
    result.y = v.x;
    return result;
}
float2 operator.xx(float3 v) {
    float2 result;
    result.x = v.x;
    result.y = v.x;
    return result;
}
float2 operator.xx(float4 v) {
    float2 result;
    result.x = v.x;
    result.y = v.x;
    return result;
}

/* Functions named operator.wzyw */
bool4 operator.wzyw(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.y;
    result.w = v.w;
    return result;
}
uint4 operator.wzyw(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.y;
    result.w = v.w;
    return result;
}
int4 operator.wzyw(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.y;
    result.w = v.w;
    return result;
}
float4 operator.wzyw(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.y;
    result.w = v.w;
    return result;
}

/* Functions named operator.zxzy */
bool4 operator.zxzy(bool3 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    result.w = v.y;
    return result;
}
bool4 operator.zxzy(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    result.w = v.y;
    return result;
}
uint4 operator.zxzy(uint3 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    result.w = v.y;
    return result;
}
uint4 operator.zxzy(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    result.w = v.y;
    return result;
}
int4 operator.zxzy(int3 v) {
    int4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    result.w = v.y;
    return result;
}
int4 operator.zxzy(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    result.w = v.y;
    return result;
}
float4 operator.zxzy(float3 v) {
    float4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    result.w = v.y;
    return result;
}
float4 operator.zxzy(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    result.w = v.y;
    return result;
}

/* Functions named operator.zwxx */
bool4 operator.zwxx(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.x;
    result.w = v.x;
    return result;
}
uint4 operator.zwxx(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.x;
    result.w = v.x;
    return result;
}
int4 operator.zwxx(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.x;
    result.w = v.x;
    return result;
}
float4 operator.zwxx(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.x;
    result.w = v.x;
    return result;
}

/* Functions named rsqrt */
float rsqrt(float x) {
    return 1 / sqrt(x);
}
float2 rsqrt(float2 x) {
    float2 result;
    result[0] = rsqrt(x[0]);
    result[1] = rsqrt(x[1]);
    return result;
}
float3 rsqrt(float3 x) {
    float3 result;
    result[0] = rsqrt(x[0]);
    result[1] = rsqrt(x[1]);
    result[2] = rsqrt(x[2]);
    return result;
}
float4 rsqrt(float4 x) {
    float4 result;
    result[0] = rsqrt(x[0]);
    result[1] = rsqrt(x[1]);
    result[2] = rsqrt(x[2]);
    result[3] = rsqrt(x[3]);
    return result;
}
float2x2 rsqrt(float2x2 x) {
    float2x2 result;
    result[0][0] = rsqrt(x[0][0]);
    result[0][1] = rsqrt(x[0][1]);
    result[1][0] = rsqrt(x[1][0]);
    result[1][1] = rsqrt(x[1][1]);
    return result;
}
float2x3 rsqrt(float2x3 x) {
    float2x3 result;
    result[0][0] = rsqrt(x[0][0]);
    result[0][1] = rsqrt(x[0][1]);
    result[0][2] = rsqrt(x[0][2]);
    result[1][0] = rsqrt(x[1][0]);
    result[1][1] = rsqrt(x[1][1]);
    result[1][2] = rsqrt(x[1][2]);
    return result;
}
float2x4 rsqrt(float2x4 x) {
    float2x4 result;
    result[0][0] = rsqrt(x[0][0]);
    result[0][1] = rsqrt(x[0][1]);
    result[0][2] = rsqrt(x[0][2]);
    result[0][3] = rsqrt(x[0][3]);
    result[1][0] = rsqrt(x[1][0]);
    result[1][1] = rsqrt(x[1][1]);
    result[1][2] = rsqrt(x[1][2]);
    result[1][3] = rsqrt(x[1][3]);
    return result;
}
float3x2 rsqrt(float3x2 x) {
    float3x2 result;
    result[0][0] = rsqrt(x[0][0]);
    result[0][1] = rsqrt(x[0][1]);
    result[1][0] = rsqrt(x[1][0]);
    result[1][1] = rsqrt(x[1][1]);
    result[2][0] = rsqrt(x[2][0]);
    result[2][1] = rsqrt(x[2][1]);
    return result;
}
float3x3 rsqrt(float3x3 x) {
    float3x3 result;
    result[0][0] = rsqrt(x[0][0]);
    result[0][1] = rsqrt(x[0][1]);
    result[0][2] = rsqrt(x[0][2]);
    result[1][0] = rsqrt(x[1][0]);
    result[1][1] = rsqrt(x[1][1]);
    result[1][2] = rsqrt(x[1][2]);
    result[2][0] = rsqrt(x[2][0]);
    result[2][1] = rsqrt(x[2][1]);
    result[2][2] = rsqrt(x[2][2]);
    return result;
}
float3x4 rsqrt(float3x4 x) {
    float3x4 result;
    result[0][0] = rsqrt(x[0][0]);
    result[0][1] = rsqrt(x[0][1]);
    result[0][2] = rsqrt(x[0][2]);
    result[0][3] = rsqrt(x[0][3]);
    result[1][0] = rsqrt(x[1][0]);
    result[1][1] = rsqrt(x[1][1]);
    result[1][2] = rsqrt(x[1][2]);
    result[1][3] = rsqrt(x[1][3]);
    result[2][0] = rsqrt(x[2][0]);
    result[2][1] = rsqrt(x[2][1]);
    result[2][2] = rsqrt(x[2][2]);
    result[2][3] = rsqrt(x[2][3]);
    return result;
}
float4x2 rsqrt(float4x2 x) {
    float4x2 result;
    result[0][0] = rsqrt(x[0][0]);
    result[0][1] = rsqrt(x[0][1]);
    result[1][0] = rsqrt(x[1][0]);
    result[1][1] = rsqrt(x[1][1]);
    result[2][0] = rsqrt(x[2][0]);
    result[2][1] = rsqrt(x[2][1]);
    result[3][0] = rsqrt(x[3][0]);
    result[3][1] = rsqrt(x[3][1]);
    return result;
}
float4x3 rsqrt(float4x3 x) {
    float4x3 result;
    result[0][0] = rsqrt(x[0][0]);
    result[0][1] = rsqrt(x[0][1]);
    result[0][2] = rsqrt(x[0][2]);
    result[1][0] = rsqrt(x[1][0]);
    result[1][1] = rsqrt(x[1][1]);
    result[1][2] = rsqrt(x[1][2]);
    result[2][0] = rsqrt(x[2][0]);
    result[2][1] = rsqrt(x[2][1]);
    result[2][2] = rsqrt(x[2][2]);
    result[3][0] = rsqrt(x[3][0]);
    result[3][1] = rsqrt(x[3][1]);
    result[3][2] = rsqrt(x[3][2]);
    return result;
}
float4x4 rsqrt(float4x4 x) {
    float4x4 result;
    result[0][0] = rsqrt(x[0][0]);
    result[0][1] = rsqrt(x[0][1]);
    result[0][2] = rsqrt(x[0][2]);
    result[0][3] = rsqrt(x[0][3]);
    result[1][0] = rsqrt(x[1][0]);
    result[1][1] = rsqrt(x[1][1]);
    result[1][2] = rsqrt(x[1][2]);
    result[1][3] = rsqrt(x[1][3]);
    result[2][0] = rsqrt(x[2][0]);
    result[2][1] = rsqrt(x[2][1]);
    result[2][2] = rsqrt(x[2][2]);
    result[2][3] = rsqrt(x[2][3]);
    result[3][0] = rsqrt(x[3][0]);
    result[3][1] = rsqrt(x[3][1]);
    result[3][2] = rsqrt(x[3][2]);
    result[3][3] = rsqrt(x[3][3]);
    return result;
}

/* Functions named operator.z */
native bool operator.z(bool3);
native bool operator.z(bool4);
native uint operator.z(uint3);
native uint operator.z(uint4);
native int operator.z(int3);
native int operator.z(int4);
native float operator.z(float3);
native float operator.z(float4);

/* Functions named operator.wzyx= */
bool4 operator.wzyx=(bool4 v, bool4 c) {
    bool4 result = v;
    result.w = c.x;
    result.z = c.y;
    result.y = c.z;
    result.x = c.w;
    return result;
}
uint4 operator.wzyx=(uint4 v, uint4 c) {
    uint4 result = v;
    result.w = c.x;
    result.z = c.y;
    result.y = c.z;
    result.x = c.w;
    return result;
}
int4 operator.wzyx=(int4 v, int4 c) {
    int4 result = v;
    result.w = c.x;
    result.z = c.y;
    result.y = c.z;
    result.x = c.w;
    return result;
}
float4 operator.wzyx=(float4 v, float4 c) {
    float4 result = v;
    result.w = c.x;
    result.z = c.y;
    result.y = c.z;
    result.x = c.w;
    return result;
}

/* Functions named operator.yyxw */
bool4 operator.yyxw(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.w;
    return result;
}
uint4 operator.yyxw(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.w;
    return result;
}
int4 operator.yyxw(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.w;
    return result;
}
float4 operator.yyxw(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.w;
    return result;
}

/* Functions named operator.zwz */
bool3 operator.zwz(bool4 v) {
    bool3 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.z;
    return result;
}
uint3 operator.zwz(uint4 v) {
    uint3 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.z;
    return result;
}
int3 operator.zwz(int4 v) {
    int3 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.z;
    return result;
}
float3 operator.zwz(float4 v) {
    float3 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.z;
    return result;
}

/* Functions named operator.zywz */
bool4 operator.zywz(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.w;
    result.w = v.z;
    return result;
}
uint4 operator.zywz(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.w;
    result.w = v.z;
    return result;
}
int4 operator.zywz(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.w;
    result.w = v.z;
    return result;
}
float4 operator.zywz(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.w;
    result.w = v.z;
    return result;
}

/* Functions named operator.zyww */
bool4 operator.zyww(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.w;
    result.w = v.w;
    return result;
}
uint4 operator.zyww(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.w;
    result.w = v.w;
    return result;
}
int4 operator.zyww(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.w;
    result.w = v.w;
    return result;
}
float4 operator.zyww(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.w;
    result.w = v.w;
    return result;
}

/* Functions named operator.xwz= */
bool4 operator.xwz=(bool4 v, bool3 c) {
    bool4 result = v;
    result.x = c.x;
    result.w = c.y;
    result.z = c.z;
    return result;
}
uint4 operator.xwz=(uint4 v, uint3 c) {
    uint4 result = v;
    result.x = c.x;
    result.w = c.y;
    result.z = c.z;
    return result;
}
int4 operator.xwz=(int4 v, int3 c) {
    int4 result = v;
    result.x = c.x;
    result.w = c.y;
    result.z = c.z;
    return result;
}
float4 operator.xwz=(float4 v, float3 c) {
    float4 result = v;
    result.x = c.x;
    result.w = c.y;
    result.z = c.z;
    return result;
}

/* Functions named operator.xyxw */
bool4 operator.xyxw(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.w;
    return result;
}
uint4 operator.xyxw(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.w;
    return result;
}
int4 operator.xyxw(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.w;
    return result;
}
float4 operator.xyxw(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.w;
    return result;
}

/* Functions named operator.wzy= */
bool4 operator.wzy=(bool4 v, bool3 c) {
    bool4 result = v;
    result.w = c.x;
    result.z = c.y;
    result.y = c.z;
    return result;
}
uint4 operator.wzy=(uint4 v, uint3 c) {
    uint4 result = v;
    result.w = c.x;
    result.z = c.y;
    result.y = c.z;
    return result;
}
int4 operator.wzy=(int4 v, int3 c) {
    int4 result = v;
    result.w = c.x;
    result.z = c.y;
    result.y = c.z;
    return result;
}
float4 operator.wzy=(float4 v, float3 c) {
    float4 result = v;
    result.w = c.x;
    result.z = c.y;
    result.y = c.z;
    return result;
}

/* Functions named operator.xxzx */
bool4 operator.xxzx(bool3 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    result.w = v.x;
    return result;
}
bool4 operator.xxzx(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    result.w = v.x;
    return result;
}
uint4 operator.xxzx(uint3 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    result.w = v.x;
    return result;
}
uint4 operator.xxzx(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    result.w = v.x;
    return result;
}
int4 operator.xxzx(int3 v) {
    int4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    result.w = v.x;
    return result;
}
int4 operator.xxzx(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    result.w = v.x;
    return result;
}
float4 operator.xxzx(float3 v) {
    float4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    result.w = v.x;
    return result;
}
float4 operator.xxzx(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    result.w = v.x;
    return result;
}

/* Functions named operator.ywxz */
bool4 operator.ywxz(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.x;
    result.w = v.z;
    return result;
}
uint4 operator.ywxz(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.x;
    result.w = v.z;
    return result;
}
int4 operator.ywxz(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.x;
    result.w = v.z;
    return result;
}
float4 operator.ywxz(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.x;
    result.w = v.z;
    return result;
}

/* Functions named operator.xyxz */
bool4 operator.xyxz(bool3 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.z;
    return result;
}
bool4 operator.xyxz(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.z;
    return result;
}
uint4 operator.xyxz(uint3 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.z;
    return result;
}
uint4 operator.xyxz(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.z;
    return result;
}
int4 operator.xyxz(int3 v) {
    int4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.z;
    return result;
}
int4 operator.xyxz(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.z;
    return result;
}
float4 operator.xyxz(float3 v) {
    float4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.z;
    return result;
}
float4 operator.xyxz(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.z;
    return result;
}

/* Functions named sqrt */
float sqrt(float x) {
    return pow(x, 0.5);
}
float2 sqrt(float2 x) {
    float2 result;
    result[0] = sqrt(x[0]);
    result[1] = sqrt(x[1]);
    return result;
}
float3 sqrt(float3 x) {
    float3 result;
    result[0] = sqrt(x[0]);
    result[1] = sqrt(x[1]);
    result[2] = sqrt(x[2]);
    return result;
}
float4 sqrt(float4 x) {
    float4 result;
    result[0] = sqrt(x[0]);
    result[1] = sqrt(x[1]);
    result[2] = sqrt(x[2]);
    result[3] = sqrt(x[3]);
    return result;
}
float2x2 sqrt(float2x2 x) {
    float2x2 result;
    result[0][0] = sqrt(x[0][0]);
    result[0][1] = sqrt(x[0][1]);
    result[1][0] = sqrt(x[1][0]);
    result[1][1] = sqrt(x[1][1]);
    return result;
}
float2x3 sqrt(float2x3 x) {
    float2x3 result;
    result[0][0] = sqrt(x[0][0]);
    result[0][1] = sqrt(x[0][1]);
    result[0][2] = sqrt(x[0][2]);
    result[1][0] = sqrt(x[1][0]);
    result[1][1] = sqrt(x[1][1]);
    result[1][2] = sqrt(x[1][2]);
    return result;
}
float2x4 sqrt(float2x4 x) {
    float2x4 result;
    result[0][0] = sqrt(x[0][0]);
    result[0][1] = sqrt(x[0][1]);
    result[0][2] = sqrt(x[0][2]);
    result[0][3] = sqrt(x[0][3]);
    result[1][0] = sqrt(x[1][0]);
    result[1][1] = sqrt(x[1][1]);
    result[1][2] = sqrt(x[1][2]);
    result[1][3] = sqrt(x[1][3]);
    return result;
}
float3x2 sqrt(float3x2 x) {
    float3x2 result;
    result[0][0] = sqrt(x[0][0]);
    result[0][1] = sqrt(x[0][1]);
    result[1][0] = sqrt(x[1][0]);
    result[1][1] = sqrt(x[1][1]);
    result[2][0] = sqrt(x[2][0]);
    result[2][1] = sqrt(x[2][1]);
    return result;
}
float3x3 sqrt(float3x3 x) {
    float3x3 result;
    result[0][0] = sqrt(x[0][0]);
    result[0][1] = sqrt(x[0][1]);
    result[0][2] = sqrt(x[0][2]);
    result[1][0] = sqrt(x[1][0]);
    result[1][1] = sqrt(x[1][1]);
    result[1][2] = sqrt(x[1][2]);
    result[2][0] = sqrt(x[2][0]);
    result[2][1] = sqrt(x[2][1]);
    result[2][2] = sqrt(x[2][2]);
    return result;
}
float3x4 sqrt(float3x4 x) {
    float3x4 result;
    result[0][0] = sqrt(x[0][0]);
    result[0][1] = sqrt(x[0][1]);
    result[0][2] = sqrt(x[0][2]);
    result[0][3] = sqrt(x[0][3]);
    result[1][0] = sqrt(x[1][0]);
    result[1][1] = sqrt(x[1][1]);
    result[1][2] = sqrt(x[1][2]);
    result[1][3] = sqrt(x[1][3]);
    result[2][0] = sqrt(x[2][0]);
    result[2][1] = sqrt(x[2][1]);
    result[2][2] = sqrt(x[2][2]);
    result[2][3] = sqrt(x[2][3]);
    return result;
}
float4x2 sqrt(float4x2 x) {
    float4x2 result;
    result[0][0] = sqrt(x[0][0]);
    result[0][1] = sqrt(x[0][1]);
    result[1][0] = sqrt(x[1][0]);
    result[1][1] = sqrt(x[1][1]);
    result[2][0] = sqrt(x[2][0]);
    result[2][1] = sqrt(x[2][1]);
    result[3][0] = sqrt(x[3][0]);
    result[3][1] = sqrt(x[3][1]);
    return result;
}
float4x3 sqrt(float4x3 x) {
    float4x3 result;
    result[0][0] = sqrt(x[0][0]);
    result[0][1] = sqrt(x[0][1]);
    result[0][2] = sqrt(x[0][2]);
    result[1][0] = sqrt(x[1][0]);
    result[1][1] = sqrt(x[1][1]);
    result[1][2] = sqrt(x[1][2]);
    result[2][0] = sqrt(x[2][0]);
    result[2][1] = sqrt(x[2][1]);
    result[2][2] = sqrt(x[2][2]);
    result[3][0] = sqrt(x[3][0]);
    result[3][1] = sqrt(x[3][1]);
    result[3][2] = sqrt(x[3][2]);
    return result;
}
float4x4 sqrt(float4x4 x) {
    float4x4 result;
    result[0][0] = sqrt(x[0][0]);
    result[0][1] = sqrt(x[0][1]);
    result[0][2] = sqrt(x[0][2]);
    result[0][3] = sqrt(x[0][3]);
    result[1][0] = sqrt(x[1][0]);
    result[1][1] = sqrt(x[1][1]);
    result[1][2] = sqrt(x[1][2]);
    result[1][3] = sqrt(x[1][3]);
    result[2][0] = sqrt(x[2][0]);
    result[2][1] = sqrt(x[2][1]);
    result[2][2] = sqrt(x[2][2]);
    result[2][3] = sqrt(x[2][3]);
    result[3][0] = sqrt(x[3][0]);
    result[3][1] = sqrt(x[3][1]);
    result[3][2] = sqrt(x[3][2]);
    result[3][3] = sqrt(x[3][3]);
    return result;
}

/* Functions named acos */
native float acos(float);
float2 acos(float2 x) {
    float2 result;
    result[0] = acos(x[0]);
    result[1] = acos(x[1]);
    return result;
}
float3 acos(float3 x) {
    float3 result;
    result[0] = acos(x[0]);
    result[1] = acos(x[1]);
    result[2] = acos(x[2]);
    return result;
}
float4 acos(float4 x) {
    float4 result;
    result[0] = acos(x[0]);
    result[1] = acos(x[1]);
    result[2] = acos(x[2]);
    result[3] = acos(x[3]);
    return result;
}
float2x2 acos(float2x2 x) {
    float2x2 result;
    result[0][0] = acos(x[0][0]);
    result[0][1] = acos(x[0][1]);
    result[1][0] = acos(x[1][0]);
    result[1][1] = acos(x[1][1]);
    return result;
}
float2x3 acos(float2x3 x) {
    float2x3 result;
    result[0][0] = acos(x[0][0]);
    result[0][1] = acos(x[0][1]);
    result[0][2] = acos(x[0][2]);
    result[1][0] = acos(x[1][0]);
    result[1][1] = acos(x[1][1]);
    result[1][2] = acos(x[1][2]);
    return result;
}
float2x4 acos(float2x4 x) {
    float2x4 result;
    result[0][0] = acos(x[0][0]);
    result[0][1] = acos(x[0][1]);
    result[0][2] = acos(x[0][2]);
    result[0][3] = acos(x[0][3]);
    result[1][0] = acos(x[1][0]);
    result[1][1] = acos(x[1][1]);
    result[1][2] = acos(x[1][2]);
    result[1][3] = acos(x[1][3]);
    return result;
}
float3x2 acos(float3x2 x) {
    float3x2 result;
    result[0][0] = acos(x[0][0]);
    result[0][1] = acos(x[0][1]);
    result[1][0] = acos(x[1][0]);
    result[1][1] = acos(x[1][1]);
    result[2][0] = acos(x[2][0]);
    result[2][1] = acos(x[2][1]);
    return result;
}
float3x3 acos(float3x3 x) {
    float3x3 result;
    result[0][0] = acos(x[0][0]);
    result[0][1] = acos(x[0][1]);
    result[0][2] = acos(x[0][2]);
    result[1][0] = acos(x[1][0]);
    result[1][1] = acos(x[1][1]);
    result[1][2] = acos(x[1][2]);
    result[2][0] = acos(x[2][0]);
    result[2][1] = acos(x[2][1]);
    result[2][2] = acos(x[2][2]);
    return result;
}
float3x4 acos(float3x4 x) {
    float3x4 result;
    result[0][0] = acos(x[0][0]);
    result[0][1] = acos(x[0][1]);
    result[0][2] = acos(x[0][2]);
    result[0][3] = acos(x[0][3]);
    result[1][0] = acos(x[1][0]);
    result[1][1] = acos(x[1][1]);
    result[1][2] = acos(x[1][2]);
    result[1][3] = acos(x[1][3]);
    result[2][0] = acos(x[2][0]);
    result[2][1] = acos(x[2][1]);
    result[2][2] = acos(x[2][2]);
    result[2][3] = acos(x[2][3]);
    return result;
}
float4x2 acos(float4x2 x) {
    float4x2 result;
    result[0][0] = acos(x[0][0]);
    result[0][1] = acos(x[0][1]);
    result[1][0] = acos(x[1][0]);
    result[1][1] = acos(x[1][1]);
    result[2][0] = acos(x[2][0]);
    result[2][1] = acos(x[2][1]);
    result[3][0] = acos(x[3][0]);
    result[3][1] = acos(x[3][1]);
    return result;
}
float4x3 acos(float4x3 x) {
    float4x3 result;
    result[0][0] = acos(x[0][0]);
    result[0][1] = acos(x[0][1]);
    result[0][2] = acos(x[0][2]);
    result[1][0] = acos(x[1][0]);
    result[1][1] = acos(x[1][1]);
    result[1][2] = acos(x[1][2]);
    result[2][0] = acos(x[2][0]);
    result[2][1] = acos(x[2][1]);
    result[2][2] = acos(x[2][2]);
    result[3][0] = acos(x[3][0]);
    result[3][1] = acos(x[3][1]);
    result[3][2] = acos(x[3][2]);
    return result;
}
float4x4 acos(float4x4 x) {
    float4x4 result;
    result[0][0] = acos(x[0][0]);
    result[0][1] = acos(x[0][1]);
    result[0][2] = acos(x[0][2]);
    result[0][3] = acos(x[0][3]);
    result[1][0] = acos(x[1][0]);
    result[1][1] = acos(x[1][1]);
    result[1][2] = acos(x[1][2]);
    result[1][3] = acos(x[1][3]);
    result[2][0] = acos(x[2][0]);
    result[2][1] = acos(x[2][1]);
    result[2][2] = acos(x[2][2]);
    result[2][3] = acos(x[2][3]);
    result[3][0] = acos(x[3][0]);
    result[3][1] = acos(x[3][1]);
    result[3][2] = acos(x[3][2]);
    result[3][3] = acos(x[3][3]);
    return result;
}

/* Functions named operator.xyww */
bool4 operator.xyww(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.w;
    result.w = v.w;
    return result;
}
uint4 operator.xyww(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.w;
    result.w = v.w;
    return result;
}
int4 operator.xyww(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.w;
    result.w = v.w;
    return result;
}
float4 operator.xyww(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.w;
    result.w = v.w;
    return result;
}

/* Functions named operator> */
native bool operator>(int, int);
native bool operator>(uint, uint);
native bool operator>(float, float);

/* Functions named operator& */
bool operator&(bool a, bool b) {
    return a && b;
}
native int operator&(int, int);
native uint operator&(uint, uint);

/* Functions named operator.zxyz */
bool4 operator.zxyz(bool3 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    result.w = v.z;
    return result;
}
bool4 operator.zxyz(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    result.w = v.z;
    return result;
}
uint4 operator.zxyz(uint3 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    result.w = v.z;
    return result;
}
uint4 operator.zxyz(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    result.w = v.z;
    return result;
}
int4 operator.zxyz(int3 v) {
    int4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    result.w = v.z;
    return result;
}
int4 operator.zxyz(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    result.w = v.z;
    return result;
}
float4 operator.zxyz(float3 v) {
    float4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    result.w = v.z;
    return result;
}
float4 operator.zxyz(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    result.w = v.z;
    return result;
}

/* Functions named operator.zyzy */
bool4 operator.zyzy(bool3 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    result.w = v.y;
    return result;
}
bool4 operator.zyzy(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    result.w = v.y;
    return result;
}
uint4 operator.zyzy(uint3 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    result.w = v.y;
    return result;
}
uint4 operator.zyzy(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    result.w = v.y;
    return result;
}
int4 operator.zyzy(int3 v) {
    int4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    result.w = v.y;
    return result;
}
int4 operator.zyzy(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    result.w = v.y;
    return result;
}
float4 operator.zyzy(float3 v) {
    float4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    result.w = v.y;
    return result;
}
float4 operator.zyzy(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    result.w = v.y;
    return result;
}

/* Functions named operator.yxyw */
bool4 operator.yxyw(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.w;
    return result;
}
uint4 operator.yxyw(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.w;
    return result;
}
int4 operator.yxyw(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.w;
    return result;
}
float4 operator.yxyw(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.w;
    return result;
}

/* Functions named operator.zwxz */
bool4 operator.zwxz(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.x;
    result.w = v.z;
    return result;
}
uint4 operator.zwxz(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.x;
    result.w = v.z;
    return result;
}
int4 operator.zwxz(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.x;
    result.w = v.z;
    return result;
}
float4 operator.zwxz(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.x;
    result.w = v.z;
    return result;
}

/* Functions named operator.wwxy */
bool4 operator.wwxy(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.x;
    result.w = v.y;
    return result;
}
uint4 operator.wwxy(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.x;
    result.w = v.y;
    return result;
}
int4 operator.wwxy(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.x;
    result.w = v.y;
    return result;
}
float4 operator.wwxy(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.x;
    result.w = v.y;
    return result;
}

/* Functions named operator.yx */
bool2 operator.yx(bool2 v) {
    bool2 result;
    result.x = v.y;
    result.y = v.x;
    return result;
}
bool2 operator.yx(bool3 v) {
    bool2 result;
    result.x = v.y;
    result.y = v.x;
    return result;
}
bool2 operator.yx(bool4 v) {
    bool2 result;
    result.x = v.y;
    result.y = v.x;
    return result;
}
uint2 operator.yx(uint2 v) {
    uint2 result;
    result.x = v.y;
    result.y = v.x;
    return result;
}
uint2 operator.yx(uint3 v) {
    uint2 result;
    result.x = v.y;
    result.y = v.x;
    return result;
}
uint2 operator.yx(uint4 v) {
    uint2 result;
    result.x = v.y;
    result.y = v.x;
    return result;
}
int2 operator.yx(int2 v) {
    int2 result;
    result.x = v.y;
    result.y = v.x;
    return result;
}
int2 operator.yx(int3 v) {
    int2 result;
    result.x = v.y;
    result.y = v.x;
    return result;
}
int2 operator.yx(int4 v) {
    int2 result;
    result.x = v.y;
    result.y = v.x;
    return result;
}
float2 operator.yx(float2 v) {
    float2 result;
    result.x = v.y;
    result.y = v.x;
    return result;
}
float2 operator.yx(float3 v) {
    float2 result;
    result.x = v.y;
    result.y = v.x;
    return result;
}
float2 operator.yx(float4 v) {
    float2 result;
    result.x = v.y;
    result.y = v.x;
    return result;
}

/* Functions named tanh */
native float tanh(float);
float2 tanh(float2 x) {
    float2 result;
    result[0] = tanh(x[0]);
    result[1] = tanh(x[1]);
    return result;
}
float3 tanh(float3 x) {
    float3 result;
    result[0] = tanh(x[0]);
    result[1] = tanh(x[1]);
    result[2] = tanh(x[2]);
    return result;
}
float4 tanh(float4 x) {
    float4 result;
    result[0] = tanh(x[0]);
    result[1] = tanh(x[1]);
    result[2] = tanh(x[2]);
    result[3] = tanh(x[3]);
    return result;
}
float2x2 tanh(float2x2 x) {
    float2x2 result;
    result[0][0] = tanh(x[0][0]);
    result[0][1] = tanh(x[0][1]);
    result[1][0] = tanh(x[1][0]);
    result[1][1] = tanh(x[1][1]);
    return result;
}
float2x3 tanh(float2x3 x) {
    float2x3 result;
    result[0][0] = tanh(x[0][0]);
    result[0][1] = tanh(x[0][1]);
    result[0][2] = tanh(x[0][2]);
    result[1][0] = tanh(x[1][0]);
    result[1][1] = tanh(x[1][1]);
    result[1][2] = tanh(x[1][2]);
    return result;
}
float2x4 tanh(float2x4 x) {
    float2x4 result;
    result[0][0] = tanh(x[0][0]);
    result[0][1] = tanh(x[0][1]);
    result[0][2] = tanh(x[0][2]);
    result[0][3] = tanh(x[0][3]);
    result[1][0] = tanh(x[1][0]);
    result[1][1] = tanh(x[1][1]);
    result[1][2] = tanh(x[1][2]);
    result[1][3] = tanh(x[1][3]);
    return result;
}
float3x2 tanh(float3x2 x) {
    float3x2 result;
    result[0][0] = tanh(x[0][0]);
    result[0][1] = tanh(x[0][1]);
    result[1][0] = tanh(x[1][0]);
    result[1][1] = tanh(x[1][1]);
    result[2][0] = tanh(x[2][0]);
    result[2][1] = tanh(x[2][1]);
    return result;
}
float3x3 tanh(float3x3 x) {
    float3x3 result;
    result[0][0] = tanh(x[0][0]);
    result[0][1] = tanh(x[0][1]);
    result[0][2] = tanh(x[0][2]);
    result[1][0] = tanh(x[1][0]);
    result[1][1] = tanh(x[1][1]);
    result[1][2] = tanh(x[1][2]);
    result[2][0] = tanh(x[2][0]);
    result[2][1] = tanh(x[2][1]);
    result[2][2] = tanh(x[2][2]);
    return result;
}
float3x4 tanh(float3x4 x) {
    float3x4 result;
    result[0][0] = tanh(x[0][0]);
    result[0][1] = tanh(x[0][1]);
    result[0][2] = tanh(x[0][2]);
    result[0][3] = tanh(x[0][3]);
    result[1][0] = tanh(x[1][0]);
    result[1][1] = tanh(x[1][1]);
    result[1][2] = tanh(x[1][2]);
    result[1][3] = tanh(x[1][3]);
    result[2][0] = tanh(x[2][0]);
    result[2][1] = tanh(x[2][1]);
    result[2][2] = tanh(x[2][2]);
    result[2][3] = tanh(x[2][3]);
    return result;
}
float4x2 tanh(float4x2 x) {
    float4x2 result;
    result[0][0] = tanh(x[0][0]);
    result[0][1] = tanh(x[0][1]);
    result[1][0] = tanh(x[1][0]);
    result[1][1] = tanh(x[1][1]);
    result[2][0] = tanh(x[2][0]);
    result[2][1] = tanh(x[2][1]);
    result[3][0] = tanh(x[3][0]);
    result[3][1] = tanh(x[3][1]);
    return result;
}
float4x3 tanh(float4x3 x) {
    float4x3 result;
    result[0][0] = tanh(x[0][0]);
    result[0][1] = tanh(x[0][1]);
    result[0][2] = tanh(x[0][2]);
    result[1][0] = tanh(x[1][0]);
    result[1][1] = tanh(x[1][1]);
    result[1][2] = tanh(x[1][2]);
    result[2][0] = tanh(x[2][0]);
    result[2][1] = tanh(x[2][1]);
    result[2][2] = tanh(x[2][2]);
    result[3][0] = tanh(x[3][0]);
    result[3][1] = tanh(x[3][1]);
    result[3][2] = tanh(x[3][2]);
    return result;
}
float4x4 tanh(float4x4 x) {
    float4x4 result;
    result[0][0] = tanh(x[0][0]);
    result[0][1] = tanh(x[0][1]);
    result[0][2] = tanh(x[0][2]);
    result[0][3] = tanh(x[0][3]);
    result[1][0] = tanh(x[1][0]);
    result[1][1] = tanh(x[1][1]);
    result[1][2] = tanh(x[1][2]);
    result[1][3] = tanh(x[1][3]);
    result[2][0] = tanh(x[2][0]);
    result[2][1] = tanh(x[2][1]);
    result[2][2] = tanh(x[2][2]);
    result[2][3] = tanh(x[2][3]);
    result[3][0] = tanh(x[3][0]);
    result[3][1] = tanh(x[3][1]);
    result[3][2] = tanh(x[3][2]);
    result[3][3] = tanh(x[3][3]);
    return result;
}

/* Functions named operator.yxz= */
bool3 operator.yxz=(bool3 v, bool3 c) {
    bool3 result = v;
    result.y = c.x;
    result.x = c.y;
    result.z = c.z;
    return result;
}
bool4 operator.yxz=(bool4 v, bool3 c) {
    bool4 result = v;
    result.y = c.x;
    result.x = c.y;
    result.z = c.z;
    return result;
}
uint3 operator.yxz=(uint3 v, uint3 c) {
    uint3 result = v;
    result.y = c.x;
    result.x = c.y;
    result.z = c.z;
    return result;
}
uint4 operator.yxz=(uint4 v, uint3 c) {
    uint4 result = v;
    result.y = c.x;
    result.x = c.y;
    result.z = c.z;
    return result;
}
int3 operator.yxz=(int3 v, int3 c) {
    int3 result = v;
    result.y = c.x;
    result.x = c.y;
    result.z = c.z;
    return result;
}
int4 operator.yxz=(int4 v, int3 c) {
    int4 result = v;
    result.y = c.x;
    result.x = c.y;
    result.z = c.z;
    return result;
}
float3 operator.yxz=(float3 v, float3 c) {
    float3 result = v;
    result.y = c.x;
    result.x = c.y;
    result.z = c.z;
    return result;
}
float4 operator.yxz=(float4 v, float3 c) {
    float4 result = v;
    result.y = c.x;
    result.x = c.y;
    result.z = c.z;
    return result;
}

/* Functions named operator.wxzy= */
bool4 operator.wxzy=(bool4 v, bool4 c) {
    bool4 result = v;
    result.w = c.x;
    result.x = c.y;
    result.z = c.z;
    result.y = c.w;
    return result;
}
uint4 operator.wxzy=(uint4 v, uint4 c) {
    uint4 result = v;
    result.w = c.x;
    result.x = c.y;
    result.z = c.z;
    result.y = c.w;
    return result;
}
int4 operator.wxzy=(int4 v, int4 c) {
    int4 result = v;
    result.w = c.x;
    result.x = c.y;
    result.z = c.z;
    result.y = c.w;
    return result;
}
float4 operator.wxzy=(float4 v, float4 c) {
    float4 result = v;
    result.w = c.x;
    result.x = c.y;
    result.z = c.z;
    result.y = c.w;
    return result;
}

/* Functions named operator* */
native int operator*(int, int);
native uint operator*(uint, uint);
native float operator*(float, float);
uint2 operator*(uint2 a, uint2 b) {
    uint2 result;
    result[0] = a[0] * b[0];
    result[1] = a[1] * b[1];
    return result;
}
uint2 operator*(uint2 a, uint b) {
    uint2 result;
    result[0] = a[0] * b;
    result[1] = a[1] * b;
    return result;
}
uint2 operator*(uint a, uint2 b) {
    uint2 result;
    result[0] = a * b[0];
    result[1] = a * b[1];
    return result;
}
uint3 operator*(uint3 a, uint3 b) {
    uint3 result;
    result[0] = a[0] * b[0];
    result[1] = a[1] * b[1];
    result[2] = a[2] * b[2];
    return result;
}
uint3 operator*(uint3 a, uint b) {
    uint3 result;
    result[0] = a[0] * b;
    result[1] = a[1] * b;
    result[2] = a[2] * b;
    return result;
}
uint3 operator*(uint a, uint3 b) {
    uint3 result;
    result[0] = a * b[0];
    result[1] = a * b[1];
    result[2] = a * b[2];
    return result;
}
uint4 operator*(uint4 a, uint4 b) {
    uint4 result;
    result[0] = a[0] * b[0];
    result[1] = a[1] * b[1];
    result[2] = a[2] * b[2];
    result[3] = a[3] * b[3];
    return result;
}
uint4 operator*(uint4 a, uint b) {
    uint4 result;
    result[0] = a[0] * b;
    result[1] = a[1] * b;
    result[2] = a[2] * b;
    result[3] = a[3] * b;
    return result;
}
uint4 operator*(uint a, uint4 b) {
    uint4 result;
    result[0] = a * b[0];
    result[1] = a * b[1];
    result[2] = a * b[2];
    result[3] = a * b[3];
    return result;
}
int2 operator*(int2 a, int2 b) {
    int2 result;
    result[0] = a[0] * b[0];
    result[1] = a[1] * b[1];
    return result;
}
int2 operator*(int2 a, int b) {
    int2 result;
    result[0] = a[0] * b;
    result[1] = a[1] * b;
    return result;
}
int2 operator*(int a, int2 b) {
    int2 result;
    result[0] = a * b[0];
    result[1] = a * b[1];
    return result;
}
int3 operator*(int3 a, int3 b) {
    int3 result;
    result[0] = a[0] * b[0];
    result[1] = a[1] * b[1];
    result[2] = a[2] * b[2];
    return result;
}
int3 operator*(int3 a, int b) {
    int3 result;
    result[0] = a[0] * b;
    result[1] = a[1] * b;
    result[2] = a[2] * b;
    return result;
}
int3 operator*(int a, int3 b) {
    int3 result;
    result[0] = a * b[0];
    result[1] = a * b[1];
    result[2] = a * b[2];
    return result;
}
int4 operator*(int4 a, int4 b) {
    int4 result;
    result[0] = a[0] * b[0];
    result[1] = a[1] * b[1];
    result[2] = a[2] * b[2];
    result[3] = a[3] * b[3];
    return result;
}
int4 operator*(int4 a, int b) {
    int4 result;
    result[0] = a[0] * b;
    result[1] = a[1] * b;
    result[2] = a[2] * b;
    result[3] = a[3] * b;
    return result;
}
int4 operator*(int a, int4 b) {
    int4 result;
    result[0] = a * b[0];
    result[1] = a * b[1];
    result[2] = a * b[2];
    result[3] = a * b[3];
    return result;
}
float2 operator*(float2 a, float2 b) {
    float2 result;
    result[0] = a[0] * b[0];
    result[1] = a[1] * b[1];
    return result;
}
float2 operator*(float2 a, float b) {
    float2 result;
    result[0] = a[0] * b;
    result[1] = a[1] * b;
    return result;
}
float2 operator*(float a, float2 b) {
    float2 result;
    result[0] = a * b[0];
    result[1] = a * b[1];
    return result;
}
float3 operator*(float3 a, float3 b) {
    float3 result;
    result[0] = a[0] * b[0];
    result[1] = a[1] * b[1];
    result[2] = a[2] * b[2];
    return result;
}
float3 operator*(float3 a, float b) {
    float3 result;
    result[0] = a[0] * b;
    result[1] = a[1] * b;
    result[2] = a[2] * b;
    return result;
}
float3 operator*(float a, float3 b) {
    float3 result;
    result[0] = a * b[0];
    result[1] = a * b[1];
    result[2] = a * b[2];
    return result;
}
float4 operator*(float4 a, float4 b) {
    float4 result;
    result[0] = a[0] * b[0];
    result[1] = a[1] * b[1];
    result[2] = a[2] * b[2];
    result[3] = a[3] * b[3];
    return result;
}
float4 operator*(float4 a, float b) {
    float4 result;
    result[0] = a[0] * b;
    result[1] = a[1] * b;
    result[2] = a[2] * b;
    result[3] = a[3] * b;
    return result;
}
float4 operator*(float a, float4 b) {
    float4 result;
    result[0] = a * b[0];
    result[1] = a * b[1];
    result[2] = a * b[2];
    result[3] = a * b[3];
    return result;
}
float2x2 operator*(float2x2 a, float2x2 b) {
    float2x2 result;
    result[0][0] = a[0][0] * b[0][0];
    result[0][1] = a[0][1] * b[0][1];
    result[1][0] = a[1][0] * b[1][0];
    result[1][1] = a[1][1] * b[1][1];
    return result;
}
float2x2 operator*(float2x2 a, float b) {
    float2x2 result;
    result[0][0] = a[0][0] * b;
    result[0][1] = a[0][1] * b;
    result[1][0] = a[1][0] * b;
    result[1][1] = a[1][1] * b;
    return result;
}
float2x2 operator*(float a, float2x2 b) {
    float2x2 result;
    result[0][0] = a * b[0][0];
    result[0][1] = a * b[0][1];
    result[1][0] = a * b[1][0];
    result[1][1] = a * b[1][1];
    return result;
}
float2x3 operator*(float2x3 a, float2x3 b) {
    float2x3 result;
    result[0][0] = a[0][0] * b[0][0];
    result[0][1] = a[0][1] * b[0][1];
    result[0][2] = a[0][2] * b[0][2];
    result[1][0] = a[1][0] * b[1][0];
    result[1][1] = a[1][1] * b[1][1];
    result[1][2] = a[1][2] * b[1][2];
    return result;
}
float2x3 operator*(float2x3 a, float b) {
    float2x3 result;
    result[0][0] = a[0][0] * b;
    result[0][1] = a[0][1] * b;
    result[0][2] = a[0][2] * b;
    result[1][0] = a[1][0] * b;
    result[1][1] = a[1][1] * b;
    result[1][2] = a[1][2] * b;
    return result;
}
float2x3 operator*(float a, float2x3 b) {
    float2x3 result;
    result[0][0] = a * b[0][0];
    result[0][1] = a * b[0][1];
    result[0][2] = a * b[0][2];
    result[1][0] = a * b[1][0];
    result[1][1] = a * b[1][1];
    result[1][2] = a * b[1][2];
    return result;
}
float2x4 operator*(float2x4 a, float2x4 b) {
    float2x4 result;
    result[0][0] = a[0][0] * b[0][0];
    result[0][1] = a[0][1] * b[0][1];
    result[0][2] = a[0][2] * b[0][2];
    result[0][3] = a[0][3] * b[0][3];
    result[1][0] = a[1][0] * b[1][0];
    result[1][1] = a[1][1] * b[1][1];
    result[1][2] = a[1][2] * b[1][2];
    result[1][3] = a[1][3] * b[1][3];
    return result;
}
float2x4 operator*(float2x4 a, float b) {
    float2x4 result;
    result[0][0] = a[0][0] * b;
    result[0][1] = a[0][1] * b;
    result[0][2] = a[0][2] * b;
    result[0][3] = a[0][3] * b;
    result[1][0] = a[1][0] * b;
    result[1][1] = a[1][1] * b;
    result[1][2] = a[1][2] * b;
    result[1][3] = a[1][3] * b;
    return result;
}
float2x4 operator*(float a, float2x4 b) {
    float2x4 result;
    result[0][0] = a * b[0][0];
    result[0][1] = a * b[0][1];
    result[0][2] = a * b[0][2];
    result[0][3] = a * b[0][3];
    result[1][0] = a * b[1][0];
    result[1][1] = a * b[1][1];
    result[1][2] = a * b[1][2];
    result[1][3] = a * b[1][3];
    return result;
}
float3x2 operator*(float3x2 a, float3x2 b) {
    float3x2 result;
    result[0][0] = a[0][0] * b[0][0];
    result[0][1] = a[0][1] * b[0][1];
    result[1][0] = a[1][0] * b[1][0];
    result[1][1] = a[1][1] * b[1][1];
    result[2][0] = a[2][0] * b[2][0];
    result[2][1] = a[2][1] * b[2][1];
    return result;
}
float3x2 operator*(float3x2 a, float b) {
    float3x2 result;
    result[0][0] = a[0][0] * b;
    result[0][1] = a[0][1] * b;
    result[1][0] = a[1][0] * b;
    result[1][1] = a[1][1] * b;
    result[2][0] = a[2][0] * b;
    result[2][1] = a[2][1] * b;
    return result;
}
float3x2 operator*(float a, float3x2 b) {
    float3x2 result;
    result[0][0] = a * b[0][0];
    result[0][1] = a * b[0][1];
    result[1][0] = a * b[1][0];
    result[1][1] = a * b[1][1];
    result[2][0] = a * b[2][0];
    result[2][1] = a * b[2][1];
    return result;
}
float3x3 operator*(float3x3 a, float3x3 b) {
    float3x3 result;
    result[0][0] = a[0][0] * b[0][0];
    result[0][1] = a[0][1] * b[0][1];
    result[0][2] = a[0][2] * b[0][2];
    result[1][0] = a[1][0] * b[1][0];
    result[1][1] = a[1][1] * b[1][1];
    result[1][2] = a[1][2] * b[1][2];
    result[2][0] = a[2][0] * b[2][0];
    result[2][1] = a[2][1] * b[2][1];
    result[2][2] = a[2][2] * b[2][2];
    return result;
}
float3x3 operator*(float3x3 a, float b) {
    float3x3 result;
    result[0][0] = a[0][0] * b;
    result[0][1] = a[0][1] * b;
    result[0][2] = a[0][2] * b;
    result[1][0] = a[1][0] * b;
    result[1][1] = a[1][1] * b;
    result[1][2] = a[1][2] * b;
    result[2][0] = a[2][0] * b;
    result[2][1] = a[2][1] * b;
    result[2][2] = a[2][2] * b;
    return result;
}
float3x3 operator*(float a, float3x3 b) {
    float3x3 result;
    result[0][0] = a * b[0][0];
    result[0][1] = a * b[0][1];
    result[0][2] = a * b[0][2];
    result[1][0] = a * b[1][0];
    result[1][1] = a * b[1][1];
    result[1][2] = a * b[1][2];
    result[2][0] = a * b[2][0];
    result[2][1] = a * b[2][1];
    result[2][2] = a * b[2][2];
    return result;
}
float3x4 operator*(float3x4 a, float3x4 b) {
    float3x4 result;
    result[0][0] = a[0][0] * b[0][0];
    result[0][1] = a[0][1] * b[0][1];
    result[0][2] = a[0][2] * b[0][2];
    result[0][3] = a[0][3] * b[0][3];
    result[1][0] = a[1][0] * b[1][0];
    result[1][1] = a[1][1] * b[1][1];
    result[1][2] = a[1][2] * b[1][2];
    result[1][3] = a[1][3] * b[1][3];
    result[2][0] = a[2][0] * b[2][0];
    result[2][1] = a[2][1] * b[2][1];
    result[2][2] = a[2][2] * b[2][2];
    result[2][3] = a[2][3] * b[2][3];
    return result;
}
float3x4 operator*(float3x4 a, float b) {
    float3x4 result;
    result[0][0] = a[0][0] * b;
    result[0][1] = a[0][1] * b;
    result[0][2] = a[0][2] * b;
    result[0][3] = a[0][3] * b;
    result[1][0] = a[1][0] * b;
    result[1][1] = a[1][1] * b;
    result[1][2] = a[1][2] * b;
    result[1][3] = a[1][3] * b;
    result[2][0] = a[2][0] * b;
    result[2][1] = a[2][1] * b;
    result[2][2] = a[2][2] * b;
    result[2][3] = a[2][3] * b;
    return result;
}
float3x4 operator*(float a, float3x4 b) {
    float3x4 result;
    result[0][0] = a * b[0][0];
    result[0][1] = a * b[0][1];
    result[0][2] = a * b[0][2];
    result[0][3] = a * b[0][3];
    result[1][0] = a * b[1][0];
    result[1][1] = a * b[1][1];
    result[1][2] = a * b[1][2];
    result[1][3] = a * b[1][3];
    result[2][0] = a * b[2][0];
    result[2][1] = a * b[2][1];
    result[2][2] = a * b[2][2];
    result[2][3] = a * b[2][3];
    return result;
}
float4x2 operator*(float4x2 a, float4x2 b) {
    float4x2 result;
    result[0][0] = a[0][0] * b[0][0];
    result[0][1] = a[0][1] * b[0][1];
    result[1][0] = a[1][0] * b[1][0];
    result[1][1] = a[1][1] * b[1][1];
    result[2][0] = a[2][0] * b[2][0];
    result[2][1] = a[2][1] * b[2][1];
    result[3][0] = a[3][0] * b[3][0];
    result[3][1] = a[3][1] * b[3][1];
    return result;
}
float4x2 operator*(float4x2 a, float b) {
    float4x2 result;
    result[0][0] = a[0][0] * b;
    result[0][1] = a[0][1] * b;
    result[1][0] = a[1][0] * b;
    result[1][1] = a[1][1] * b;
    result[2][0] = a[2][0] * b;
    result[2][1] = a[2][1] * b;
    result[3][0] = a[3][0] * b;
    result[3][1] = a[3][1] * b;
    return result;
}
float4x2 operator*(float a, float4x2 b) {
    float4x2 result;
    result[0][0] = a * b[0][0];
    result[0][1] = a * b[0][1];
    result[1][0] = a * b[1][0];
    result[1][1] = a * b[1][1];
    result[2][0] = a * b[2][0];
    result[2][1] = a * b[2][1];
    result[3][0] = a * b[3][0];
    result[3][1] = a * b[3][1];
    return result;
}
float4x3 operator*(float4x3 a, float4x3 b) {
    float4x3 result;
    result[0][0] = a[0][0] * b[0][0];
    result[0][1] = a[0][1] * b[0][1];
    result[0][2] = a[0][2] * b[0][2];
    result[1][0] = a[1][0] * b[1][0];
    result[1][1] = a[1][1] * b[1][1];
    result[1][2] = a[1][2] * b[1][2];
    result[2][0] = a[2][0] * b[2][0];
    result[2][1] = a[2][1] * b[2][1];
    result[2][2] = a[2][2] * b[2][2];
    result[3][0] = a[3][0] * b[3][0];
    result[3][1] = a[3][1] * b[3][1];
    result[3][2] = a[3][2] * b[3][2];
    return result;
}
float4x3 operator*(float4x3 a, float b) {
    float4x3 result;
    result[0][0] = a[0][0] * b;
    result[0][1] = a[0][1] * b;
    result[0][2] = a[0][2] * b;
    result[1][0] = a[1][0] * b;
    result[1][1] = a[1][1] * b;
    result[1][2] = a[1][2] * b;
    result[2][0] = a[2][0] * b;
    result[2][1] = a[2][1] * b;
    result[2][2] = a[2][2] * b;
    result[3][0] = a[3][0] * b;
    result[3][1] = a[3][1] * b;
    result[3][2] = a[3][2] * b;
    return result;
}
float4x3 operator*(float a, float4x3 b) {
    float4x3 result;
    result[0][0] = a * b[0][0];
    result[0][1] = a * b[0][1];
    result[0][2] = a * b[0][2];
    result[1][0] = a * b[1][0];
    result[1][1] = a * b[1][1];
    result[1][2] = a * b[1][2];
    result[2][0] = a * b[2][0];
    result[2][1] = a * b[2][1];
    result[2][2] = a * b[2][2];
    result[3][0] = a * b[3][0];
    result[3][1] = a * b[3][1];
    result[3][2] = a * b[3][2];
    return result;
}
float4x4 operator*(float4x4 a, float4x4 b) {
    float4x4 result;
    result[0][0] = a[0][0] * b[0][0];
    result[0][1] = a[0][1] * b[0][1];
    result[0][2] = a[0][2] * b[0][2];
    result[0][3] = a[0][3] * b[0][3];
    result[1][0] = a[1][0] * b[1][0];
    result[1][1] = a[1][1] * b[1][1];
    result[1][2] = a[1][2] * b[1][2];
    result[1][3] = a[1][3] * b[1][3];
    result[2][0] = a[2][0] * b[2][0];
    result[2][1] = a[2][1] * b[2][1];
    result[2][2] = a[2][2] * b[2][2];
    result[2][3] = a[2][3] * b[2][3];
    result[3][0] = a[3][0] * b[3][0];
    result[3][1] = a[3][1] * b[3][1];
    result[3][2] = a[3][2] * b[3][2];
    result[3][3] = a[3][3] * b[3][3];
    return result;
}
float4x4 operator*(float4x4 a, float b) {
    float4x4 result;
    result[0][0] = a[0][0] * b;
    result[0][1] = a[0][1] * b;
    result[0][2] = a[0][2] * b;
    result[0][3] = a[0][3] * b;
    result[1][0] = a[1][0] * b;
    result[1][1] = a[1][1] * b;
    result[1][2] = a[1][2] * b;
    result[1][3] = a[1][3] * b;
    result[2][0] = a[2][0] * b;
    result[2][1] = a[2][1] * b;
    result[2][2] = a[2][2] * b;
    result[2][3] = a[2][3] * b;
    result[3][0] = a[3][0] * b;
    result[3][1] = a[3][1] * b;
    result[3][2] = a[3][2] * b;
    result[3][3] = a[3][3] * b;
    return result;
}
float4x4 operator*(float a, float4x4 b) {
    float4x4 result;
    result[0][0] = a * b[0][0];
    result[0][1] = a * b[0][1];
    result[0][2] = a * b[0][2];
    result[0][3] = a * b[0][3];
    result[1][0] = a * b[1][0];
    result[1][1] = a * b[1][1];
    result[1][2] = a * b[1][2];
    result[1][3] = a * b[1][3];
    result[2][0] = a * b[2][0];
    result[2][1] = a * b[2][1];
    result[2][2] = a * b[2][2];
    result[2][3] = a * b[2][3];
    result[3][0] = a * b[3][0];
    result[3][1] = a * b[3][1];
    result[3][2] = a * b[3][2];
    result[3][3] = a * b[3][3];
    return result;
}

/* Functions named cos */
native float cos(float);
float2 cos(float2 x) {
    float2 result;
    result[0] = cos(x[0]);
    result[1] = cos(x[1]);
    return result;
}
float3 cos(float3 x) {
    float3 result;
    result[0] = cos(x[0]);
    result[1] = cos(x[1]);
    result[2] = cos(x[2]);
    return result;
}
float4 cos(float4 x) {
    float4 result;
    result[0] = cos(x[0]);
    result[1] = cos(x[1]);
    result[2] = cos(x[2]);
    result[3] = cos(x[3]);
    return result;
}
float2x2 cos(float2x2 x) {
    float2x2 result;
    result[0][0] = cos(x[0][0]);
    result[0][1] = cos(x[0][1]);
    result[1][0] = cos(x[1][0]);
    result[1][1] = cos(x[1][1]);
    return result;
}
float2x3 cos(float2x3 x) {
    float2x3 result;
    result[0][0] = cos(x[0][0]);
    result[0][1] = cos(x[0][1]);
    result[0][2] = cos(x[0][2]);
    result[1][0] = cos(x[1][0]);
    result[1][1] = cos(x[1][1]);
    result[1][2] = cos(x[1][2]);
    return result;
}
float2x4 cos(float2x4 x) {
    float2x4 result;
    result[0][0] = cos(x[0][0]);
    result[0][1] = cos(x[0][1]);
    result[0][2] = cos(x[0][2]);
    result[0][3] = cos(x[0][3]);
    result[1][0] = cos(x[1][0]);
    result[1][1] = cos(x[1][1]);
    result[1][2] = cos(x[1][2]);
    result[1][3] = cos(x[1][3]);
    return result;
}
float3x2 cos(float3x2 x) {
    float3x2 result;
    result[0][0] = cos(x[0][0]);
    result[0][1] = cos(x[0][1]);
    result[1][0] = cos(x[1][0]);
    result[1][1] = cos(x[1][1]);
    result[2][0] = cos(x[2][0]);
    result[2][1] = cos(x[2][1]);
    return result;
}
float3x3 cos(float3x3 x) {
    float3x3 result;
    result[0][0] = cos(x[0][0]);
    result[0][1] = cos(x[0][1]);
    result[0][2] = cos(x[0][2]);
    result[1][0] = cos(x[1][0]);
    result[1][1] = cos(x[1][1]);
    result[1][2] = cos(x[1][2]);
    result[2][0] = cos(x[2][0]);
    result[2][1] = cos(x[2][1]);
    result[2][2] = cos(x[2][2]);
    return result;
}
float3x4 cos(float3x4 x) {
    float3x4 result;
    result[0][0] = cos(x[0][0]);
    result[0][1] = cos(x[0][1]);
    result[0][2] = cos(x[0][2]);
    result[0][3] = cos(x[0][3]);
    result[1][0] = cos(x[1][0]);
    result[1][1] = cos(x[1][1]);
    result[1][2] = cos(x[1][2]);
    result[1][3] = cos(x[1][3]);
    result[2][0] = cos(x[2][0]);
    result[2][1] = cos(x[2][1]);
    result[2][2] = cos(x[2][2]);
    result[2][3] = cos(x[2][3]);
    return result;
}
float4x2 cos(float4x2 x) {
    float4x2 result;
    result[0][0] = cos(x[0][0]);
    result[0][1] = cos(x[0][1]);
    result[1][0] = cos(x[1][0]);
    result[1][1] = cos(x[1][1]);
    result[2][0] = cos(x[2][0]);
    result[2][1] = cos(x[2][1]);
    result[3][0] = cos(x[3][0]);
    result[3][1] = cos(x[3][1]);
    return result;
}
float4x3 cos(float4x3 x) {
    float4x3 result;
    result[0][0] = cos(x[0][0]);
    result[0][1] = cos(x[0][1]);
    result[0][2] = cos(x[0][2]);
    result[1][0] = cos(x[1][0]);
    result[1][1] = cos(x[1][1]);
    result[1][2] = cos(x[1][2]);
    result[2][0] = cos(x[2][0]);
    result[2][1] = cos(x[2][1]);
    result[2][2] = cos(x[2][2]);
    result[3][0] = cos(x[3][0]);
    result[3][1] = cos(x[3][1]);
    result[3][2] = cos(x[3][2]);
    return result;
}
float4x4 cos(float4x4 x) {
    float4x4 result;
    result[0][0] = cos(x[0][0]);
    result[0][1] = cos(x[0][1]);
    result[0][2] = cos(x[0][2]);
    result[0][3] = cos(x[0][3]);
    result[1][0] = cos(x[1][0]);
    result[1][1] = cos(x[1][1]);
    result[1][2] = cos(x[1][2]);
    result[1][3] = cos(x[1][3]);
    result[2][0] = cos(x[2][0]);
    result[2][1] = cos(x[2][1]);
    result[2][2] = cos(x[2][2]);
    result[2][3] = cos(x[2][3]);
    result[3][0] = cos(x[3][0]);
    result[3][1] = cos(x[3][1]);
    result[3][2] = cos(x[3][2]);
    result[3][3] = cos(x[3][3]);
    return result;
}

/* Functions named operator.zzzw */
bool4 operator.zzzw(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    result.w = v.w;
    return result;
}
uint4 operator.zzzw(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    result.w = v.w;
    return result;
}
int4 operator.zzzw(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    result.w = v.w;
    return result;
}
float4 operator.zzzw(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    result.w = v.w;
    return result;
}

/* Functions named operator.yywy */
bool4 operator.yywy(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.w;
    result.w = v.y;
    return result;
}
uint4 operator.yywy(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.w;
    result.w = v.y;
    return result;
}
int4 operator.yywy(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.w;
    result.w = v.y;
    return result;
}
float4 operator.yywy(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.w;
    result.w = v.y;
    return result;
}

/* Functions named operator.xzwy= */
bool4 operator.xzwy=(bool4 v, bool4 c) {
    bool4 result = v;
    result.x = c.x;
    result.z = c.y;
    result.w = c.z;
    result.y = c.w;
    return result;
}
uint4 operator.xzwy=(uint4 v, uint4 c) {
    uint4 result = v;
    result.x = c.x;
    result.z = c.y;
    result.w = c.z;
    result.y = c.w;
    return result;
}
int4 operator.xzwy=(int4 v, int4 c) {
    int4 result = v;
    result.x = c.x;
    result.z = c.y;
    result.w = c.z;
    result.y = c.w;
    return result;
}
float4 operator.xzwy=(float4 v, float4 c) {
    float4 result = v;
    result.x = c.x;
    result.z = c.y;
    result.w = c.z;
    result.y = c.w;
    return result;
}

/* Functions named operator.ywzz */
bool4 operator.ywzz(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.z;
    result.w = v.z;
    return result;
}
uint4 operator.ywzz(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.z;
    result.w = v.z;
    return result;
}
int4 operator.ywzz(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.z;
    result.w = v.z;
    return result;
}
float4 operator.ywzz(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.z;
    result.w = v.z;
    return result;
}

/* Functions named operator.zw= */
bool4 operator.zw=(bool4 v, bool2 c) {
    bool4 result = v;
    result.z = c.x;
    result.w = c.y;
    return result;
}
uint4 operator.zw=(uint4 v, uint2 c) {
    uint4 result = v;
    result.z = c.x;
    result.w = c.y;
    return result;
}
int4 operator.zw=(int4 v, int2 c) {
    int4 result = v;
    result.z = c.x;
    result.w = c.y;
    return result;
}
float4 operator.zw=(float4 v, float2 c) {
    float4 result = v;
    result.z = c.x;
    result.w = c.y;
    return result;
}

/* Functions named operator.xzxz */
bool4 operator.xzxz(bool3 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    result.w = v.z;
    return result;
}
bool4 operator.xzxz(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    result.w = v.z;
    return result;
}
uint4 operator.xzxz(uint3 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    result.w = v.z;
    return result;
}
uint4 operator.xzxz(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    result.w = v.z;
    return result;
}
int4 operator.xzxz(int3 v) {
    int4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    result.w = v.z;
    return result;
}
int4 operator.xzxz(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    result.w = v.z;
    return result;
}
float4 operator.xzxz(float3 v) {
    float4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    result.w = v.z;
    return result;
}
float4 operator.xzxz(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    result.w = v.z;
    return result;
}

/* Functions named operator== */
native bool operator==(bool, bool);
native bool operator==(int, int);
native bool operator==(uint, uint);
native bool operator==(float, float);
bool operator==(bool2 a, bool2 b) {
    return a.x == b.x && a.y == b.y;
}
bool operator==(bool3 a, bool3 b) {
    return a.x == b.x && a.y == b.y && a.z == b.z;
}
bool operator==(bool4 a, bool4 b) {
    return a.x == b.x && a.y == b.y && a.z == b.z && a.w == b.w;
}
bool operator==(uint2 a, uint2 b) {
    return a.x == b.x && a.y == b.y;
}
bool operator==(uint3 a, uint3 b) {
    return a.x == b.x && a.y == b.y && a.z == b.z;
}
bool operator==(uint4 a, uint4 b) {
    return a.x == b.x && a.y == b.y && a.z == b.z && a.w == b.w;
}
bool operator==(int2 a, int2 b) {
    return a.x == b.x && a.y == b.y;
}
bool operator==(int3 a, int3 b) {
    return a.x == b.x && a.y == b.y && a.z == b.z;
}
bool operator==(int4 a, int4 b) {
    return a.x == b.x && a.y == b.y && a.z == b.z && a.w == b.w;
}
bool operator==(float2 a, float2 b) {
    return a.x == b.x && a.y == b.y;
}
bool operator==(float3 a, float3 b) {
    return a.x == b.x && a.y == b.y && a.z == b.z;
}
bool operator==(float4 a, float4 b) {
    return a.x == b.x && a.y == b.y && a.z == b.z && a.w == b.w;
}
bool operator==(float2x2 a, float2x2 b) {
    return
        a[0][0] == b[0][0] &&
        a[0][1] == b[0][1] &&
        a[1][0] == b[1][0] &&
        a[1][1] == b[1][1] &&
    true;
}
bool operator==(float2x3 a, float2x3 b) {
    return
        a[0][0] == b[0][0] &&
        a[0][1] == b[0][1] &&
        a[0][2] == b[0][2] &&
        a[1][0] == b[1][0] &&
        a[1][1] == b[1][1] &&
        a[1][2] == b[1][2] &&
    true;
}
bool operator==(float2x4 a, float2x4 b) {
    return
        a[0][0] == b[0][0] &&
        a[0][1] == b[0][1] &&
        a[0][2] == b[0][2] &&
        a[0][3] == b[0][3] &&
        a[1][0] == b[1][0] &&
        a[1][1] == b[1][1] &&
        a[1][2] == b[1][2] &&
        a[1][3] == b[1][3] &&
    true;
}
bool operator==(float3x2 a, float3x2 b) {
    return
        a[0][0] == b[0][0] &&
        a[0][1] == b[0][1] &&
        a[1][0] == b[1][0] &&
        a[1][1] == b[1][1] &&
        a[2][0] == b[2][0] &&
        a[2][1] == b[2][1] &&
    true;
}
bool operator==(float3x3 a, float3x3 b) {
    return
        a[0][0] == b[0][0] &&
        a[0][1] == b[0][1] &&
        a[0][2] == b[0][2] &&
        a[1][0] == b[1][0] &&
        a[1][1] == b[1][1] &&
        a[1][2] == b[1][2] &&
        a[2][0] == b[2][0] &&
        a[2][1] == b[2][1] &&
        a[2][2] == b[2][2] &&
    true;
}
bool operator==(float3x4 a, float3x4 b) {
    return
        a[0][0] == b[0][0] &&
        a[0][1] == b[0][1] &&
        a[0][2] == b[0][2] &&
        a[0][3] == b[0][3] &&
        a[1][0] == b[1][0] &&
        a[1][1] == b[1][1] &&
        a[1][2] == b[1][2] &&
        a[1][3] == b[1][3] &&
        a[2][0] == b[2][0] &&
        a[2][1] == b[2][1] &&
        a[2][2] == b[2][2] &&
        a[2][3] == b[2][3] &&
    true;
}
bool operator==(float4x2 a, float4x2 b) {
    return
        a[0][0] == b[0][0] &&
        a[0][1] == b[0][1] &&
        a[1][0] == b[1][0] &&
        a[1][1] == b[1][1] &&
        a[2][0] == b[2][0] &&
        a[2][1] == b[2][1] &&
        a[3][0] == b[3][0] &&
        a[3][1] == b[3][1] &&
    true;
}
bool operator==(float4x3 a, float4x3 b) {
    return
        a[0][0] == b[0][0] &&
        a[0][1] == b[0][1] &&
        a[0][2] == b[0][2] &&
        a[1][0] == b[1][0] &&
        a[1][1] == b[1][1] &&
        a[1][2] == b[1][2] &&
        a[2][0] == b[2][0] &&
        a[2][1] == b[2][1] &&
        a[2][2] == b[2][2] &&
        a[3][0] == b[3][0] &&
        a[3][1] == b[3][1] &&
        a[3][2] == b[3][2] &&
    true;
}
bool operator==(float4x4 a, float4x4 b) {
    return
        a[0][0] == b[0][0] &&
        a[0][1] == b[0][1] &&
        a[0][2] == b[0][2] &&
        a[0][3] == b[0][3] &&
        a[1][0] == b[1][0] &&
        a[1][1] == b[1][1] &&
        a[1][2] == b[1][2] &&
        a[1][3] == b[1][3] &&
        a[2][0] == b[2][0] &&
        a[2][1] == b[2][1] &&
        a[2][2] == b[2][2] &&
        a[2][3] == b[2][3] &&
        a[3][0] == b[3][0] &&
        a[3][1] == b[3][1] &&
        a[3][2] == b[3][2] &&
        a[3][3] == b[3][3] &&
    true;
}

/* Functions named operator>> */
native int operator>>(int, uint);
native uint operator>>(uint, uint);

/* Functions named reflect */
float reflect(float i, float n) {
    return i - 2 * n * dot(i, n);
}
float2 reflect(float2 i, float2 n) {
    return i - 2 * n * dot(i, n);
}
float3 reflect(float3 i, float3 n) {
    return i - 2 * n * dot(i, n);
}
float4 reflect(float4 i, float4 n) {
    return i - 2 * n * dot(i, n);
}


/* Functions named operator.wwxw */
bool4 operator.wwxw(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.x;
    result.w = v.w;
    return result;
}
uint4 operator.wwxw(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.x;
    result.w = v.w;
    return result;
}
int4 operator.wwxw(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.x;
    result.w = v.w;
    return result;
}
float4 operator.wwxw(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.x;
    result.w = v.w;
    return result;
}

/* Functions named operator.xzyz */
bool4 operator.xzyz(bool3 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    result.w = v.z;
    return result;
}
bool4 operator.xzyz(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    result.w = v.z;
    return result;
}
uint4 operator.xzyz(uint3 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    result.w = v.z;
    return result;
}
uint4 operator.xzyz(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    result.w = v.z;
    return result;
}
int4 operator.xzyz(int3 v) {
    int4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    result.w = v.z;
    return result;
}
int4 operator.xzyz(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    result.w = v.z;
    return result;
}
float4 operator.xzyz(float3 v) {
    float4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    result.w = v.z;
    return result;
}
float4 operator.xzyz(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    result.w = v.z;
    return result;
}

/* Functions named lit */
float4 lit(float n_dot_l, float n_dot_h, float m) {
    float ambient = 1;
    float diffuse = max(0, n_dot_l);
    float specular = n_dot_l < 0 || n_dot_h < 0 ? 0 : n_dot_h * m;
    float4 result;
    result.x = ambient;
    result.y = diffuse;
    result.z = specular;
    result.w = 1;
    return result;
}


/* Functions named operator.yxwx */
bool4 operator.yxwx(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.w;
    result.w = v.x;
    return result;
}
uint4 operator.yxwx(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.w;
    result.w = v.x;
    return result;
}
int4 operator.yxwx(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.w;
    result.w = v.x;
    return result;
}
float4 operator.yxwx(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.w;
    result.w = v.x;
    return result;
}

/* Functions named log2 */
float log2(float x) {
    return log(x) / log(float(2));
}
float2 log2(float2 x) {
    float2 result;
    result[0] = log2(x[0]);
    result[1] = log2(x[1]);
    return result;
}
float3 log2(float3 x) {
    float3 result;
    result[0] = log2(x[0]);
    result[1] = log2(x[1]);
    result[2] = log2(x[2]);
    return result;
}
float4 log2(float4 x) {
    float4 result;
    result[0] = log2(x[0]);
    result[1] = log2(x[1]);
    result[2] = log2(x[2]);
    result[3] = log2(x[3]);
    return result;
}
float2x2 log2(float2x2 x) {
    float2x2 result;
    result[0][0] = log2(x[0][0]);
    result[0][1] = log2(x[0][1]);
    result[1][0] = log2(x[1][0]);
    result[1][1] = log2(x[1][1]);
    return result;
}
float2x3 log2(float2x3 x) {
    float2x3 result;
    result[0][0] = log2(x[0][0]);
    result[0][1] = log2(x[0][1]);
    result[0][2] = log2(x[0][2]);
    result[1][0] = log2(x[1][0]);
    result[1][1] = log2(x[1][1]);
    result[1][2] = log2(x[1][2]);
    return result;
}
float2x4 log2(float2x4 x) {
    float2x4 result;
    result[0][0] = log2(x[0][0]);
    result[0][1] = log2(x[0][1]);
    result[0][2] = log2(x[0][2]);
    result[0][3] = log2(x[0][3]);
    result[1][0] = log2(x[1][0]);
    result[1][1] = log2(x[1][1]);
    result[1][2] = log2(x[1][2]);
    result[1][3] = log2(x[1][3]);
    return result;
}
float3x2 log2(float3x2 x) {
    float3x2 result;
    result[0][0] = log2(x[0][0]);
    result[0][1] = log2(x[0][1]);
    result[1][0] = log2(x[1][0]);
    result[1][1] = log2(x[1][1]);
    result[2][0] = log2(x[2][0]);
    result[2][1] = log2(x[2][1]);
    return result;
}
float3x3 log2(float3x3 x) {
    float3x3 result;
    result[0][0] = log2(x[0][0]);
    result[0][1] = log2(x[0][1]);
    result[0][2] = log2(x[0][2]);
    result[1][0] = log2(x[1][0]);
    result[1][1] = log2(x[1][1]);
    result[1][2] = log2(x[1][2]);
    result[2][0] = log2(x[2][0]);
    result[2][1] = log2(x[2][1]);
    result[2][2] = log2(x[2][2]);
    return result;
}
float3x4 log2(float3x4 x) {
    float3x4 result;
    result[0][0] = log2(x[0][0]);
    result[0][1] = log2(x[0][1]);
    result[0][2] = log2(x[0][2]);
    result[0][3] = log2(x[0][3]);
    result[1][0] = log2(x[1][0]);
    result[1][1] = log2(x[1][1]);
    result[1][2] = log2(x[1][2]);
    result[1][3] = log2(x[1][3]);
    result[2][0] = log2(x[2][0]);
    result[2][1] = log2(x[2][1]);
    result[2][2] = log2(x[2][2]);
    result[2][3] = log2(x[2][3]);
    return result;
}
float4x2 log2(float4x2 x) {
    float4x2 result;
    result[0][0] = log2(x[0][0]);
    result[0][1] = log2(x[0][1]);
    result[1][0] = log2(x[1][0]);
    result[1][1] = log2(x[1][1]);
    result[2][0] = log2(x[2][0]);
    result[2][1] = log2(x[2][1]);
    result[3][0] = log2(x[3][0]);
    result[3][1] = log2(x[3][1]);
    return result;
}
float4x3 log2(float4x3 x) {
    float4x3 result;
    result[0][0] = log2(x[0][0]);
    result[0][1] = log2(x[0][1]);
    result[0][2] = log2(x[0][2]);
    result[1][0] = log2(x[1][0]);
    result[1][1] = log2(x[1][1]);
    result[1][2] = log2(x[1][2]);
    result[2][0] = log2(x[2][0]);
    result[2][1] = log2(x[2][1]);
    result[2][2] = log2(x[2][2]);
    result[3][0] = log2(x[3][0]);
    result[3][1] = log2(x[3][1]);
    result[3][2] = log2(x[3][2]);
    return result;
}
float4x4 log2(float4x4 x) {
    float4x4 result;
    result[0][0] = log2(x[0][0]);
    result[0][1] = log2(x[0][1]);
    result[0][2] = log2(x[0][2]);
    result[0][3] = log2(x[0][3]);
    result[1][0] = log2(x[1][0]);
    result[1][1] = log2(x[1][1]);
    result[1][2] = log2(x[1][2]);
    result[1][3] = log2(x[1][3]);
    result[2][0] = log2(x[2][0]);
    result[2][1] = log2(x[2][1]);
    result[2][2] = log2(x[2][2]);
    result[2][3] = log2(x[2][3]);
    result[3][0] = log2(x[3][0]);
    result[3][1] = log2(x[3][1]);
    result[3][2] = log2(x[3][2]);
    result[3][3] = log2(x[3][3]);
    return result;
}

/* Functions named normalize */
float normalize(float x) {
    return x / length(x);
}
float2 normalize(float2 x) {
    return x / length(x);
}
float3 normalize(float3 x) {
    return x / length(x);
}
float4 normalize(float4 x) {
    return x / length(x);
}


/* Functions named ldexp */
float ldexp(float x, float e) {
    return x * pow(2, e);
}
float2 ldexp(float2 x, float2 y) {
    float2 result;
    result[0] = ldexp(x[0], y[0]);
    result[1] = ldexp(x[1], y[1]);
    return result;
}
float3 ldexp(float3 x, float3 y) {
    float3 result;
    result[0] = ldexp(x[0], y[0]);
    result[1] = ldexp(x[1], y[1]);
    result[2] = ldexp(x[2], y[2]);
    return result;
}
float4 ldexp(float4 x, float4 y) {
    float4 result;
    result[0] = ldexp(x[0], y[0]);
    result[1] = ldexp(x[1], y[1]);
    result[2] = ldexp(x[2], y[2]);
    result[3] = ldexp(x[3], y[3]);
    return result;
}
float2x2 ldexp(float2x2 x, float2x2 y) {
    float2x2 result;
    result[0][0] = ldexp(x[0][0], y[0][0]);
    result[0][1] = ldexp(x[0][1], y[0][1]);
    result[1][0] = ldexp(x[1][0], y[1][0]);
    result[1][1] = ldexp(x[1][1], y[1][1]);
    return result;
}
float2x3 ldexp(float2x3 x, float2x3 y) {
    float2x3 result;
    result[0][0] = ldexp(x[0][0], y[0][0]);
    result[0][1] = ldexp(x[0][1], y[0][1]);
    result[0][2] = ldexp(x[0][2], y[0][2]);
    result[1][0] = ldexp(x[1][0], y[1][0]);
    result[1][1] = ldexp(x[1][1], y[1][1]);
    result[1][2] = ldexp(x[1][2], y[1][2]);
    return result;
}
float2x4 ldexp(float2x4 x, float2x4 y) {
    float2x4 result;
    result[0][0] = ldexp(x[0][0], y[0][0]);
    result[0][1] = ldexp(x[0][1], y[0][1]);
    result[0][2] = ldexp(x[0][2], y[0][2]);
    result[0][3] = ldexp(x[0][3], y[0][3]);
    result[1][0] = ldexp(x[1][0], y[1][0]);
    result[1][1] = ldexp(x[1][1], y[1][1]);
    result[1][2] = ldexp(x[1][2], y[1][2]);
    result[1][3] = ldexp(x[1][3], y[1][3]);
    return result;
}
float3x2 ldexp(float3x2 x, float3x2 y) {
    float3x2 result;
    result[0][0] = ldexp(x[0][0], y[0][0]);
    result[0][1] = ldexp(x[0][1], y[0][1]);
    result[1][0] = ldexp(x[1][0], y[1][0]);
    result[1][1] = ldexp(x[1][1], y[1][1]);
    result[2][0] = ldexp(x[2][0], y[2][0]);
    result[2][1] = ldexp(x[2][1], y[2][1]);
    return result;
}
float3x3 ldexp(float3x3 x, float3x3 y) {
    float3x3 result;
    result[0][0] = ldexp(x[0][0], y[0][0]);
    result[0][1] = ldexp(x[0][1], y[0][1]);
    result[0][2] = ldexp(x[0][2], y[0][2]);
    result[1][0] = ldexp(x[1][0], y[1][0]);
    result[1][1] = ldexp(x[1][1], y[1][1]);
    result[1][2] = ldexp(x[1][2], y[1][2]);
    result[2][0] = ldexp(x[2][0], y[2][0]);
    result[2][1] = ldexp(x[2][1], y[2][1]);
    result[2][2] = ldexp(x[2][2], y[2][2]);
    return result;
}
float3x4 ldexp(float3x4 x, float3x4 y) {
    float3x4 result;
    result[0][0] = ldexp(x[0][0], y[0][0]);
    result[0][1] = ldexp(x[0][1], y[0][1]);
    result[0][2] = ldexp(x[0][2], y[0][2]);
    result[0][3] = ldexp(x[0][3], y[0][3]);
    result[1][0] = ldexp(x[1][0], y[1][0]);
    result[1][1] = ldexp(x[1][1], y[1][1]);
    result[1][2] = ldexp(x[1][2], y[1][2]);
    result[1][3] = ldexp(x[1][3], y[1][3]);
    result[2][0] = ldexp(x[2][0], y[2][0]);
    result[2][1] = ldexp(x[2][1], y[2][1]);
    result[2][2] = ldexp(x[2][2], y[2][2]);
    result[2][3] = ldexp(x[2][3], y[2][3]);
    return result;
}
float4x2 ldexp(float4x2 x, float4x2 y) {
    float4x2 result;
    result[0][0] = ldexp(x[0][0], y[0][0]);
    result[0][1] = ldexp(x[0][1], y[0][1]);
    result[1][0] = ldexp(x[1][0], y[1][0]);
    result[1][1] = ldexp(x[1][1], y[1][1]);
    result[2][0] = ldexp(x[2][0], y[2][0]);
    result[2][1] = ldexp(x[2][1], y[2][1]);
    result[3][0] = ldexp(x[3][0], y[3][0]);
    result[3][1] = ldexp(x[3][1], y[3][1]);
    return result;
}
float4x3 ldexp(float4x3 x, float4x3 y) {
    float4x3 result;
    result[0][0] = ldexp(x[0][0], y[0][0]);
    result[0][1] = ldexp(x[0][1], y[0][1]);
    result[0][2] = ldexp(x[0][2], y[0][2]);
    result[1][0] = ldexp(x[1][0], y[1][0]);
    result[1][1] = ldexp(x[1][1], y[1][1]);
    result[1][2] = ldexp(x[1][2], y[1][2]);
    result[2][0] = ldexp(x[2][0], y[2][0]);
    result[2][1] = ldexp(x[2][1], y[2][1]);
    result[2][2] = ldexp(x[2][2], y[2][2]);
    result[3][0] = ldexp(x[3][0], y[3][0]);
    result[3][1] = ldexp(x[3][1], y[3][1]);
    result[3][2] = ldexp(x[3][2], y[3][2]);
    return result;
}
float4x4 ldexp(float4x4 x, float4x4 y) {
    float4x4 result;
    result[0][0] = ldexp(x[0][0], y[0][0]);
    result[0][1] = ldexp(x[0][1], y[0][1]);
    result[0][2] = ldexp(x[0][2], y[0][2]);
    result[0][3] = ldexp(x[0][3], y[0][3]);
    result[1][0] = ldexp(x[1][0], y[1][0]);
    result[1][1] = ldexp(x[1][1], y[1][1]);
    result[1][2] = ldexp(x[1][2], y[1][2]);
    result[1][3] = ldexp(x[1][3], y[1][3]);
    result[2][0] = ldexp(x[2][0], y[2][0]);
    result[2][1] = ldexp(x[2][1], y[2][1]);
    result[2][2] = ldexp(x[2][2], y[2][2]);
    result[2][3] = ldexp(x[2][3], y[2][3]);
    result[3][0] = ldexp(x[3][0], y[3][0]);
    result[3][1] = ldexp(x[3][1], y[3][1]);
    result[3][2] = ldexp(x[3][2], y[3][2]);
    result[3][3] = ldexp(x[3][3], y[3][3]);
    return result;
}

/* Functions named operator.xzwz */
bool4 operator.xzwz(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.w;
    result.w = v.z;
    return result;
}
uint4 operator.xzwz(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.w;
    result.w = v.z;
    return result;
}
int4 operator.xzwz(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.w;
    result.w = v.z;
    return result;
}
float4 operator.xzwz(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.w;
    result.w = v.z;
    return result;
}

/* Functions named operator.wxyx */
bool4 operator.wxyx(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
uint4 operator.wxyx(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
int4 operator.wxyx(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
float4 operator.wxyx(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}

/* Functions named operator.ywxw */
bool4 operator.ywxw(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.x;
    result.w = v.w;
    return result;
}
uint4 operator.ywxw(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.x;
    result.w = v.w;
    return result;
}
int4 operator.ywxw(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.x;
    result.w = v.w;
    return result;
}
float4 operator.ywxw(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.x;
    result.w = v.w;
    return result;
}

/* Functions named operator.zyyz */
bool4 operator.zyyz(bool3 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    result.w = v.z;
    return result;
}
bool4 operator.zyyz(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    result.w = v.z;
    return result;
}
uint4 operator.zyyz(uint3 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    result.w = v.z;
    return result;
}
uint4 operator.zyyz(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    result.w = v.z;
    return result;
}
int4 operator.zyyz(int3 v) {
    int4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    result.w = v.z;
    return result;
}
int4 operator.zyyz(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    result.w = v.z;
    return result;
}
float4 operator.zyyz(float3 v) {
    float4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    result.w = v.z;
    return result;
}
float4 operator.zyyz(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    result.w = v.z;
    return result;
}

/* Functions named abs */
uint abs(uint x) {
    return x;
}
int abs(int x) {
    if (x < 0)
        return -x;
    return x;
}
float abs(float x) {
    if (x < 0)
        return -x;
    return x;
}
uint2 abs(uint2 x) {
    uint2 result;
    result[0] = abs(x[0]);
    result[1] = abs(x[1]);
    return result;
}
uint3 abs(uint3 x) {
    uint3 result;
    result[0] = abs(x[0]);
    result[1] = abs(x[1]);
    result[2] = abs(x[2]);
    return result;
}
uint4 abs(uint4 x) {
    uint4 result;
    result[0] = abs(x[0]);
    result[1] = abs(x[1]);
    result[2] = abs(x[2]);
    result[3] = abs(x[3]);
    return result;
}
int2 abs(int2 x) {
    int2 result;
    result[0] = abs(x[0]);
    result[1] = abs(x[1]);
    return result;
}
int3 abs(int3 x) {
    int3 result;
    result[0] = abs(x[0]);
    result[1] = abs(x[1]);
    result[2] = abs(x[2]);
    return result;
}
int4 abs(int4 x) {
    int4 result;
    result[0] = abs(x[0]);
    result[1] = abs(x[1]);
    result[2] = abs(x[2]);
    result[3] = abs(x[3]);
    return result;
}
float2 abs(float2 x) {
    float2 result;
    result[0] = abs(x[0]);
    result[1] = abs(x[1]);
    return result;
}
float3 abs(float3 x) {
    float3 result;
    result[0] = abs(x[0]);
    result[1] = abs(x[1]);
    result[2] = abs(x[2]);
    return result;
}
float4 abs(float4 x) {
    float4 result;
    result[0] = abs(x[0]);
    result[1] = abs(x[1]);
    result[2] = abs(x[2]);
    result[3] = abs(x[3]);
    return result;
}
float2x2 abs(float2x2 x) {
    float2x2 result;
    result[0][0] = abs(x[0][0]);
    result[0][1] = abs(x[0][1]);
    result[1][0] = abs(x[1][0]);
    result[1][1] = abs(x[1][1]);
    return result;
}
float2x3 abs(float2x3 x) {
    float2x3 result;
    result[0][0] = abs(x[0][0]);
    result[0][1] = abs(x[0][1]);
    result[0][2] = abs(x[0][2]);
    result[1][0] = abs(x[1][0]);
    result[1][1] = abs(x[1][1]);
    result[1][2] = abs(x[1][2]);
    return result;
}
float2x4 abs(float2x4 x) {
    float2x4 result;
    result[0][0] = abs(x[0][0]);
    result[0][1] = abs(x[0][1]);
    result[0][2] = abs(x[0][2]);
    result[0][3] = abs(x[0][3]);
    result[1][0] = abs(x[1][0]);
    result[1][1] = abs(x[1][1]);
    result[1][2] = abs(x[1][2]);
    result[1][3] = abs(x[1][3]);
    return result;
}
float3x2 abs(float3x2 x) {
    float3x2 result;
    result[0][0] = abs(x[0][0]);
    result[0][1] = abs(x[0][1]);
    result[1][0] = abs(x[1][0]);
    result[1][1] = abs(x[1][1]);
    result[2][0] = abs(x[2][0]);
    result[2][1] = abs(x[2][1]);
    return result;
}
float3x3 abs(float3x3 x) {
    float3x3 result;
    result[0][0] = abs(x[0][0]);
    result[0][1] = abs(x[0][1]);
    result[0][2] = abs(x[0][2]);
    result[1][0] = abs(x[1][0]);
    result[1][1] = abs(x[1][1]);
    result[1][2] = abs(x[1][2]);
    result[2][0] = abs(x[2][0]);
    result[2][1] = abs(x[2][1]);
    result[2][2] = abs(x[2][2]);
    return result;
}
float3x4 abs(float3x4 x) {
    float3x4 result;
    result[0][0] = abs(x[0][0]);
    result[0][1] = abs(x[0][1]);
    result[0][2] = abs(x[0][2]);
    result[0][3] = abs(x[0][3]);
    result[1][0] = abs(x[1][0]);
    result[1][1] = abs(x[1][1]);
    result[1][2] = abs(x[1][2]);
    result[1][3] = abs(x[1][3]);
    result[2][0] = abs(x[2][0]);
    result[2][1] = abs(x[2][1]);
    result[2][2] = abs(x[2][2]);
    result[2][3] = abs(x[2][3]);
    return result;
}
float4x2 abs(float4x2 x) {
    float4x2 result;
    result[0][0] = abs(x[0][0]);
    result[0][1] = abs(x[0][1]);
    result[1][0] = abs(x[1][0]);
    result[1][1] = abs(x[1][1]);
    result[2][0] = abs(x[2][0]);
    result[2][1] = abs(x[2][1]);
    result[3][0] = abs(x[3][0]);
    result[3][1] = abs(x[3][1]);
    return result;
}
float4x3 abs(float4x3 x) {
    float4x3 result;
    result[0][0] = abs(x[0][0]);
    result[0][1] = abs(x[0][1]);
    result[0][2] = abs(x[0][2]);
    result[1][0] = abs(x[1][0]);
    result[1][1] = abs(x[1][1]);
    result[1][2] = abs(x[1][2]);
    result[2][0] = abs(x[2][0]);
    result[2][1] = abs(x[2][1]);
    result[2][2] = abs(x[2][2]);
    result[3][0] = abs(x[3][0]);
    result[3][1] = abs(x[3][1]);
    result[3][2] = abs(x[3][2]);
    return result;
}
float4x4 abs(float4x4 x) {
    float4x4 result;
    result[0][0] = abs(x[0][0]);
    result[0][1] = abs(x[0][1]);
    result[0][2] = abs(x[0][2]);
    result[0][3] = abs(x[0][3]);
    result[1][0] = abs(x[1][0]);
    result[1][1] = abs(x[1][1]);
    result[1][2] = abs(x[1][2]);
    result[1][3] = abs(x[1][3]);
    result[2][0] = abs(x[2][0]);
    result[2][1] = abs(x[2][1]);
    result[2][2] = abs(x[2][2]);
    result[2][3] = abs(x[2][3]);
    result[3][0] = abs(x[3][0]);
    result[3][1] = abs(x[3][1]);
    result[3][2] = abs(x[3][2]);
    result[3][3] = abs(x[3][3]);
    return result;
}


/* Functions named operator.wwyy */
bool4 operator.wwyy(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.y;
    result.w = v.y;
    return result;
}
uint4 operator.wwyy(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.y;
    result.w = v.y;
    return result;
}
int4 operator.wwyy(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.y;
    result.w = v.y;
    return result;
}
float4 operator.wwyy(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.y;
    result.w = v.y;
    return result;
}

/* Functions named round */
native float round(float);
float2 round(float2 x) {
    float2 result;
    result[0] = round(x[0]);
    result[1] = round(x[1]);
    return result;
}
float3 round(float3 x) {
    float3 result;
    result[0] = round(x[0]);
    result[1] = round(x[1]);
    result[2] = round(x[2]);
    return result;
}
float4 round(float4 x) {
    float4 result;
    result[0] = round(x[0]);
    result[1] = round(x[1]);
    result[2] = round(x[2]);
    result[3] = round(x[3]);
    return result;
}
float2x2 round(float2x2 x) {
    float2x2 result;
    result[0][0] = round(x[0][0]);
    result[0][1] = round(x[0][1]);
    result[1][0] = round(x[1][0]);
    result[1][1] = round(x[1][1]);
    return result;
}
float2x3 round(float2x3 x) {
    float2x3 result;
    result[0][0] = round(x[0][0]);
    result[0][1] = round(x[0][1]);
    result[0][2] = round(x[0][2]);
    result[1][0] = round(x[1][0]);
    result[1][1] = round(x[1][1]);
    result[1][2] = round(x[1][2]);
    return result;
}
float2x4 round(float2x4 x) {
    float2x4 result;
    result[0][0] = round(x[0][0]);
    result[0][1] = round(x[0][1]);
    result[0][2] = round(x[0][2]);
    result[0][3] = round(x[0][3]);
    result[1][0] = round(x[1][0]);
    result[1][1] = round(x[1][1]);
    result[1][2] = round(x[1][2]);
    result[1][3] = round(x[1][3]);
    return result;
}
float3x2 round(float3x2 x) {
    float3x2 result;
    result[0][0] = round(x[0][0]);
    result[0][1] = round(x[0][1]);
    result[1][0] = round(x[1][0]);
    result[1][1] = round(x[1][1]);
    result[2][0] = round(x[2][0]);
    result[2][1] = round(x[2][1]);
    return result;
}
float3x3 round(float3x3 x) {
    float3x3 result;
    result[0][0] = round(x[0][0]);
    result[0][1] = round(x[0][1]);
    result[0][2] = round(x[0][2]);
    result[1][0] = round(x[1][0]);
    result[1][1] = round(x[1][1]);
    result[1][2] = round(x[1][2]);
    result[2][0] = round(x[2][0]);
    result[2][1] = round(x[2][1]);
    result[2][2] = round(x[2][2]);
    return result;
}
float3x4 round(float3x4 x) {
    float3x4 result;
    result[0][0] = round(x[0][0]);
    result[0][1] = round(x[0][1]);
    result[0][2] = round(x[0][2]);
    result[0][3] = round(x[0][3]);
    result[1][0] = round(x[1][0]);
    result[1][1] = round(x[1][1]);
    result[1][2] = round(x[1][2]);
    result[1][3] = round(x[1][3]);
    result[2][0] = round(x[2][0]);
    result[2][1] = round(x[2][1]);
    result[2][2] = round(x[2][2]);
    result[2][3] = round(x[2][3]);
    return result;
}
float4x2 round(float4x2 x) {
    float4x2 result;
    result[0][0] = round(x[0][0]);
    result[0][1] = round(x[0][1]);
    result[1][0] = round(x[1][0]);
    result[1][1] = round(x[1][1]);
    result[2][0] = round(x[2][0]);
    result[2][1] = round(x[2][1]);
    result[3][0] = round(x[3][0]);
    result[3][1] = round(x[3][1]);
    return result;
}
float4x3 round(float4x3 x) {
    float4x3 result;
    result[0][0] = round(x[0][0]);
    result[0][1] = round(x[0][1]);
    result[0][2] = round(x[0][2]);
    result[1][0] = round(x[1][0]);
    result[1][1] = round(x[1][1]);
    result[1][2] = round(x[1][2]);
    result[2][0] = round(x[2][0]);
    result[2][1] = round(x[2][1]);
    result[2][2] = round(x[2][2]);
    result[3][0] = round(x[3][0]);
    result[3][1] = round(x[3][1]);
    result[3][2] = round(x[3][2]);
    return result;
}
float4x4 round(float4x4 x) {
    float4x4 result;
    result[0][0] = round(x[0][0]);
    result[0][1] = round(x[0][1]);
    result[0][2] = round(x[0][2]);
    result[0][3] = round(x[0][3]);
    result[1][0] = round(x[1][0]);
    result[1][1] = round(x[1][1]);
    result[1][2] = round(x[1][2]);
    result[1][3] = round(x[1][3]);
    result[2][0] = round(x[2][0]);
    result[2][1] = round(x[2][1]);
    result[2][2] = round(x[2][2]);
    result[2][3] = round(x[2][3]);
    result[3][0] = round(x[3][0]);
    result[3][1] = round(x[3][1]);
    result[3][2] = round(x[3][2]);
    result[3][3] = round(x[3][3]);
    return result;
}

/* Functions named mul */
uint mul(uint x, uint y) {
    return x * y;
}
int mul(int x, int y) {
    return x * y;
}
float mul(float x, float y) {
    return x * y;
}
uint2 mul(uint x, uint2 y) {
    uint2 result;
    result[0] = x * y[0];
    result[1] = x * y[1];
    return result;
}
uint2 mul(uint2 x, uint y) {
    uint2 result;
    result[0] = x[0] * y;
    result[1] = x[1] * y;
    return result;
}
uint3 mul(uint x, uint3 y) {
    uint3 result;
    result[0] = x * y[0];
    result[1] = x * y[1];
    result[2] = x * y[2];
    return result;
}
uint3 mul(uint3 x, uint y) {
    uint3 result;
    result[0] = x[0] * y;
    result[1] = x[1] * y;
    result[2] = x[2] * y;
    return result;
}
uint4 mul(uint x, uint4 y) {
    uint4 result;
    result[0] = x * y[0];
    result[1] = x * y[1];
    result[2] = x * y[2];
    result[3] = x * y[3];
    return result;
}
uint4 mul(uint4 x, uint y) {
    uint4 result;
    result[0] = x[0] * y;
    result[1] = x[1] * y;
    result[2] = x[2] * y;
    result[3] = x[3] * y;
    return result;
}
int2 mul(int x, int2 y) {
    int2 result;
    result[0] = x * y[0];
    result[1] = x * y[1];
    return result;
}
int2 mul(int2 x, int y) {
    int2 result;
    result[0] = x[0] * y;
    result[1] = x[1] * y;
    return result;
}
int3 mul(int x, int3 y) {
    int3 result;
    result[0] = x * y[0];
    result[1] = x * y[1];
    result[2] = x * y[2];
    return result;
}
int3 mul(int3 x, int y) {
    int3 result;
    result[0] = x[0] * y;
    result[1] = x[1] * y;
    result[2] = x[2] * y;
    return result;
}
int4 mul(int x, int4 y) {
    int4 result;
    result[0] = x * y[0];
    result[1] = x * y[1];
    result[2] = x * y[2];
    result[3] = x * y[3];
    return result;
}
int4 mul(int4 x, int y) {
    int4 result;
    result[0] = x[0] * y;
    result[1] = x[1] * y;
    result[2] = x[2] * y;
    result[3] = x[3] * y;
    return result;
}
float2 mul(float x, float2 y) {
    float2 result;
    result[0] = x * y[0];
    result[1] = x * y[1];
    return result;
}
float2 mul(float2 x, float y) {
    float2 result;
    result[0] = x[0] * y;
    result[1] = x[1] * y;
    return result;
}
float3 mul(float x, float3 y) {
    float3 result;
    result[0] = x * y[0];
    result[1] = x * y[1];
    result[2] = x * y[2];
    return result;
}
float3 mul(float3 x, float y) {
    float3 result;
    result[0] = x[0] * y;
    result[1] = x[1] * y;
    result[2] = x[2] * y;
    return result;
}
float4 mul(float x, float4 y) {
    float4 result;
    result[0] = x * y[0];
    result[1] = x * y[1];
    result[2] = x * y[2];
    result[3] = x * y[3];
    return result;
}
float4 mul(float4 x, float y) {
    float4 result;
    result[0] = x[0] * y;
    result[1] = x[1] * y;
    result[2] = x[2] * y;
    result[3] = x[3] * y;
    return result;
}
float2x2 mul(float x, float2x2 y) {
    float2x2 result;
    result[0][0] = x * y[0][0];
    result[0][1] = x * y[0][1];
    result[1][0] = x * y[1][0];
    result[1][1] = x * y[1][1];
    return result;
}
float2x2 mul(float2x2 x, float y) {
    float2x2 result;
    result[0][0] = x[0][0] * y;
    result[0][1] = x[0][1] * y;
    result[1][0] = x[1][0] * y;
    result[1][1] = x[1][1] * y;
    return result;
}
float2x3 mul(float x, float2x3 y) {
    float2x3 result;
    result[0][0] = x * y[0][0];
    result[0][1] = x * y[0][1];
    result[0][2] = x * y[0][2];
    result[1][0] = x * y[1][0];
    result[1][1] = x * y[1][1];
    result[1][2] = x * y[1][2];
    return result;
}
float2x3 mul(float2x3 x, float y) {
    float2x3 result;
    result[0][0] = x[0][0] * y;
    result[0][1] = x[0][1] * y;
    result[0][2] = x[0][2] * y;
    result[1][0] = x[1][0] * y;
    result[1][1] = x[1][1] * y;
    result[1][2] = x[1][2] * y;
    return result;
}
float2x4 mul(float x, float2x4 y) {
    float2x4 result;
    result[0][0] = x * y[0][0];
    result[0][1] = x * y[0][1];
    result[0][2] = x * y[0][2];
    result[0][3] = x * y[0][3];
    result[1][0] = x * y[1][0];
    result[1][1] = x * y[1][1];
    result[1][2] = x * y[1][2];
    result[1][3] = x * y[1][3];
    return result;
}
float2x4 mul(float2x4 x, float y) {
    float2x4 result;
    result[0][0] = x[0][0] * y;
    result[0][1] = x[0][1] * y;
    result[0][2] = x[0][2] * y;
    result[0][3] = x[0][3] * y;
    result[1][0] = x[1][0] * y;
    result[1][1] = x[1][1] * y;
    result[1][2] = x[1][2] * y;
    result[1][3] = x[1][3] * y;
    return result;
}
float3x2 mul(float x, float3x2 y) {
    float3x2 result;
    result[0][0] = x * y[0][0];
    result[0][1] = x * y[0][1];
    result[1][0] = x * y[1][0];
    result[1][1] = x * y[1][1];
    result[2][0] = x * y[2][0];
    result[2][1] = x * y[2][1];
    return result;
}
float3x2 mul(float3x2 x, float y) {
    float3x2 result;
    result[0][0] = x[0][0] * y;
    result[0][1] = x[0][1] * y;
    result[1][0] = x[1][0] * y;
    result[1][1] = x[1][1] * y;
    result[2][0] = x[2][0] * y;
    result[2][1] = x[2][1] * y;
    return result;
}
float3x3 mul(float x, float3x3 y) {
    float3x3 result;
    result[0][0] = x * y[0][0];
    result[0][1] = x * y[0][1];
    result[0][2] = x * y[0][2];
    result[1][0] = x * y[1][0];
    result[1][1] = x * y[1][1];
    result[1][2] = x * y[1][2];
    result[2][0] = x * y[2][0];
    result[2][1] = x * y[2][1];
    result[2][2] = x * y[2][2];
    return result;
}
float3x3 mul(float3x3 x, float y) {
    float3x3 result;
    result[0][0] = x[0][0] * y;
    result[0][1] = x[0][1] * y;
    result[0][2] = x[0][2] * y;
    result[1][0] = x[1][0] * y;
    result[1][1] = x[1][1] * y;
    result[1][2] = x[1][2] * y;
    result[2][0] = x[2][0] * y;
    result[2][1] = x[2][1] * y;
    result[2][2] = x[2][2] * y;
    return result;
}
float3x4 mul(float x, float3x4 y) {
    float3x4 result;
    result[0][0] = x * y[0][0];
    result[0][1] = x * y[0][1];
    result[0][2] = x * y[0][2];
    result[0][3] = x * y[0][3];
    result[1][0] = x * y[1][0];
    result[1][1] = x * y[1][1];
    result[1][2] = x * y[1][2];
    result[1][3] = x * y[1][3];
    result[2][0] = x * y[2][0];
    result[2][1] = x * y[2][1];
    result[2][2] = x * y[2][2];
    result[2][3] = x * y[2][3];
    return result;
}
float3x4 mul(float3x4 x, float y) {
    float3x4 result;
    result[0][0] = x[0][0] * y;
    result[0][1] = x[0][1] * y;
    result[0][2] = x[0][2] * y;
    result[0][3] = x[0][3] * y;
    result[1][0] = x[1][0] * y;
    result[1][1] = x[1][1] * y;
    result[1][2] = x[1][2] * y;
    result[1][3] = x[1][3] * y;
    result[2][0] = x[2][0] * y;
    result[2][1] = x[2][1] * y;
    result[2][2] = x[2][2] * y;
    result[2][3] = x[2][3] * y;
    return result;
}
float4x2 mul(float x, float4x2 y) {
    float4x2 result;
    result[0][0] = x * y[0][0];
    result[0][1] = x * y[0][1];
    result[1][0] = x * y[1][0];
    result[1][1] = x * y[1][1];
    result[2][0] = x * y[2][0];
    result[2][1] = x * y[2][1];
    result[3][0] = x * y[3][0];
    result[3][1] = x * y[3][1];
    return result;
}
float4x2 mul(float4x2 x, float y) {
    float4x2 result;
    result[0][0] = x[0][0] * y;
    result[0][1] = x[0][1] * y;
    result[1][0] = x[1][0] * y;
    result[1][1] = x[1][1] * y;
    result[2][0] = x[2][0] * y;
    result[2][1] = x[2][1] * y;
    result[3][0] = x[3][0] * y;
    result[3][1] = x[3][1] * y;
    return result;
}
float4x3 mul(float x, float4x3 y) {
    float4x3 result;
    result[0][0] = x * y[0][0];
    result[0][1] = x * y[0][1];
    result[0][2] = x * y[0][2];
    result[1][0] = x * y[1][0];
    result[1][1] = x * y[1][1];
    result[1][2] = x * y[1][2];
    result[2][0] = x * y[2][0];
    result[2][1] = x * y[2][1];
    result[2][2] = x * y[2][2];
    result[3][0] = x * y[3][0];
    result[3][1] = x * y[3][1];
    result[3][2] = x * y[3][2];
    return result;
}
float4x3 mul(float4x3 x, float y) {
    float4x3 result;
    result[0][0] = x[0][0] * y;
    result[0][1] = x[0][1] * y;
    result[0][2] = x[0][2] * y;
    result[1][0] = x[1][0] * y;
    result[1][1] = x[1][1] * y;
    result[1][2] = x[1][2] * y;
    result[2][0] = x[2][0] * y;
    result[2][1] = x[2][1] * y;
    result[2][2] = x[2][2] * y;
    result[3][0] = x[3][0] * y;
    result[3][1] = x[3][1] * y;
    result[3][2] = x[3][2] * y;
    return result;
}
float4x4 mul(float x, float4x4 y) {
    float4x4 result;
    result[0][0] = x * y[0][0];
    result[0][1] = x * y[0][1];
    result[0][2] = x * y[0][2];
    result[0][3] = x * y[0][3];
    result[1][0] = x * y[1][0];
    result[1][1] = x * y[1][1];
    result[1][2] = x * y[1][2];
    result[1][3] = x * y[1][3];
    result[2][0] = x * y[2][0];
    result[2][1] = x * y[2][1];
    result[2][2] = x * y[2][2];
    result[2][3] = x * y[2][3];
    result[3][0] = x * y[3][0];
    result[3][1] = x * y[3][1];
    result[3][2] = x * y[3][2];
    result[3][3] = x * y[3][3];
    return result;
}
float4x4 mul(float4x4 x, float y) {
    float4x4 result;
    result[0][0] = x[0][0] * y;
    result[0][1] = x[0][1] * y;
    result[0][2] = x[0][2] * y;
    result[0][3] = x[0][3] * y;
    result[1][0] = x[1][0] * y;
    result[1][1] = x[1][1] * y;
    result[1][2] = x[1][2] * y;
    result[1][3] = x[1][3] * y;
    result[2][0] = x[2][0] * y;
    result[2][1] = x[2][1] * y;
    result[2][2] = x[2][2] * y;
    result[2][3] = x[2][3] * y;
    result[3][0] = x[3][0] * y;
    result[3][1] = x[3][1] * y;
    result[3][2] = x[3][2] * y;
    result[3][3] = x[3][3] * y;
    return result;
}
uint mul(uint2 x, uint2 y) {
    return dot(x, y);
}
uint mul(uint3 x, uint3 y) {
    return dot(x, y);
}
uint mul(uint4 x, uint4 y) {
    return dot(x, y);
}
int mul(int2 x, int2 y) {
    return dot(x, y);
}
int mul(int3 x, int3 y) {
    return dot(x, y);
}
int mul(int4 x, int4 y) {
    return dot(x, y);
}
float mul(float2 x, float2 y) {
    return dot(x, y);
}
float mul(float3 x, float3 y) {
    return dot(x, y);
}
float mul(float4 x, float4 y) {
    return dot(x, y);
}
float2 mul(float2 x, float2x2 y) {
    float2 result;
    result[0] = 0;
    result[0] += x[0] * y[0][0];
    result[0] += x[1] * y[1][0];
    result[1] = 0;
    result[1] += x[0] * y[0][1];
    result[1] += x[1] * y[1][1];
    return result;
}
float2 mul(float2x2 x, float2 y) {
    float2 result;
    result[0] = 0;
    result[0] += x[0][0] * y[0];
    result[0] += x[0][1] * y[1];
    result[1] = 0;
    result[1] += x[1][0] * y[0];
    result[1] += x[1][1] * y[1];
    return result;
}
float3 mul(float2 x, float2x3 y) {
    float3 result;
    result[0] = 0;
    result[0] += x[0] * y[0][0];
    result[0] += x[1] * y[1][0];
    result[1] = 0;
    result[1] += x[0] * y[0][1];
    result[1] += x[1] * y[1][1];
    result[2] = 0;
    result[2] += x[0] * y[0][2];
    result[2] += x[1] * y[1][2];
    return result;
}
float2 mul(float2x3 x, float3 y) {
    float2 result;
    result[0] = 0;
    result[0] += x[0][0] * y[0];
    result[0] += x[0][1] * y[1];
    result[0] += x[0][2] * y[2];
    result[1] = 0;
    result[1] += x[1][0] * y[0];
    result[1] += x[1][1] * y[1];
    result[1] += x[1][2] * y[2];
    return result;
}
float4 mul(float2 x, float2x4 y) {
    float4 result;
    result[0] = 0;
    result[0] += x[0] * y[0][0];
    result[0] += x[1] * y[1][0];
    result[1] = 0;
    result[1] += x[0] * y[0][1];
    result[1] += x[1] * y[1][1];
    result[2] = 0;
    result[2] += x[0] * y[0][2];
    result[2] += x[1] * y[1][2];
    result[3] = 0;
    result[3] += x[0] * y[0][3];
    result[3] += x[1] * y[1][3];
    return result;
}
float2 mul(float2x4 x, float4 y) {
    float2 result;
    result[0] = 0;
    result[0] += x[0][0] * y[0];
    result[0] += x[0][1] * y[1];
    result[0] += x[0][2] * y[2];
    result[0] += x[0][3] * y[3];
    result[1] = 0;
    result[1] += x[1][0] * y[0];
    result[1] += x[1][1] * y[1];
    result[1] += x[1][2] * y[2];
    result[1] += x[1][3] * y[3];
    return result;
}
float2 mul(float3 x, float3x2 y) {
    float2 result;
    result[0] = 0;
    result[0] += x[0] * y[0][0];
    result[0] += x[1] * y[1][0];
    result[0] += x[2] * y[2][0];
    result[1] = 0;
    result[1] += x[0] * y[0][1];
    result[1] += x[1] * y[1][1];
    result[1] += x[2] * y[2][1];
    return result;
}
float3 mul(float3x2 x, float2 y) {
    float3 result;
    result[0] = 0;
    result[0] += x[0][0] * y[0];
    result[0] += x[0][1] * y[1];
    result[1] = 0;
    result[1] += x[1][0] * y[0];
    result[1] += x[1][1] * y[1];
    result[2] = 0;
    result[2] += x[2][0] * y[0];
    result[2] += x[2][1] * y[1];
    return result;
}
float3 mul(float3 x, float3x3 y) {
    float3 result;
    result[0] = 0;
    result[0] += x[0] * y[0][0];
    result[0] += x[1] * y[1][0];
    result[0] += x[2] * y[2][0];
    result[1] = 0;
    result[1] += x[0] * y[0][1];
    result[1] += x[1] * y[1][1];
    result[1] += x[2] * y[2][1];
    result[2] = 0;
    result[2] += x[0] * y[0][2];
    result[2] += x[1] * y[1][2];
    result[2] += x[2] * y[2][2];
    return result;
}
float3 mul(float3x3 x, float3 y) {
    float3 result;
    result[0] = 0;
    result[0] += x[0][0] * y[0];
    result[0] += x[0][1] * y[1];
    result[0] += x[0][2] * y[2];
    result[1] = 0;
    result[1] += x[1][0] * y[0];
    result[1] += x[1][1] * y[1];
    result[1] += x[1][2] * y[2];
    result[2] = 0;
    result[2] += x[2][0] * y[0];
    result[2] += x[2][1] * y[1];
    result[2] += x[2][2] * y[2];
    return result;
}
float4 mul(float3 x, float3x4 y) {
    float4 result;
    result[0] = 0;
    result[0] += x[0] * y[0][0];
    result[0] += x[1] * y[1][0];
    result[0] += x[2] * y[2][0];
    result[1] = 0;
    result[1] += x[0] * y[0][1];
    result[1] += x[1] * y[1][1];
    result[1] += x[2] * y[2][1];
    result[2] = 0;
    result[2] += x[0] * y[0][2];
    result[2] += x[1] * y[1][2];
    result[2] += x[2] * y[2][2];
    result[3] = 0;
    result[3] += x[0] * y[0][3];
    result[3] += x[1] * y[1][3];
    result[3] += x[2] * y[2][3];
    return result;
}
float3 mul(float3x4 x, float4 y) {
    float3 result;
    result[0] = 0;
    result[0] += x[0][0] * y[0];
    result[0] += x[0][1] * y[1];
    result[0] += x[0][2] * y[2];
    result[0] += x[0][3] * y[3];
    result[1] = 0;
    result[1] += x[1][0] * y[0];
    result[1] += x[1][1] * y[1];
    result[1] += x[1][2] * y[2];
    result[1] += x[1][3] * y[3];
    result[2] = 0;
    result[2] += x[2][0] * y[0];
    result[2] += x[2][1] * y[1];
    result[2] += x[2][2] * y[2];
    result[2] += x[2][3] * y[3];
    return result;
}
float2 mul(float4 x, float4x2 y) {
    float2 result;
    result[0] = 0;
    result[0] += x[0] * y[0][0];
    result[0] += x[1] * y[1][0];
    result[0] += x[2] * y[2][0];
    result[0] += x[3] * y[3][0];
    result[1] = 0;
    result[1] += x[0] * y[0][1];
    result[1] += x[1] * y[1][1];
    result[1] += x[2] * y[2][1];
    result[1] += x[3] * y[3][1];
    return result;
}
float4 mul(float4x2 x, float2 y) {
    float4 result;
    result[0] = 0;
    result[0] += x[0][0] * y[0];
    result[0] += x[0][1] * y[1];
    result[1] = 0;
    result[1] += x[1][0] * y[0];
    result[1] += x[1][1] * y[1];
    result[2] = 0;
    result[2] += x[2][0] * y[0];
    result[2] += x[2][1] * y[1];
    result[3] = 0;
    result[3] += x[3][0] * y[0];
    result[3] += x[3][1] * y[1];
    return result;
}
float3 mul(float4 x, float4x3 y) {
    float3 result;
    result[0] = 0;
    result[0] += x[0] * y[0][0];
    result[0] += x[1] * y[1][0];
    result[0] += x[2] * y[2][0];
    result[0] += x[3] * y[3][0];
    result[1] = 0;
    result[1] += x[0] * y[0][1];
    result[1] += x[1] * y[1][1];
    result[1] += x[2] * y[2][1];
    result[1] += x[3] * y[3][1];
    result[2] = 0;
    result[2] += x[0] * y[0][2];
    result[2] += x[1] * y[1][2];
    result[2] += x[2] * y[2][2];
    result[2] += x[3] * y[3][2];
    return result;
}
float4 mul(float4x3 x, float3 y) {
    float4 result;
    result[0] = 0;
    result[0] += x[0][0] * y[0];
    result[0] += x[0][1] * y[1];
    result[0] += x[0][2] * y[2];
    result[1] = 0;
    result[1] += x[1][0] * y[0];
    result[1] += x[1][1] * y[1];
    result[1] += x[1][2] * y[2];
    result[2] = 0;
    result[2] += x[2][0] * y[0];
    result[2] += x[2][1] * y[1];
    result[2] += x[2][2] * y[2];
    result[3] = 0;
    result[3] += x[3][0] * y[0];
    result[3] += x[3][1] * y[1];
    result[3] += x[3][2] * y[2];
    return result;
}
float4 mul(float4 x, float4x4 y) {
    float4 result;
    result[0] = 0;
    result[0] += x[0] * y[0][0];
    result[0] += x[1] * y[1][0];
    result[0] += x[2] * y[2][0];
    result[0] += x[3] * y[3][0];
    result[1] = 0;
    result[1] += x[0] * y[0][1];
    result[1] += x[1] * y[1][1];
    result[1] += x[2] * y[2][1];
    result[1] += x[3] * y[3][1];
    result[2] = 0;
    result[2] += x[0] * y[0][2];
    result[2] += x[1] * y[1][2];
    result[2] += x[2] * y[2][2];
    result[2] += x[3] * y[3][2];
    result[3] = 0;
    result[3] += x[0] * y[0][3];
    result[3] += x[1] * y[1][3];
    result[3] += x[2] * y[2][3];
    result[3] += x[3] * y[3][3];
    return result;
}
float4 mul(float4x4 x, float4 y) {
    float4 result;
    result[0] = 0;
    result[0] += x[0][0] * y[0];
    result[0] += x[0][1] * y[1];
    result[0] += x[0][2] * y[2];
    result[0] += x[0][3] * y[3];
    result[1] = 0;
    result[1] += x[1][0] * y[0];
    result[1] += x[1][1] * y[1];
    result[1] += x[1][2] * y[2];
    result[1] += x[1][3] * y[3];
    result[2] = 0;
    result[2] += x[2][0] * y[0];
    result[2] += x[2][1] * y[1];
    result[2] += x[2][2] * y[2];
    result[2] += x[2][3] * y[3];
    result[3] = 0;
    result[3] += x[3][0] * y[0];
    result[3] += x[3][1] * y[1];
    result[3] += x[3][2] * y[2];
    result[3] += x[3][3] * y[3];
    return result;
}
float2x2 mul(float2x2 x, float2x2 y) {
    float2x2 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[0][1] * y[1][0];
    result[0][1] = 0;
    result[0][1] += x[0][0] * y[0][1];
    result[0][1] += x[0][1] * y[1][1];
    result[1][0] = 0;
    result[1][0] += x[1][0] * y[0][0];
    result[1][0] += x[1][1] * y[1][0];
    result[1][1] = 0;
    result[1][1] += x[1][0] * y[0][1];
    result[1][1] += x[1][1] * y[1][1];
    return result;
}
float2x3 mul(float2x2 x, float2x3 y) {
    float2x3 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[0][1] * y[1][0];
    result[0][1] = 0;
    result[0][1] += x[0][0] * y[0][1];
    result[0][1] += x[0][1] * y[1][1];
    result[0][2] = 0;
    result[0][2] += x[0][0] * y[0][2];
    result[0][2] += x[0][1] * y[1][2];
    result[1][0] = 0;
    result[1][0] += x[1][0] * y[0][0];
    result[1][0] += x[1][1] * y[1][0];
    result[1][1] = 0;
    result[1][1] += x[1][0] * y[0][1];
    result[1][1] += x[1][1] * y[1][1];
    result[1][2] = 0;
    result[1][2] += x[1][0] * y[0][2];
    result[1][2] += x[1][1] * y[1][2];
    return result;
}
float2x4 mul(float2x2 x, float2x4 y) {
    float2x4 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[0][1] * y[1][0];
    result[0][1] = 0;
    result[0][1] += x[0][0] * y[0][1];
    result[0][1] += x[0][1] * y[1][1];
    result[0][2] = 0;
    result[0][2] += x[0][0] * y[0][2];
    result[0][2] += x[0][1] * y[1][2];
    result[0][3] = 0;
    result[0][3] += x[0][0] * y[0][3];
    result[0][3] += x[0][1] * y[1][3];
    result[1][0] = 0;
    result[1][0] += x[1][0] * y[0][0];
    result[1][0] += x[1][1] * y[1][0];
    result[1][1] = 0;
    result[1][1] += x[1][0] * y[0][1];
    result[1][1] += x[1][1] * y[1][1];
    result[1][2] = 0;
    result[1][2] += x[1][0] * y[0][2];
    result[1][2] += x[1][1] * y[1][2];
    result[1][3] = 0;
    result[1][3] += x[1][0] * y[0][3];
    result[1][3] += x[1][1] * y[1][3];
    return result;
}
float2x2 mul(float2x3 x, float3x2 y) {
    float2x2 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[0][1] * y[1][0];
    result[0][0] += x[0][2] * y[2][0];
    result[0][1] = 0;
    result[0][1] += x[0][0] * y[0][1];
    result[0][1] += x[0][1] * y[1][1];
    result[0][1] += x[0][2] * y[2][1];
    result[1][0] = 0;
    result[1][0] += x[1][0] * y[0][0];
    result[1][0] += x[1][1] * y[1][0];
    result[1][0] += x[1][2] * y[2][0];
    result[1][1] = 0;
    result[1][1] += x[1][0] * y[0][1];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[1][2] * y[2][1];
    return result;
}
float2x3 mul(float2x3 x, float3x3 y) {
    float2x3 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[0][1] * y[1][0];
    result[0][0] += x[0][2] * y[2][0];
    result[0][1] = 0;
    result[0][1] += x[0][0] * y[0][1];
    result[0][1] += x[0][1] * y[1][1];
    result[0][1] += x[0][2] * y[2][1];
    result[0][2] = 0;
    result[0][2] += x[0][0] * y[0][2];
    result[0][2] += x[0][1] * y[1][2];
    result[0][2] += x[0][2] * y[2][2];
    result[1][0] = 0;
    result[1][0] += x[1][0] * y[0][0];
    result[1][0] += x[1][1] * y[1][0];
    result[1][0] += x[1][2] * y[2][0];
    result[1][1] = 0;
    result[1][1] += x[1][0] * y[0][1];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[1][2] * y[2][1];
    result[1][2] = 0;
    result[1][2] += x[1][0] * y[0][2];
    result[1][2] += x[1][1] * y[1][2];
    result[1][2] += x[1][2] * y[2][2];
    return result;
}
float2x4 mul(float2x3 x, float3x4 y) {
    float2x4 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[0][1] * y[1][0];
    result[0][0] += x[0][2] * y[2][0];
    result[0][1] = 0;
    result[0][1] += x[0][0] * y[0][1];
    result[0][1] += x[0][1] * y[1][1];
    result[0][1] += x[0][2] * y[2][1];
    result[0][2] = 0;
    result[0][2] += x[0][0] * y[0][2];
    result[0][2] += x[0][1] * y[1][2];
    result[0][2] += x[0][2] * y[2][2];
    result[0][3] = 0;
    result[0][3] += x[0][0] * y[0][3];
    result[0][3] += x[0][1] * y[1][3];
    result[0][3] += x[0][2] * y[2][3];
    result[1][0] = 0;
    result[1][0] += x[1][0] * y[0][0];
    result[1][0] += x[1][1] * y[1][0];
    result[1][0] += x[1][2] * y[2][0];
    result[1][1] = 0;
    result[1][1] += x[1][0] * y[0][1];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[1][2] * y[2][1];
    result[1][2] = 0;
    result[1][2] += x[1][0] * y[0][2];
    result[1][2] += x[1][1] * y[1][2];
    result[1][2] += x[1][2] * y[2][2];
    result[1][3] = 0;
    result[1][3] += x[1][0] * y[0][3];
    result[1][3] += x[1][1] * y[1][3];
    result[1][3] += x[1][2] * y[2][3];
    return result;
}
float2x2 mul(float2x4 x, float4x2 y) {
    float2x2 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[0][1] * y[1][0];
    result[0][0] += x[0][2] * y[2][0];
    result[0][0] += x[0][3] * y[3][0];
    result[0][1] = 0;
    result[0][1] += x[0][0] * y[0][1];
    result[0][1] += x[0][1] * y[1][1];
    result[0][1] += x[0][2] * y[2][1];
    result[0][1] += x[0][3] * y[3][1];
    result[1][0] = 0;
    result[1][0] += x[1][0] * y[0][0];
    result[1][0] += x[1][1] * y[1][0];
    result[1][0] += x[1][2] * y[2][0];
    result[1][0] += x[1][3] * y[3][0];
    result[1][1] = 0;
    result[1][1] += x[1][0] * y[0][1];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[1][2] * y[2][1];
    result[1][1] += x[1][3] * y[3][1];
    return result;
}
float2x3 mul(float2x4 x, float4x3 y) {
    float2x3 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[0][1] * y[1][0];
    result[0][0] += x[0][2] * y[2][0];
    result[0][0] += x[0][3] * y[3][0];
    result[0][1] = 0;
    result[0][1] += x[0][0] * y[0][1];
    result[0][1] += x[0][1] * y[1][1];
    result[0][1] += x[0][2] * y[2][1];
    result[0][1] += x[0][3] * y[3][1];
    result[0][2] = 0;
    result[0][2] += x[0][0] * y[0][2];
    result[0][2] += x[0][1] * y[1][2];
    result[0][2] += x[0][2] * y[2][2];
    result[0][2] += x[0][3] * y[3][2];
    result[1][0] = 0;
    result[1][0] += x[1][0] * y[0][0];
    result[1][0] += x[1][1] * y[1][0];
    result[1][0] += x[1][2] * y[2][0];
    result[1][0] += x[1][3] * y[3][0];
    result[1][1] = 0;
    result[1][1] += x[1][0] * y[0][1];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[1][2] * y[2][1];
    result[1][1] += x[1][3] * y[3][1];
    result[1][2] = 0;
    result[1][2] += x[1][0] * y[0][2];
    result[1][2] += x[1][1] * y[1][2];
    result[1][2] += x[1][2] * y[2][2];
    result[1][2] += x[1][3] * y[3][2];
    return result;
}
float2x4 mul(float2x4 x, float4x4 y) {
    float2x4 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[0][1] * y[1][0];
    result[0][0] += x[0][2] * y[2][0];
    result[0][0] += x[0][3] * y[3][0];
    result[0][1] = 0;
    result[0][1] += x[0][0] * y[0][1];
    result[0][1] += x[0][1] * y[1][1];
    result[0][1] += x[0][2] * y[2][1];
    result[0][1] += x[0][3] * y[3][1];
    result[0][2] = 0;
    result[0][2] += x[0][0] * y[0][2];
    result[0][2] += x[0][1] * y[1][2];
    result[0][2] += x[0][2] * y[2][2];
    result[0][2] += x[0][3] * y[3][2];
    result[0][3] = 0;
    result[0][3] += x[0][0] * y[0][3];
    result[0][3] += x[0][1] * y[1][3];
    result[0][3] += x[0][2] * y[2][3];
    result[0][3] += x[0][3] * y[3][3];
    result[1][0] = 0;
    result[1][0] += x[1][0] * y[0][0];
    result[1][0] += x[1][1] * y[1][0];
    result[1][0] += x[1][2] * y[2][0];
    result[1][0] += x[1][3] * y[3][0];
    result[1][1] = 0;
    result[1][1] += x[1][0] * y[0][1];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[1][2] * y[2][1];
    result[1][1] += x[1][3] * y[3][1];
    result[1][2] = 0;
    result[1][2] += x[1][0] * y[0][2];
    result[1][2] += x[1][1] * y[1][2];
    result[1][2] += x[1][2] * y[2][2];
    result[1][2] += x[1][3] * y[3][2];
    result[1][3] = 0;
    result[1][3] += x[1][0] * y[0][3];
    result[1][3] += x[1][1] * y[1][3];
    result[1][3] += x[1][2] * y[2][3];
    result[1][3] += x[1][3] * y[3][3];
    return result;
}
float3x2 mul(float3x2 x, float2x2 y) {
    float3x2 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[0][1] * y[1][0];
    result[0][1] = 0;
    result[0][1] += x[0][0] * y[0][1];
    result[0][1] += x[0][1] * y[1][1];
    result[1][0] = 0;
    result[1][0] += x[1][0] * y[0][0];
    result[1][0] += x[1][1] * y[1][0];
    result[1][1] = 0;
    result[1][1] += x[1][0] * y[0][1];
    result[1][1] += x[1][1] * y[1][1];
    result[2][0] = 0;
    result[2][0] += x[2][0] * y[0][0];
    result[2][0] += x[2][1] * y[1][0];
    result[2][1] = 0;
    result[2][1] += x[2][0] * y[0][1];
    result[2][1] += x[2][1] * y[1][1];
    return result;
}
float3x3 mul(float3x2 x, float2x3 y) {
    float3x3 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[0][1] * y[1][0];
    result[0][1] = 0;
    result[0][1] += x[0][0] * y[0][1];
    result[0][1] += x[0][1] * y[1][1];
    result[0][2] = 0;
    result[0][2] += x[0][0] * y[0][2];
    result[0][2] += x[0][1] * y[1][2];
    result[1][0] = 0;
    result[1][0] += x[1][0] * y[0][0];
    result[1][0] += x[1][1] * y[1][0];
    result[1][1] = 0;
    result[1][1] += x[1][0] * y[0][1];
    result[1][1] += x[1][1] * y[1][1];
    result[1][2] = 0;
    result[1][2] += x[1][0] * y[0][2];
    result[1][2] += x[1][1] * y[1][2];
    result[2][0] = 0;
    result[2][0] += x[2][0] * y[0][0];
    result[2][0] += x[2][1] * y[1][0];
    result[2][1] = 0;
    result[2][1] += x[2][0] * y[0][1];
    result[2][1] += x[2][1] * y[1][1];
    result[2][2] = 0;
    result[2][2] += x[2][0] * y[0][2];
    result[2][2] += x[2][1] * y[1][2];
    return result;
}
float3x4 mul(float3x2 x, float2x4 y) {
    float3x4 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[0][1] * y[1][0];
    result[0][1] = 0;
    result[0][1] += x[0][0] * y[0][1];
    result[0][1] += x[0][1] * y[1][1];
    result[0][2] = 0;
    result[0][2] += x[0][0] * y[0][2];
    result[0][2] += x[0][1] * y[1][2];
    result[0][3] = 0;
    result[0][3] += x[0][0] * y[0][3];
    result[0][3] += x[0][1] * y[1][3];
    result[1][0] = 0;
    result[1][0] += x[1][0] * y[0][0];
    result[1][0] += x[1][1] * y[1][0];
    result[1][1] = 0;
    result[1][1] += x[1][0] * y[0][1];
    result[1][1] += x[1][1] * y[1][1];
    result[1][2] = 0;
    result[1][2] += x[1][0] * y[0][2];
    result[1][2] += x[1][1] * y[1][2];
    result[1][3] = 0;
    result[1][3] += x[1][0] * y[0][3];
    result[1][3] += x[1][1] * y[1][3];
    result[2][0] = 0;
    result[2][0] += x[2][0] * y[0][0];
    result[2][0] += x[2][1] * y[1][0];
    result[2][1] = 0;
    result[2][1] += x[2][0] * y[0][1];
    result[2][1] += x[2][1] * y[1][1];
    result[2][2] = 0;
    result[2][2] += x[2][0] * y[0][2];
    result[2][2] += x[2][1] * y[1][2];
    result[2][3] = 0;
    result[2][3] += x[2][0] * y[0][3];
    result[2][3] += x[2][1] * y[1][3];
    return result;
}
float3x2 mul(float3x3 x, float3x2 y) {
    float3x2 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[0][1] * y[1][0];
    result[0][0] += x[0][2] * y[2][0];
    result[0][1] = 0;
    result[0][1] += x[0][0] * y[0][1];
    result[0][1] += x[0][1] * y[1][1];
    result[0][1] += x[0][2] * y[2][1];
    result[1][0] = 0;
    result[1][0] += x[1][0] * y[0][0];
    result[1][0] += x[1][1] * y[1][0];
    result[1][0] += x[1][2] * y[2][0];
    result[1][1] = 0;
    result[1][1] += x[1][0] * y[0][1];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[1][2] * y[2][1];
    result[2][0] = 0;
    result[2][0] += x[2][0] * y[0][0];
    result[2][0] += x[2][1] * y[1][0];
    result[2][0] += x[2][2] * y[2][0];
    result[2][1] = 0;
    result[2][1] += x[2][0] * y[0][1];
    result[2][1] += x[2][1] * y[1][1];
    result[2][1] += x[2][2] * y[2][1];
    return result;
}
float3x3 mul(float3x3 x, float3x3 y) {
    float3x3 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[0][1] * y[1][0];
    result[0][0] += x[0][2] * y[2][0];
    result[0][1] = 0;
    result[0][1] += x[0][0] * y[0][1];
    result[0][1] += x[0][1] * y[1][1];
    result[0][1] += x[0][2] * y[2][1];
    result[0][2] = 0;
    result[0][2] += x[0][0] * y[0][2];
    result[0][2] += x[0][1] * y[1][2];
    result[0][2] += x[0][2] * y[2][2];
    result[1][0] = 0;
    result[1][0] += x[1][0] * y[0][0];
    result[1][0] += x[1][1] * y[1][0];
    result[1][0] += x[1][2] * y[2][0];
    result[1][1] = 0;
    result[1][1] += x[1][0] * y[0][1];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[1][2] * y[2][1];
    result[1][2] = 0;
    result[1][2] += x[1][0] * y[0][2];
    result[1][2] += x[1][1] * y[1][2];
    result[1][2] += x[1][2] * y[2][2];
    result[2][0] = 0;
    result[2][0] += x[2][0] * y[0][0];
    result[2][0] += x[2][1] * y[1][0];
    result[2][0] += x[2][2] * y[2][0];
    result[2][1] = 0;
    result[2][1] += x[2][0] * y[0][1];
    result[2][1] += x[2][1] * y[1][1];
    result[2][1] += x[2][2] * y[2][1];
    result[2][2] = 0;
    result[2][2] += x[2][0] * y[0][2];
    result[2][2] += x[2][1] * y[1][2];
    result[2][2] += x[2][2] * y[2][2];
    return result;
}
float3x4 mul(float3x3 x, float3x4 y) {
    float3x4 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[0][1] * y[1][0];
    result[0][0] += x[0][2] * y[2][0];
    result[0][1] = 0;
    result[0][1] += x[0][0] * y[0][1];
    result[0][1] += x[0][1] * y[1][1];
    result[0][1] += x[0][2] * y[2][1];
    result[0][2] = 0;
    result[0][2] += x[0][0] * y[0][2];
    result[0][2] += x[0][1] * y[1][2];
    result[0][2] += x[0][2] * y[2][2];
    result[0][3] = 0;
    result[0][3] += x[0][0] * y[0][3];
    result[0][3] += x[0][1] * y[1][3];
    result[0][3] += x[0][2] * y[2][3];
    result[1][0] = 0;
    result[1][0] += x[1][0] * y[0][0];
    result[1][0] += x[1][1] * y[1][0];
    result[1][0] += x[1][2] * y[2][0];
    result[1][1] = 0;
    result[1][1] += x[1][0] * y[0][1];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[1][2] * y[2][1];
    result[1][2] = 0;
    result[1][2] += x[1][0] * y[0][2];
    result[1][2] += x[1][1] * y[1][2];
    result[1][2] += x[1][2] * y[2][2];
    result[1][3] = 0;
    result[1][3] += x[1][0] * y[0][3];
    result[1][3] += x[1][1] * y[1][3];
    result[1][3] += x[1][2] * y[2][3];
    result[2][0] = 0;
    result[2][0] += x[2][0] * y[0][0];
    result[2][0] += x[2][1] * y[1][0];
    result[2][0] += x[2][2] * y[2][0];
    result[2][1] = 0;
    result[2][1] += x[2][0] * y[0][1];
    result[2][1] += x[2][1] * y[1][1];
    result[2][1] += x[2][2] * y[2][1];
    result[2][2] = 0;
    result[2][2] += x[2][0] * y[0][2];
    result[2][2] += x[2][1] * y[1][2];
    result[2][2] += x[2][2] * y[2][2];
    result[2][3] = 0;
    result[2][3] += x[2][0] * y[0][3];
    result[2][3] += x[2][1] * y[1][3];
    result[2][3] += x[2][2] * y[2][3];
    return result;
}
float3x2 mul(float3x4 x, float4x2 y) {
    float3x2 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[0][1] * y[1][0];
    result[0][0] += x[0][2] * y[2][0];
    result[0][0] += x[0][3] * y[3][0];
    result[0][1] = 0;
    result[0][1] += x[0][0] * y[0][1];
    result[0][1] += x[0][1] * y[1][1];
    result[0][1] += x[0][2] * y[2][1];
    result[0][1] += x[0][3] * y[3][1];
    result[1][0] = 0;
    result[1][0] += x[1][0] * y[0][0];
    result[1][0] += x[1][1] * y[1][0];
    result[1][0] += x[1][2] * y[2][0];
    result[1][0] += x[1][3] * y[3][0];
    result[1][1] = 0;
    result[1][1] += x[1][0] * y[0][1];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[1][2] * y[2][1];
    result[1][1] += x[1][3] * y[3][1];
    result[2][0] = 0;
    result[2][0] += x[2][0] * y[0][0];
    result[2][0] += x[2][1] * y[1][0];
    result[2][0] += x[2][2] * y[2][0];
    result[2][0] += x[2][3] * y[3][0];
    result[2][1] = 0;
    result[2][1] += x[2][0] * y[0][1];
    result[2][1] += x[2][1] * y[1][1];
    result[2][1] += x[2][2] * y[2][1];
    result[2][1] += x[2][3] * y[3][1];
    return result;
}
float3x3 mul(float3x4 x, float4x3 y) {
    float3x3 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[0][1] * y[1][0];
    result[0][0] += x[0][2] * y[2][0];
    result[0][0] += x[0][3] * y[3][0];
    result[0][1] = 0;
    result[0][1] += x[0][0] * y[0][1];
    result[0][1] += x[0][1] * y[1][1];
    result[0][1] += x[0][2] * y[2][1];
    result[0][1] += x[0][3] * y[3][1];
    result[0][2] = 0;
    result[0][2] += x[0][0] * y[0][2];
    result[0][2] += x[0][1] * y[1][2];
    result[0][2] += x[0][2] * y[2][2];
    result[0][2] += x[0][3] * y[3][2];
    result[1][0] = 0;
    result[1][0] += x[1][0] * y[0][0];
    result[1][0] += x[1][1] * y[1][0];
    result[1][0] += x[1][2] * y[2][0];
    result[1][0] += x[1][3] * y[3][0];
    result[1][1] = 0;
    result[1][1] += x[1][0] * y[0][1];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[1][2] * y[2][1];
    result[1][1] += x[1][3] * y[3][1];
    result[1][2] = 0;
    result[1][2] += x[1][0] * y[0][2];
    result[1][2] += x[1][1] * y[1][2];
    result[1][2] += x[1][2] * y[2][2];
    result[1][2] += x[1][3] * y[3][2];
    result[2][0] = 0;
    result[2][0] += x[2][0] * y[0][0];
    result[2][0] += x[2][1] * y[1][0];
    result[2][0] += x[2][2] * y[2][0];
    result[2][0] += x[2][3] * y[3][0];
    result[2][1] = 0;
    result[2][1] += x[2][0] * y[0][1];
    result[2][1] += x[2][1] * y[1][1];
    result[2][1] += x[2][2] * y[2][1];
    result[2][1] += x[2][3] * y[3][1];
    result[2][2] = 0;
    result[2][2] += x[2][0] * y[0][2];
    result[2][2] += x[2][1] * y[1][2];
    result[2][2] += x[2][2] * y[2][2];
    result[2][2] += x[2][3] * y[3][2];
    return result;
}
float3x4 mul(float3x4 x, float4x4 y) {
    float3x4 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[0][1] * y[1][0];
    result[0][0] += x[0][2] * y[2][0];
    result[0][0] += x[0][3] * y[3][0];
    result[0][1] = 0;
    result[0][1] += x[0][0] * y[0][1];
    result[0][1] += x[0][1] * y[1][1];
    result[0][1] += x[0][2] * y[2][1];
    result[0][1] += x[0][3] * y[3][1];
    result[0][2] = 0;
    result[0][2] += x[0][0] * y[0][2];
    result[0][2] += x[0][1] * y[1][2];
    result[0][2] += x[0][2] * y[2][2];
    result[0][2] += x[0][3] * y[3][2];
    result[0][3] = 0;
    result[0][3] += x[0][0] * y[0][3];
    result[0][3] += x[0][1] * y[1][3];
    result[0][3] += x[0][2] * y[2][3];
    result[0][3] += x[0][3] * y[3][3];
    result[1][0] = 0;
    result[1][0] += x[1][0] * y[0][0];
    result[1][0] += x[1][1] * y[1][0];
    result[1][0] += x[1][2] * y[2][0];
    result[1][0] += x[1][3] * y[3][0];
    result[1][1] = 0;
    result[1][1] += x[1][0] * y[0][1];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[1][2] * y[2][1];
    result[1][1] += x[1][3] * y[3][1];
    result[1][2] = 0;
    result[1][2] += x[1][0] * y[0][2];
    result[1][2] += x[1][1] * y[1][2];
    result[1][2] += x[1][2] * y[2][2];
    result[1][2] += x[1][3] * y[3][2];
    result[1][3] = 0;
    result[1][3] += x[1][0] * y[0][3];
    result[1][3] += x[1][1] * y[1][3];
    result[1][3] += x[1][2] * y[2][3];
    result[1][3] += x[1][3] * y[3][3];
    result[2][0] = 0;
    result[2][0] += x[2][0] * y[0][0];
    result[2][0] += x[2][1] * y[1][0];
    result[2][0] += x[2][2] * y[2][0];
    result[2][0] += x[2][3] * y[3][0];
    result[2][1] = 0;
    result[2][1] += x[2][0] * y[0][1];
    result[2][1] += x[2][1] * y[1][1];
    result[2][1] += x[2][2] * y[2][1];
    result[2][1] += x[2][3] * y[3][1];
    result[2][2] = 0;
    result[2][2] += x[2][0] * y[0][2];
    result[2][2] += x[2][1] * y[1][2];
    result[2][2] += x[2][2] * y[2][2];
    result[2][2] += x[2][3] * y[3][2];
    result[2][3] = 0;
    result[2][3] += x[2][0] * y[0][3];
    result[2][3] += x[2][1] * y[1][3];
    result[2][3] += x[2][2] * y[2][3];
    result[2][3] += x[2][3] * y[3][3];
    return result;
}
float4x2 mul(float4x2 x, float2x2 y) {
    float4x2 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[0][1] * y[1][0];
    result[0][1] = 0;
    result[0][1] += x[0][0] * y[0][1];
    result[0][1] += x[0][1] * y[1][1];
    result[1][0] = 0;
    result[1][0] += x[1][0] * y[0][0];
    result[1][0] += x[1][1] * y[1][0];
    result[1][1] = 0;
    result[1][1] += x[1][0] * y[0][1];
    result[1][1] += x[1][1] * y[1][1];
    result[2][0] = 0;
    result[2][0] += x[2][0] * y[0][0];
    result[2][0] += x[2][1] * y[1][0];
    result[2][1] = 0;
    result[2][1] += x[2][0] * y[0][1];
    result[2][1] += x[2][1] * y[1][1];
    result[3][0] = 0;
    result[3][0] += x[3][0] * y[0][0];
    result[3][0] += x[3][1] * y[1][0];
    result[3][1] = 0;
    result[3][1] += x[3][0] * y[0][1];
    result[3][1] += x[3][1] * y[1][1];
    return result;
}
float4x3 mul(float4x2 x, float2x3 y) {
    float4x3 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[0][1] * y[1][0];
    result[0][1] = 0;
    result[0][1] += x[0][0] * y[0][1];
    result[0][1] += x[0][1] * y[1][1];
    result[0][2] = 0;
    result[0][2] += x[0][0] * y[0][2];
    result[0][2] += x[0][1] * y[1][2];
    result[1][0] = 0;
    result[1][0] += x[1][0] * y[0][0];
    result[1][0] += x[1][1] * y[1][0];
    result[1][1] = 0;
    result[1][1] += x[1][0] * y[0][1];
    result[1][1] += x[1][1] * y[1][1];
    result[1][2] = 0;
    result[1][2] += x[1][0] * y[0][2];
    result[1][2] += x[1][1] * y[1][2];
    result[2][0] = 0;
    result[2][0] += x[2][0] * y[0][0];
    result[2][0] += x[2][1] * y[1][0];
    result[2][1] = 0;
    result[2][1] += x[2][0] * y[0][1];
    result[2][1] += x[2][1] * y[1][1];
    result[2][2] = 0;
    result[2][2] += x[2][0] * y[0][2];
    result[2][2] += x[2][1] * y[1][2];
    result[3][0] = 0;
    result[3][0] += x[3][0] * y[0][0];
    result[3][0] += x[3][1] * y[1][0];
    result[3][1] = 0;
    result[3][1] += x[3][0] * y[0][1];
    result[3][1] += x[3][1] * y[1][1];
    result[3][2] = 0;
    result[3][2] += x[3][0] * y[0][2];
    result[3][2] += x[3][1] * y[1][2];
    return result;
}
float4x4 mul(float4x2 x, float2x4 y) {
    float4x4 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[0][1] * y[1][0];
    result[0][1] = 0;
    result[0][1] += x[0][0] * y[0][1];
    result[0][1] += x[0][1] * y[1][1];
    result[0][2] = 0;
    result[0][2] += x[0][0] * y[0][2];
    result[0][2] += x[0][1] * y[1][2];
    result[0][3] = 0;
    result[0][3] += x[0][0] * y[0][3];
    result[0][3] += x[0][1] * y[1][3];
    result[1][0] = 0;
    result[1][0] += x[1][0] * y[0][0];
    result[1][0] += x[1][1] * y[1][0];
    result[1][1] = 0;
    result[1][1] += x[1][0] * y[0][1];
    result[1][1] += x[1][1] * y[1][1];
    result[1][2] = 0;
    result[1][2] += x[1][0] * y[0][2];
    result[1][2] += x[1][1] * y[1][2];
    result[1][3] = 0;
    result[1][3] += x[1][0] * y[0][3];
    result[1][3] += x[1][1] * y[1][3];
    result[2][0] = 0;
    result[2][0] += x[2][0] * y[0][0];
    result[2][0] += x[2][1] * y[1][0];
    result[2][1] = 0;
    result[2][1] += x[2][0] * y[0][1];
    result[2][1] += x[2][1] * y[1][1];
    result[2][2] = 0;
    result[2][2] += x[2][0] * y[0][2];
    result[2][2] += x[2][1] * y[1][2];
    result[2][3] = 0;
    result[2][3] += x[2][0] * y[0][3];
    result[2][3] += x[2][1] * y[1][3];
    result[3][0] = 0;
    result[3][0] += x[3][0] * y[0][0];
    result[3][0] += x[3][1] * y[1][0];
    result[3][1] = 0;
    result[3][1] += x[3][0] * y[0][1];
    result[3][1] += x[3][1] * y[1][1];
    result[3][2] = 0;
    result[3][2] += x[3][0] * y[0][2];
    result[3][2] += x[3][1] * y[1][2];
    result[3][3] = 0;
    result[3][3] += x[3][0] * y[0][3];
    result[3][3] += x[3][1] * y[1][3];
    return result;
}
float4x2 mul(float4x3 x, float3x2 y) {
    float4x2 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[0][1] * y[1][0];
    result[0][0] += x[0][2] * y[2][0];
    result[0][1] = 0;
    result[0][1] += x[0][0] * y[0][1];
    result[0][1] += x[0][1] * y[1][1];
    result[0][1] += x[0][2] * y[2][1];
    result[1][0] = 0;
    result[1][0] += x[1][0] * y[0][0];
    result[1][0] += x[1][1] * y[1][0];
    result[1][0] += x[1][2] * y[2][0];
    result[1][1] = 0;
    result[1][1] += x[1][0] * y[0][1];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[1][2] * y[2][1];
    result[2][0] = 0;
    result[2][0] += x[2][0] * y[0][0];
    result[2][0] += x[2][1] * y[1][0];
    result[2][0] += x[2][2] * y[2][0];
    result[2][1] = 0;
    result[2][1] += x[2][0] * y[0][1];
    result[2][1] += x[2][1] * y[1][1];
    result[2][1] += x[2][2] * y[2][1];
    result[3][0] = 0;
    result[3][0] += x[3][0] * y[0][0];
    result[3][0] += x[3][1] * y[1][0];
    result[3][0] += x[3][2] * y[2][0];
    result[3][1] = 0;
    result[3][1] += x[3][0] * y[0][1];
    result[3][1] += x[3][1] * y[1][1];
    result[3][1] += x[3][2] * y[2][1];
    return result;
}
float4x3 mul(float4x3 x, float3x3 y) {
    float4x3 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[0][1] * y[1][0];
    result[0][0] += x[0][2] * y[2][0];
    result[0][1] = 0;
    result[0][1] += x[0][0] * y[0][1];
    result[0][1] += x[0][1] * y[1][1];
    result[0][1] += x[0][2] * y[2][1];
    result[0][2] = 0;
    result[0][2] += x[0][0] * y[0][2];
    result[0][2] += x[0][1] * y[1][2];
    result[0][2] += x[0][2] * y[2][2];
    result[1][0] = 0;
    result[1][0] += x[1][0] * y[0][0];
    result[1][0] += x[1][1] * y[1][0];
    result[1][0] += x[1][2] * y[2][0];
    result[1][1] = 0;
    result[1][1] += x[1][0] * y[0][1];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[1][2] * y[2][1];
    result[1][2] = 0;
    result[1][2] += x[1][0] * y[0][2];
    result[1][2] += x[1][1] * y[1][2];
    result[1][2] += x[1][2] * y[2][2];
    result[2][0] = 0;
    result[2][0] += x[2][0] * y[0][0];
    result[2][0] += x[2][1] * y[1][0];
    result[2][0] += x[2][2] * y[2][0];
    result[2][1] = 0;
    result[2][1] += x[2][0] * y[0][1];
    result[2][1] += x[2][1] * y[1][1];
    result[2][1] += x[2][2] * y[2][1];
    result[2][2] = 0;
    result[2][2] += x[2][0] * y[0][2];
    result[2][2] += x[2][1] * y[1][2];
    result[2][2] += x[2][2] * y[2][2];
    result[3][0] = 0;
    result[3][0] += x[3][0] * y[0][0];
    result[3][0] += x[3][1] * y[1][0];
    result[3][0] += x[3][2] * y[2][0];
    result[3][1] = 0;
    result[3][1] += x[3][0] * y[0][1];
    result[3][1] += x[3][1] * y[1][1];
    result[3][1] += x[3][2] * y[2][1];
    result[3][2] = 0;
    result[3][2] += x[3][0] * y[0][2];
    result[3][2] += x[3][1] * y[1][2];
    result[3][2] += x[3][2] * y[2][2];
    return result;
}
float4x4 mul(float4x3 x, float3x4 y) {
    float4x4 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[0][1] * y[1][0];
    result[0][0] += x[0][2] * y[2][0];
    result[0][1] = 0;
    result[0][1] += x[0][0] * y[0][1];
    result[0][1] += x[0][1] * y[1][1];
    result[0][1] += x[0][2] * y[2][1];
    result[0][2] = 0;
    result[0][2] += x[0][0] * y[0][2];
    result[0][2] += x[0][1] * y[1][2];
    result[0][2] += x[0][2] * y[2][2];
    result[0][3] = 0;
    result[0][3] += x[0][0] * y[0][3];
    result[0][3] += x[0][1] * y[1][3];
    result[0][3] += x[0][2] * y[2][3];
    result[1][0] = 0;
    result[1][0] += x[1][0] * y[0][0];
    result[1][0] += x[1][1] * y[1][0];
    result[1][0] += x[1][2] * y[2][0];
    result[1][1] = 0;
    result[1][1] += x[1][0] * y[0][1];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[1][2] * y[2][1];
    result[1][2] = 0;
    result[1][2] += x[1][0] * y[0][2];
    result[1][2] += x[1][1] * y[1][2];
    result[1][2] += x[1][2] * y[2][2];
    result[1][3] = 0;
    result[1][3] += x[1][0] * y[0][3];
    result[1][3] += x[1][1] * y[1][3];
    result[1][3] += x[1][2] * y[2][3];
    result[2][0] = 0;
    result[2][0] += x[2][0] * y[0][0];
    result[2][0] += x[2][1] * y[1][0];
    result[2][0] += x[2][2] * y[2][0];
    result[2][1] = 0;
    result[2][1] += x[2][0] * y[0][1];
    result[2][1] += x[2][1] * y[1][1];
    result[2][1] += x[2][2] * y[2][1];
    result[2][2] = 0;
    result[2][2] += x[2][0] * y[0][2];
    result[2][2] += x[2][1] * y[1][2];
    result[2][2] += x[2][2] * y[2][2];
    result[2][3] = 0;
    result[2][3] += x[2][0] * y[0][3];
    result[2][3] += x[2][1] * y[1][3];
    result[2][3] += x[2][2] * y[2][3];
    result[3][0] = 0;
    result[3][0] += x[3][0] * y[0][0];
    result[3][0] += x[3][1] * y[1][0];
    result[3][0] += x[3][2] * y[2][0];
    result[3][1] = 0;
    result[3][1] += x[3][0] * y[0][1];
    result[3][1] += x[3][1] * y[1][1];
    result[3][1] += x[3][2] * y[2][1];
    result[3][2] = 0;
    result[3][2] += x[3][0] * y[0][2];
    result[3][2] += x[3][1] * y[1][2];
    result[3][2] += x[3][2] * y[2][2];
    result[3][3] = 0;
    result[3][3] += x[3][0] * y[0][3];
    result[3][3] += x[3][1] * y[1][3];
    result[3][3] += x[3][2] * y[2][3];
    return result;
}
float4x2 mul(float4x4 x, float4x2 y) {
    float4x2 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[0][1] * y[1][0];
    result[0][0] += x[0][2] * y[2][0];
    result[0][0] += x[0][3] * y[3][0];
    result[0][1] = 0;
    result[0][1] += x[0][0] * y[0][1];
    result[0][1] += x[0][1] * y[1][1];
    result[0][1] += x[0][2] * y[2][1];
    result[0][1] += x[0][3] * y[3][1];
    result[1][0] = 0;
    result[1][0] += x[1][0] * y[0][0];
    result[1][0] += x[1][1] * y[1][0];
    result[1][0] += x[1][2] * y[2][0];
    result[1][0] += x[1][3] * y[3][0];
    result[1][1] = 0;
    result[1][1] += x[1][0] * y[0][1];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[1][2] * y[2][1];
    result[1][1] += x[1][3] * y[3][1];
    result[2][0] = 0;
    result[2][0] += x[2][0] * y[0][0];
    result[2][0] += x[2][1] * y[1][0];
    result[2][0] += x[2][2] * y[2][0];
    result[2][0] += x[2][3] * y[3][0];
    result[2][1] = 0;
    result[2][1] += x[2][0] * y[0][1];
    result[2][1] += x[2][1] * y[1][1];
    result[2][1] += x[2][2] * y[2][1];
    result[2][1] += x[2][3] * y[3][1];
    result[3][0] = 0;
    result[3][0] += x[3][0] * y[0][0];
    result[3][0] += x[3][1] * y[1][0];
    result[3][0] += x[3][2] * y[2][0];
    result[3][0] += x[3][3] * y[3][0];
    result[3][1] = 0;
    result[3][1] += x[3][0] * y[0][1];
    result[3][1] += x[3][1] * y[1][1];
    result[3][1] += x[3][2] * y[2][1];
    result[3][1] += x[3][3] * y[3][1];
    return result;
}
float4x3 mul(float4x4 x, float4x3 y) {
    float4x3 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[0][1] * y[1][0];
    result[0][0] += x[0][2] * y[2][0];
    result[0][0] += x[0][3] * y[3][0];
    result[0][1] = 0;
    result[0][1] += x[0][0] * y[0][1];
    result[0][1] += x[0][1] * y[1][1];
    result[0][1] += x[0][2] * y[2][1];
    result[0][1] += x[0][3] * y[3][1];
    result[0][2] = 0;
    result[0][2] += x[0][0] * y[0][2];
    result[0][2] += x[0][1] * y[1][2];
    result[0][2] += x[0][2] * y[2][2];
    result[0][2] += x[0][3] * y[3][2];
    result[1][0] = 0;
    result[1][0] += x[1][0] * y[0][0];
    result[1][0] += x[1][1] * y[1][0];
    result[1][0] += x[1][2] * y[2][0];
    result[1][0] += x[1][3] * y[3][0];
    result[1][1] = 0;
    result[1][1] += x[1][0] * y[0][1];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[1][2] * y[2][1];
    result[1][1] += x[1][3] * y[3][1];
    result[1][2] = 0;
    result[1][2] += x[1][0] * y[0][2];
    result[1][2] += x[1][1] * y[1][2];
    result[1][2] += x[1][2] * y[2][2];
    result[1][2] += x[1][3] * y[3][2];
    result[2][0] = 0;
    result[2][0] += x[2][0] * y[0][0];
    result[2][0] += x[2][1] * y[1][0];
    result[2][0] += x[2][2] * y[2][0];
    result[2][0] += x[2][3] * y[3][0];
    result[2][1] = 0;
    result[2][1] += x[2][0] * y[0][1];
    result[2][1] += x[2][1] * y[1][1];
    result[2][1] += x[2][2] * y[2][1];
    result[2][1] += x[2][3] * y[3][1];
    result[2][2] = 0;
    result[2][2] += x[2][0] * y[0][2];
    result[2][2] += x[2][1] * y[1][2];
    result[2][2] += x[2][2] * y[2][2];
    result[2][2] += x[2][3] * y[3][2];
    result[3][0] = 0;
    result[3][0] += x[3][0] * y[0][0];
    result[3][0] += x[3][1] * y[1][0];
    result[3][0] += x[3][2] * y[2][0];
    result[3][0] += x[3][3] * y[3][0];
    result[3][1] = 0;
    result[3][1] += x[3][0] * y[0][1];
    result[3][1] += x[3][1] * y[1][1];
    result[3][1] += x[3][2] * y[2][1];
    result[3][1] += x[3][3] * y[3][1];
    result[3][2] = 0;
    result[3][2] += x[3][0] * y[0][2];
    result[3][2] += x[3][1] * y[1][2];
    result[3][2] += x[3][2] * y[2][2];
    result[3][2] += x[3][3] * y[3][2];
    return result;
}
float4x4 mul(float4x4 x, float4x4 y) {
    float4x4 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[0][1] * y[1][0];
    result[0][0] += x[0][2] * y[2][0];
    result[0][0] += x[0][3] * y[3][0];
    result[0][1] = 0;
    result[0][1] += x[0][0] * y[0][1];
    result[0][1] += x[0][1] * y[1][1];
    result[0][1] += x[0][2] * y[2][1];
    result[0][1] += x[0][3] * y[3][1];
    result[0][2] = 0;
    result[0][2] += x[0][0] * y[0][2];
    result[0][2] += x[0][1] * y[1][2];
    result[0][2] += x[0][2] * y[2][2];
    result[0][2] += x[0][3] * y[3][2];
    result[0][3] = 0;
    result[0][3] += x[0][0] * y[0][3];
    result[0][3] += x[0][1] * y[1][3];
    result[0][3] += x[0][2] * y[2][3];
    result[0][3] += x[0][3] * y[3][3];
    result[1][0] = 0;
    result[1][0] += x[1][0] * y[0][0];
    result[1][0] += x[1][1] * y[1][0];
    result[1][0] += x[1][2] * y[2][0];
    result[1][0] += x[1][3] * y[3][0];
    result[1][1] = 0;
    result[1][1] += x[1][0] * y[0][1];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[1][2] * y[2][1];
    result[1][1] += x[1][3] * y[3][1];
    result[1][2] = 0;
    result[1][2] += x[1][0] * y[0][2];
    result[1][2] += x[1][1] * y[1][2];
    result[1][2] += x[1][2] * y[2][2];
    result[1][2] += x[1][3] * y[3][2];
    result[1][3] = 0;
    result[1][3] += x[1][0] * y[0][3];
    result[1][3] += x[1][1] * y[1][3];
    result[1][3] += x[1][2] * y[2][3];
    result[1][3] += x[1][3] * y[3][3];
    result[2][0] = 0;
    result[2][0] += x[2][0] * y[0][0];
    result[2][0] += x[2][1] * y[1][0];
    result[2][0] += x[2][2] * y[2][0];
    result[2][0] += x[2][3] * y[3][0];
    result[2][1] = 0;
    result[2][1] += x[2][0] * y[0][1];
    result[2][1] += x[2][1] * y[1][1];
    result[2][1] += x[2][2] * y[2][1];
    result[2][1] += x[2][3] * y[3][1];
    result[2][2] = 0;
    result[2][2] += x[2][0] * y[0][2];
    result[2][2] += x[2][1] * y[1][2];
    result[2][2] += x[2][2] * y[2][2];
    result[2][2] += x[2][3] * y[3][2];
    result[2][3] = 0;
    result[2][3] += x[2][0] * y[0][3];
    result[2][3] += x[2][1] * y[1][3];
    result[2][3] += x[2][2] * y[2][3];
    result[2][3] += x[2][3] * y[3][3];
    result[3][0] = 0;
    result[3][0] += x[3][0] * y[0][0];
    result[3][0] += x[3][1] * y[1][0];
    result[3][0] += x[3][2] * y[2][0];
    result[3][0] += x[3][3] * y[3][0];
    result[3][1] = 0;
    result[3][1] += x[3][0] * y[0][1];
    result[3][1] += x[3][1] * y[1][1];
    result[3][1] += x[3][2] * y[2][1];
    result[3][1] += x[3][3] * y[3][1];
    result[3][2] = 0;
    result[3][2] += x[3][0] * y[0][2];
    result[3][2] += x[3][1] * y[1][2];
    result[3][2] += x[3][2] * y[2][2];
    result[3][2] += x[3][3] * y[3][2];
    result[3][3] = 0;
    result[3][3] += x[3][0] * y[0][3];
    result[3][3] += x[3][1] * y[1][3];
    result[3][3] += x[3][2] * y[2][3];
    result[3][3] += x[3][3] * y[3][3];
    return result;
}


/* Functions named operator.xzyw= */
bool4 operator.xzyw=(bool4 v, bool4 c) {
    bool4 result = v;
    result.x = c.x;
    result.z = c.y;
    result.y = c.z;
    result.w = c.w;
    return result;
}
uint4 operator.xzyw=(uint4 v, uint4 c) {
    uint4 result = v;
    result.x = c.x;
    result.z = c.y;
    result.y = c.z;
    result.w = c.w;
    return result;
}
int4 operator.xzyw=(int4 v, int4 c) {
    int4 result = v;
    result.x = c.x;
    result.z = c.y;
    result.y = c.z;
    result.w = c.w;
    return result;
}
float4 operator.xzyw=(float4 v, float4 c) {
    float4 result = v;
    result.x = c.x;
    result.z = c.y;
    result.y = c.z;
    result.w = c.w;
    return result;
}

/* Functions named operator.wyxw */
bool4 operator.wyxw(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.x;
    result.w = v.w;
    return result;
}
uint4 operator.wyxw(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.x;
    result.w = v.w;
    return result;
}
int4 operator.wyxw(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.x;
    result.w = v.w;
    return result;
}
float4 operator.wyxw(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.x;
    result.w = v.w;
    return result;
}

/* Functions named operator.zxxz */
bool4 operator.zxxz(bool3 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    result.w = v.z;
    return result;
}
bool4 operator.zxxz(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    result.w = v.z;
    return result;
}
uint4 operator.zxxz(uint3 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    result.w = v.z;
    return result;
}
uint4 operator.zxxz(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    result.w = v.z;
    return result;
}
int4 operator.zxxz(int3 v) {
    int4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    result.w = v.z;
    return result;
}
int4 operator.zxxz(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    result.w = v.z;
    return result;
}
float4 operator.zxxz(float3 v) {
    float4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    result.w = v.z;
    return result;
}
float4 operator.zxxz(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    result.w = v.z;
    return result;
}

/* Functions named operator.yyxx */
bool4 operator.yyxx(bool2 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
bool4 operator.yyxx(bool3 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
bool4 operator.yyxx(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
uint4 operator.yyxx(uint2 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
uint4 operator.yyxx(uint3 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
uint4 operator.yyxx(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
int4 operator.yyxx(int2 v) {
    int4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
int4 operator.yyxx(int3 v) {
    int4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
int4 operator.yyxx(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
float4 operator.yyxx(float2 v) {
    float4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
float4 operator.yyxx(float3 v) {
    float4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
float4 operator.yyxx(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}

/* Functions named operator.www */
bool3 operator.www(bool4 v) {
    bool3 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.w;
    return result;
}
uint3 operator.www(uint4 v) {
    uint3 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.w;
    return result;
}
int3 operator.www(int4 v) {
    int3 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.w;
    return result;
}
float3 operator.www(float4 v) {
    float3 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.w;
    return result;
}

/* Functions named radians */
float radians(float x) {
    return x * 3.14159 / 180;
}
float2 radians(float2 x) {
    float2 result;
    result[0] = radians(x[0]);
    result[1] = radians(x[1]);
    return result;
}
float3 radians(float3 x) {
    float3 result;
    result[0] = radians(x[0]);
    result[1] = radians(x[1]);
    result[2] = radians(x[2]);
    return result;
}
float4 radians(float4 x) {
    float4 result;
    result[0] = radians(x[0]);
    result[1] = radians(x[1]);
    result[2] = radians(x[2]);
    result[3] = radians(x[3]);
    return result;
}
float2x2 radians(float2x2 x) {
    float2x2 result;
    result[0][0] = radians(x[0][0]);
    result[0][1] = radians(x[0][1]);
    result[1][0] = radians(x[1][0]);
    result[1][1] = radians(x[1][1]);
    return result;
}
float2x3 radians(float2x3 x) {
    float2x3 result;
    result[0][0] = radians(x[0][0]);
    result[0][1] = radians(x[0][1]);
    result[0][2] = radians(x[0][2]);
    result[1][0] = radians(x[1][0]);
    result[1][1] = radians(x[1][1]);
    result[1][2] = radians(x[1][2]);
    return result;
}
float2x4 radians(float2x4 x) {
    float2x4 result;
    result[0][0] = radians(x[0][0]);
    result[0][1] = radians(x[0][1]);
    result[0][2] = radians(x[0][2]);
    result[0][3] = radians(x[0][3]);
    result[1][0] = radians(x[1][0]);
    result[1][1] = radians(x[1][1]);
    result[1][2] = radians(x[1][2]);
    result[1][3] = radians(x[1][3]);
    return result;
}
float3x2 radians(float3x2 x) {
    float3x2 result;
    result[0][0] = radians(x[0][0]);
    result[0][1] = radians(x[0][1]);
    result[1][0] = radians(x[1][0]);
    result[1][1] = radians(x[1][1]);
    result[2][0] = radians(x[2][0]);
    result[2][1] = radians(x[2][1]);
    return result;
}
float3x3 radians(float3x3 x) {
    float3x3 result;
    result[0][0] = radians(x[0][0]);
    result[0][1] = radians(x[0][1]);
    result[0][2] = radians(x[0][2]);
    result[1][0] = radians(x[1][0]);
    result[1][1] = radians(x[1][1]);
    result[1][2] = radians(x[1][2]);
    result[2][0] = radians(x[2][0]);
    result[2][1] = radians(x[2][1]);
    result[2][2] = radians(x[2][2]);
    return result;
}
float3x4 radians(float3x4 x) {
    float3x4 result;
    result[0][0] = radians(x[0][0]);
    result[0][1] = radians(x[0][1]);
    result[0][2] = radians(x[0][2]);
    result[0][3] = radians(x[0][3]);
    result[1][0] = radians(x[1][0]);
    result[1][1] = radians(x[1][1]);
    result[1][2] = radians(x[1][2]);
    result[1][3] = radians(x[1][3]);
    result[2][0] = radians(x[2][0]);
    result[2][1] = radians(x[2][1]);
    result[2][2] = radians(x[2][2]);
    result[2][3] = radians(x[2][3]);
    return result;
}
float4x2 radians(float4x2 x) {
    float4x2 result;
    result[0][0] = radians(x[0][0]);
    result[0][1] = radians(x[0][1]);
    result[1][0] = radians(x[1][0]);
    result[1][1] = radians(x[1][1]);
    result[2][0] = radians(x[2][0]);
    result[2][1] = radians(x[2][1]);
    result[3][0] = radians(x[3][0]);
    result[3][1] = radians(x[3][1]);
    return result;
}
float4x3 radians(float4x3 x) {
    float4x3 result;
    result[0][0] = radians(x[0][0]);
    result[0][1] = radians(x[0][1]);
    result[0][2] = radians(x[0][2]);
    result[1][0] = radians(x[1][0]);
    result[1][1] = radians(x[1][1]);
    result[1][2] = radians(x[1][2]);
    result[2][0] = radians(x[2][0]);
    result[2][1] = radians(x[2][1]);
    result[2][2] = radians(x[2][2]);
    result[3][0] = radians(x[3][0]);
    result[3][1] = radians(x[3][1]);
    result[3][2] = radians(x[3][2]);
    return result;
}
float4x4 radians(float4x4 x) {
    float4x4 result;
    result[0][0] = radians(x[0][0]);
    result[0][1] = radians(x[0][1]);
    result[0][2] = radians(x[0][2]);
    result[0][3] = radians(x[0][3]);
    result[1][0] = radians(x[1][0]);
    result[1][1] = radians(x[1][1]);
    result[1][2] = radians(x[1][2]);
    result[1][3] = radians(x[1][3]);
    result[2][0] = radians(x[2][0]);
    result[2][1] = radians(x[2][1]);
    result[2][2] = radians(x[2][2]);
    result[2][3] = radians(x[2][3]);
    result[3][0] = radians(x[3][0]);
    result[3][1] = radians(x[3][1]);
    result[3][2] = radians(x[3][2]);
    result[3][3] = radians(x[3][3]);
    return result;
}

/* Functions named operator.zwy= */
bool4 operator.zwy=(bool4 v, bool3 c) {
    bool4 result = v;
    result.z = c.x;
    result.w = c.y;
    result.y = c.z;
    return result;
}
uint4 operator.zwy=(uint4 v, uint3 c) {
    uint4 result = v;
    result.z = c.x;
    result.w = c.y;
    result.y = c.z;
    return result;
}
int4 operator.zwy=(int4 v, int3 c) {
    int4 result = v;
    result.z = c.x;
    result.w = c.y;
    result.y = c.z;
    return result;
}
float4 operator.zwy=(float4 v, float3 c) {
    float4 result = v;
    result.z = c.x;
    result.w = c.y;
    result.y = c.z;
    return result;
}

/* Functions named ceil */
native float ceil(float);
float2 ceil(float2 x) {
    float2 result;
    result[0] = ceil(x[0]);
    result[1] = ceil(x[1]);
    return result;
}
float3 ceil(float3 x) {
    float3 result;
    result[0] = ceil(x[0]);
    result[1] = ceil(x[1]);
    result[2] = ceil(x[2]);
    return result;
}
float4 ceil(float4 x) {
    float4 result;
    result[0] = ceil(x[0]);
    result[1] = ceil(x[1]);
    result[2] = ceil(x[2]);
    result[3] = ceil(x[3]);
    return result;
}
float2x2 ceil(float2x2 x) {
    float2x2 result;
    result[0][0] = ceil(x[0][0]);
    result[0][1] = ceil(x[0][1]);
    result[1][0] = ceil(x[1][0]);
    result[1][1] = ceil(x[1][1]);
    return result;
}
float2x3 ceil(float2x3 x) {
    float2x3 result;
    result[0][0] = ceil(x[0][0]);
    result[0][1] = ceil(x[0][1]);
    result[0][2] = ceil(x[0][2]);
    result[1][0] = ceil(x[1][0]);
    result[1][1] = ceil(x[1][1]);
    result[1][2] = ceil(x[1][2]);
    return result;
}
float2x4 ceil(float2x4 x) {
    float2x4 result;
    result[0][0] = ceil(x[0][0]);
    result[0][1] = ceil(x[0][1]);
    result[0][2] = ceil(x[0][2]);
    result[0][3] = ceil(x[0][3]);
    result[1][0] = ceil(x[1][0]);
    result[1][1] = ceil(x[1][1]);
    result[1][2] = ceil(x[1][2]);
    result[1][3] = ceil(x[1][3]);
    return result;
}
float3x2 ceil(float3x2 x) {
    float3x2 result;
    result[0][0] = ceil(x[0][0]);
    result[0][1] = ceil(x[0][1]);
    result[1][0] = ceil(x[1][0]);
    result[1][1] = ceil(x[1][1]);
    result[2][0] = ceil(x[2][0]);
    result[2][1] = ceil(x[2][1]);
    return result;
}
float3x3 ceil(float3x3 x) {
    float3x3 result;
    result[0][0] = ceil(x[0][0]);
    result[0][1] = ceil(x[0][1]);
    result[0][2] = ceil(x[0][2]);
    result[1][0] = ceil(x[1][0]);
    result[1][1] = ceil(x[1][1]);
    result[1][2] = ceil(x[1][2]);
    result[2][0] = ceil(x[2][0]);
    result[2][1] = ceil(x[2][1]);
    result[2][2] = ceil(x[2][2]);
    return result;
}
float3x4 ceil(float3x4 x) {
    float3x4 result;
    result[0][0] = ceil(x[0][0]);
    result[0][1] = ceil(x[0][1]);
    result[0][2] = ceil(x[0][2]);
    result[0][3] = ceil(x[0][3]);
    result[1][0] = ceil(x[1][0]);
    result[1][1] = ceil(x[1][1]);
    result[1][2] = ceil(x[1][2]);
    result[1][3] = ceil(x[1][3]);
    result[2][0] = ceil(x[2][0]);
    result[2][1] = ceil(x[2][1]);
    result[2][2] = ceil(x[2][2]);
    result[2][3] = ceil(x[2][3]);
    return result;
}
float4x2 ceil(float4x2 x) {
    float4x2 result;
    result[0][0] = ceil(x[0][0]);
    result[0][1] = ceil(x[0][1]);
    result[1][0] = ceil(x[1][0]);
    result[1][1] = ceil(x[1][1]);
    result[2][0] = ceil(x[2][0]);
    result[2][1] = ceil(x[2][1]);
    result[3][0] = ceil(x[3][0]);
    result[3][1] = ceil(x[3][1]);
    return result;
}
float4x3 ceil(float4x3 x) {
    float4x3 result;
    result[0][0] = ceil(x[0][0]);
    result[0][1] = ceil(x[0][1]);
    result[0][2] = ceil(x[0][2]);
    result[1][0] = ceil(x[1][0]);
    result[1][1] = ceil(x[1][1]);
    result[1][2] = ceil(x[1][2]);
    result[2][0] = ceil(x[2][0]);
    result[2][1] = ceil(x[2][1]);
    result[2][2] = ceil(x[2][2]);
    result[3][0] = ceil(x[3][0]);
    result[3][1] = ceil(x[3][1]);
    result[3][2] = ceil(x[3][2]);
    return result;
}
float4x4 ceil(float4x4 x) {
    float4x4 result;
    result[0][0] = ceil(x[0][0]);
    result[0][1] = ceil(x[0][1]);
    result[0][2] = ceil(x[0][2]);
    result[0][3] = ceil(x[0][3]);
    result[1][0] = ceil(x[1][0]);
    result[1][1] = ceil(x[1][1]);
    result[1][2] = ceil(x[1][2]);
    result[1][3] = ceil(x[1][3]);
    result[2][0] = ceil(x[2][0]);
    result[2][1] = ceil(x[2][1]);
    result[2][2] = ceil(x[2][2]);
    result[2][3] = ceil(x[2][3]);
    result[3][0] = ceil(x[3][0]);
    result[3][1] = ceil(x[3][1]);
    result[3][2] = ceil(x[3][2]);
    result[3][3] = ceil(x[3][3]);
    return result;
}

/* Functions named operator.zywx= */
bool4 operator.zywx=(bool4 v, bool4 c) {
    bool4 result = v;
    result.z = c.x;
    result.y = c.y;
    result.w = c.z;
    result.x = c.w;
    return result;
}
uint4 operator.zywx=(uint4 v, uint4 c) {
    uint4 result = v;
    result.z = c.x;
    result.y = c.y;
    result.w = c.z;
    result.x = c.w;
    return result;
}
int4 operator.zywx=(int4 v, int4 c) {
    int4 result = v;
    result.z = c.x;
    result.y = c.y;
    result.w = c.z;
    result.x = c.w;
    return result;
}
float4 operator.zywx=(float4 v, float4 c) {
    float4 result = v;
    result.z = c.x;
    result.y = c.y;
    result.w = c.z;
    result.x = c.w;
    return result;
}

/* Functions named operator.yz= */
bool3 operator.yz=(bool3 v, bool2 c) {
    bool3 result = v;
    result.y = c.x;
    result.z = c.y;
    return result;
}
bool4 operator.yz=(bool4 v, bool2 c) {
    bool4 result = v;
    result.y = c.x;
    result.z = c.y;
    return result;
}
uint3 operator.yz=(uint3 v, uint2 c) {
    uint3 result = v;
    result.y = c.x;
    result.z = c.y;
    return result;
}
uint4 operator.yz=(uint4 v, uint2 c) {
    uint4 result = v;
    result.y = c.x;
    result.z = c.y;
    return result;
}
int3 operator.yz=(int3 v, int2 c) {
    int3 result = v;
    result.y = c.x;
    result.z = c.y;
    return result;
}
int4 operator.yz=(int4 v, int2 c) {
    int4 result = v;
    result.y = c.x;
    result.z = c.y;
    return result;
}
float3 operator.yz=(float3 v, float2 c) {
    float3 result = v;
    result.y = c.x;
    result.z = c.y;
    return result;
}
float4 operator.yz=(float4 v, float2 c) {
    float4 result = v;
    result.y = c.x;
    result.z = c.y;
    return result;
}

/* Functions named asin */
native float asin(float);
float2 asin(float2 x) {
    float2 result;
    result[0] = asin(x[0]);
    result[1] = asin(x[1]);
    return result;
}
float3 asin(float3 x) {
    float3 result;
    result[0] = asin(x[0]);
    result[1] = asin(x[1]);
    result[2] = asin(x[2]);
    return result;
}
float4 asin(float4 x) {
    float4 result;
    result[0] = asin(x[0]);
    result[1] = asin(x[1]);
    result[2] = asin(x[2]);
    result[3] = asin(x[3]);
    return result;
}
float2x2 asin(float2x2 x) {
    float2x2 result;
    result[0][0] = asin(x[0][0]);
    result[0][1] = asin(x[0][1]);
    result[1][0] = asin(x[1][0]);
    result[1][1] = asin(x[1][1]);
    return result;
}
float2x3 asin(float2x3 x) {
    float2x3 result;
    result[0][0] = asin(x[0][0]);
    result[0][1] = asin(x[0][1]);
    result[0][2] = asin(x[0][2]);
    result[1][0] = asin(x[1][0]);
    result[1][1] = asin(x[1][1]);
    result[1][2] = asin(x[1][2]);
    return result;
}
float2x4 asin(float2x4 x) {
    float2x4 result;
    result[0][0] = asin(x[0][0]);
    result[0][1] = asin(x[0][1]);
    result[0][2] = asin(x[0][2]);
    result[0][3] = asin(x[0][3]);
    result[1][0] = asin(x[1][0]);
    result[1][1] = asin(x[1][1]);
    result[1][2] = asin(x[1][2]);
    result[1][3] = asin(x[1][3]);
    return result;
}
float3x2 asin(float3x2 x) {
    float3x2 result;
    result[0][0] = asin(x[0][0]);
    result[0][1] = asin(x[0][1]);
    result[1][0] = asin(x[1][0]);
    result[1][1] = asin(x[1][1]);
    result[2][0] = asin(x[2][0]);
    result[2][1] = asin(x[2][1]);
    return result;
}
float3x3 asin(float3x3 x) {
    float3x3 result;
    result[0][0] = asin(x[0][0]);
    result[0][1] = asin(x[0][1]);
    result[0][2] = asin(x[0][2]);
    result[1][0] = asin(x[1][0]);
    result[1][1] = asin(x[1][1]);
    result[1][2] = asin(x[1][2]);
    result[2][0] = asin(x[2][0]);
    result[2][1] = asin(x[2][1]);
    result[2][2] = asin(x[2][2]);
    return result;
}
float3x4 asin(float3x4 x) {
    float3x4 result;
    result[0][0] = asin(x[0][0]);
    result[0][1] = asin(x[0][1]);
    result[0][2] = asin(x[0][2]);
    result[0][3] = asin(x[0][3]);
    result[1][0] = asin(x[1][0]);
    result[1][1] = asin(x[1][1]);
    result[1][2] = asin(x[1][2]);
    result[1][3] = asin(x[1][3]);
    result[2][0] = asin(x[2][0]);
    result[2][1] = asin(x[2][1]);
    result[2][2] = asin(x[2][2]);
    result[2][3] = asin(x[2][3]);
    return result;
}
float4x2 asin(float4x2 x) {
    float4x2 result;
    result[0][0] = asin(x[0][0]);
    result[0][1] = asin(x[0][1]);
    result[1][0] = asin(x[1][0]);
    result[1][1] = asin(x[1][1]);
    result[2][0] = asin(x[2][0]);
    result[2][1] = asin(x[2][1]);
    result[3][0] = asin(x[3][0]);
    result[3][1] = asin(x[3][1]);
    return result;
}
float4x3 asin(float4x3 x) {
    float4x3 result;
    result[0][0] = asin(x[0][0]);
    result[0][1] = asin(x[0][1]);
    result[0][2] = asin(x[0][2]);
    result[1][0] = asin(x[1][0]);
    result[1][1] = asin(x[1][1]);
    result[1][2] = asin(x[1][2]);
    result[2][0] = asin(x[2][0]);
    result[2][1] = asin(x[2][1]);
    result[2][2] = asin(x[2][2]);
    result[3][0] = asin(x[3][0]);
    result[3][1] = asin(x[3][1]);
    result[3][2] = asin(x[3][2]);
    return result;
}
float4x4 asin(float4x4 x) {
    float4x4 result;
    result[0][0] = asin(x[0][0]);
    result[0][1] = asin(x[0][1]);
    result[0][2] = asin(x[0][2]);
    result[0][3] = asin(x[0][3]);
    result[1][0] = asin(x[1][0]);
    result[1][1] = asin(x[1][1]);
    result[1][2] = asin(x[1][2]);
    result[1][3] = asin(x[1][3]);
    result[2][0] = asin(x[2][0]);
    result[2][1] = asin(x[2][1]);
    result[2][2] = asin(x[2][2]);
    result[2][3] = asin(x[2][3]);
    result[3][0] = asin(x[3][0]);
    result[3][1] = asin(x[3][1]);
    result[3][2] = asin(x[3][2]);
    result[3][3] = asin(x[3][3]);
    return result;
}

/* Functions named operator.xwzw */
bool4 operator.xwzw(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.z;
    result.w = v.w;
    return result;
}
uint4 operator.xwzw(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.z;
    result.w = v.w;
    return result;
}
int4 operator.xwzw(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.z;
    result.w = v.w;
    return result;
}
float4 operator.xwzw(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.z;
    result.w = v.w;
    return result;
}

/* Functions named operator.ywzw */
bool4 operator.ywzw(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.z;
    result.w = v.w;
    return result;
}
uint4 operator.ywzw(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.z;
    result.w = v.w;
    return result;
}
int4 operator.ywzw(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.z;
    result.w = v.w;
    return result;
}
float4 operator.ywzw(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.z;
    result.w = v.w;
    return result;
}

/* Functions named operator.zzyz */
bool4 operator.zzyz(bool3 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    result.w = v.z;
    return result;
}
bool4 operator.zzyz(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    result.w = v.z;
    return result;
}
uint4 operator.zzyz(uint3 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    result.w = v.z;
    return result;
}
uint4 operator.zzyz(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    result.w = v.z;
    return result;
}
int4 operator.zzyz(int3 v) {
    int4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    result.w = v.z;
    return result;
}
int4 operator.zzyz(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    result.w = v.z;
    return result;
}
float4 operator.zzyz(float3 v) {
    float4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    result.w = v.z;
    return result;
}
float4 operator.zzyz(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    result.w = v.z;
    return result;
}

/* Functions named operator.zzzy */
bool4 operator.zzzy(bool3 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    result.w = v.y;
    return result;
}
bool4 operator.zzzy(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    result.w = v.y;
    return result;
}
uint4 operator.zzzy(uint3 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    result.w = v.y;
    return result;
}
uint4 operator.zzzy(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    result.w = v.y;
    return result;
}
int4 operator.zzzy(int3 v) {
    int4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    result.w = v.y;
    return result;
}
int4 operator.zzzy(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    result.w = v.y;
    return result;
}
float4 operator.zzzy(float3 v) {
    float4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    result.w = v.y;
    return result;
}
float4 operator.zzzy(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    result.w = v.y;
    return result;
}

/* Functions named asuint */
uint asuint(int x) {
    return uint(x);
}
uint2 asuint(int2 x) {
    uint2 result;
    result[0] = asuint(x[0]);
    result[1] = asuint(x[1]);
    return result;
}
uint3 asuint(int3 x) {
    uint3 result;
    result[0] = asuint(x[0]);
    result[1] = asuint(x[1]);
    result[2] = asuint(x[2]);
    return result;
}
uint4 asuint(int4 x) {
    uint4 result;
    result[0] = asuint(x[0]);
    result[1] = asuint(x[1]);
    result[2] = asuint(x[2]);
    result[3] = asuint(x[3]);
    return result;
}
uint asuint(uint x) {
    return x;
}
uint2 asuint(uint2 x) {
    return x;
}
uint3 asuint(uint3 x) {
    return x;
}
uint4 asuint(uint4 x) {
    return x;
}
native uint asuint(float);
uint2 asuint(float2 x) {
    uint2 result;
    result[0] = asuint(x[0]);
    result[1] = asuint(x[1]);
    return result;
}
uint3 asuint(float3 x) {
    uint3 result;
    result[0] = asuint(x[0]);
    result[1] = asuint(x[1]);
    result[2] = asuint(x[2]);
    return result;
}
uint4 asuint(float4 x) {
    uint4 result;
    result[0] = asuint(x[0]);
    result[1] = asuint(x[1]);
    result[2] = asuint(x[2]);
    result[3] = asuint(x[3]);
    return result;
}

/* Functions named operator.yzxy */
bool4 operator.yzxy(bool3 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    result.w = v.y;
    return result;
}
bool4 operator.yzxy(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    result.w = v.y;
    return result;
}
uint4 operator.yzxy(uint3 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    result.w = v.y;
    return result;
}
uint4 operator.yzxy(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    result.w = v.y;
    return result;
}
int4 operator.yzxy(int3 v) {
    int4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    result.w = v.y;
    return result;
}
int4 operator.yzxy(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    result.w = v.y;
    return result;
}
float4 operator.yzxy(float3 v) {
    float4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    result.w = v.y;
    return result;
}
float4 operator.yzxy(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    result.w = v.y;
    return result;
}

/* Functions named pow */
native float pow(float, float);
float2 pow(float2 x, float2 y) {
    float2 result;
    result[0] = pow(x[0], y[0]);
    result[1] = pow(x[1], y[1]);
    return result;
}
float3 pow(float3 x, float3 y) {
    float3 result;
    result[0] = pow(x[0], y[0]);
    result[1] = pow(x[1], y[1]);
    result[2] = pow(x[2], y[2]);
    return result;
}
float4 pow(float4 x, float4 y) {
    float4 result;
    result[0] = pow(x[0], y[0]);
    result[1] = pow(x[1], y[1]);
    result[2] = pow(x[2], y[2]);
    result[3] = pow(x[3], y[3]);
    return result;
}
float2x2 pow(float2x2 x, float2x2 y) {
    float2x2 result;
    result[0][0] = pow(x[0][0], y[0][0]);
    result[0][1] = pow(x[0][1], y[0][1]);
    result[1][0] = pow(x[1][0], y[1][0]);
    result[1][1] = pow(x[1][1], y[1][1]);
    return result;
}
float2x3 pow(float2x3 x, float2x3 y) {
    float2x3 result;
    result[0][0] = pow(x[0][0], y[0][0]);
    result[0][1] = pow(x[0][1], y[0][1]);
    result[0][2] = pow(x[0][2], y[0][2]);
    result[1][0] = pow(x[1][0], y[1][0]);
    result[1][1] = pow(x[1][1], y[1][1]);
    result[1][2] = pow(x[1][2], y[1][2]);
    return result;
}
float2x4 pow(float2x4 x, float2x4 y) {
    float2x4 result;
    result[0][0] = pow(x[0][0], y[0][0]);
    result[0][1] = pow(x[0][1], y[0][1]);
    result[0][2] = pow(x[0][2], y[0][2]);
    result[0][3] = pow(x[0][3], y[0][3]);
    result[1][0] = pow(x[1][0], y[1][0]);
    result[1][1] = pow(x[1][1], y[1][1]);
    result[1][2] = pow(x[1][2], y[1][2]);
    result[1][3] = pow(x[1][3], y[1][3]);
    return result;
}
float3x2 pow(float3x2 x, float3x2 y) {
    float3x2 result;
    result[0][0] = pow(x[0][0], y[0][0]);
    result[0][1] = pow(x[0][1], y[0][1]);
    result[1][0] = pow(x[1][0], y[1][0]);
    result[1][1] = pow(x[1][1], y[1][1]);
    result[2][0] = pow(x[2][0], y[2][0]);
    result[2][1] = pow(x[2][1], y[2][1]);
    return result;
}
float3x3 pow(float3x3 x, float3x3 y) {
    float3x3 result;
    result[0][0] = pow(x[0][0], y[0][0]);
    result[0][1] = pow(x[0][1], y[0][1]);
    result[0][2] = pow(x[0][2], y[0][2]);
    result[1][0] = pow(x[1][0], y[1][0]);
    result[1][1] = pow(x[1][1], y[1][1]);
    result[1][2] = pow(x[1][2], y[1][2]);
    result[2][0] = pow(x[2][0], y[2][0]);
    result[2][1] = pow(x[2][1], y[2][1]);
    result[2][2] = pow(x[2][2], y[2][2]);
    return result;
}
float3x4 pow(float3x4 x, float3x4 y) {
    float3x4 result;
    result[0][0] = pow(x[0][0], y[0][0]);
    result[0][1] = pow(x[0][1], y[0][1]);
    result[0][2] = pow(x[0][2], y[0][2]);
    result[0][3] = pow(x[0][3], y[0][3]);
    result[1][0] = pow(x[1][0], y[1][0]);
    result[1][1] = pow(x[1][1], y[1][1]);
    result[1][2] = pow(x[1][2], y[1][2]);
    result[1][3] = pow(x[1][3], y[1][3]);
    result[2][0] = pow(x[2][0], y[2][0]);
    result[2][1] = pow(x[2][1], y[2][1]);
    result[2][2] = pow(x[2][2], y[2][2]);
    result[2][3] = pow(x[2][3], y[2][3]);
    return result;
}
float4x2 pow(float4x2 x, float4x2 y) {
    float4x2 result;
    result[0][0] = pow(x[0][0], y[0][0]);
    result[0][1] = pow(x[0][1], y[0][1]);
    result[1][0] = pow(x[1][0], y[1][0]);
    result[1][1] = pow(x[1][1], y[1][1]);
    result[2][0] = pow(x[2][0], y[2][0]);
    result[2][1] = pow(x[2][1], y[2][1]);
    result[3][0] = pow(x[3][0], y[3][0]);
    result[3][1] = pow(x[3][1], y[3][1]);
    return result;
}
float4x3 pow(float4x3 x, float4x3 y) {
    float4x3 result;
    result[0][0] = pow(x[0][0], y[0][0]);
    result[0][1] = pow(x[0][1], y[0][1]);
    result[0][2] = pow(x[0][2], y[0][2]);
    result[1][0] = pow(x[1][0], y[1][0]);
    result[1][1] = pow(x[1][1], y[1][1]);
    result[1][2] = pow(x[1][2], y[1][2]);
    result[2][0] = pow(x[2][0], y[2][0]);
    result[2][1] = pow(x[2][1], y[2][1]);
    result[2][2] = pow(x[2][2], y[2][2]);
    result[3][0] = pow(x[3][0], y[3][0]);
    result[3][1] = pow(x[3][1], y[3][1]);
    result[3][2] = pow(x[3][2], y[3][2]);
    return result;
}
float4x4 pow(float4x4 x, float4x4 y) {
    float4x4 result;
    result[0][0] = pow(x[0][0], y[0][0]);
    result[0][1] = pow(x[0][1], y[0][1]);
    result[0][2] = pow(x[0][2], y[0][2]);
    result[0][3] = pow(x[0][3], y[0][3]);
    result[1][0] = pow(x[1][0], y[1][0]);
    result[1][1] = pow(x[1][1], y[1][1]);
    result[1][2] = pow(x[1][2], y[1][2]);
    result[1][3] = pow(x[1][3], y[1][3]);
    result[2][0] = pow(x[2][0], y[2][0]);
    result[2][1] = pow(x[2][1], y[2][1]);
    result[2][2] = pow(x[2][2], y[2][2]);
    result[2][3] = pow(x[2][3], y[2][3]);
    result[3][0] = pow(x[3][0], y[3][0]);
    result[3][1] = pow(x[3][1], y[3][1]);
    result[3][2] = pow(x[3][2], y[3][2]);
    result[3][3] = pow(x[3][3], y[3][3]);
    return result;
}

/* Functions named operator.zxxw */
bool4 operator.zxxw(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    result.w = v.w;
    return result;
}
uint4 operator.zxxw(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    result.w = v.w;
    return result;
}
int4 operator.zxxw(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    result.w = v.w;
    return result;
}
float4 operator.zxxw(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    result.w = v.w;
    return result;
}

/* Functions named operator.xzzz */
bool4 operator.xzzz(bool3 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    result.w = v.z;
    return result;
}
bool4 operator.xzzz(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    result.w = v.z;
    return result;
}
uint4 operator.xzzz(uint3 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    result.w = v.z;
    return result;
}
uint4 operator.xzzz(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    result.w = v.z;
    return result;
}
int4 operator.xzzz(int3 v) {
    int4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    result.w = v.z;
    return result;
}
int4 operator.xzzz(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    result.w = v.z;
    return result;
}
float4 operator.xzzz(float3 v) {
    float4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    result.w = v.z;
    return result;
}
float4 operator.xzzz(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    result.w = v.z;
    return result;
}

/* Functions named operator.zxy */
bool3 operator.zxy(bool3 v) {
    bool3 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    return result;
}
bool3 operator.zxy(bool4 v) {
    bool3 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    return result;
}
uint3 operator.zxy(uint3 v) {
    uint3 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    return result;
}
uint3 operator.zxy(uint4 v) {
    uint3 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    return result;
}
int3 operator.zxy(int3 v) {
    int3 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    return result;
}
int3 operator.zxy(int4 v) {
    int3 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    return result;
}
float3 operator.zxy(float3 v) {
    float3 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    return result;
}
float3 operator.zxy(float4 v) {
    float3 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    return result;
}

/* Functions named operator.wxyy */
bool4 operator.wxyy(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
uint4 operator.wxyy(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
int4 operator.wxyy(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
float4 operator.wxyy(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}

/* Functions named operator.zyzx */
bool4 operator.zyzx(bool3 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    result.w = v.x;
    return result;
}
bool4 operator.zyzx(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    result.w = v.x;
    return result;
}
uint4 operator.zyzx(uint3 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    result.w = v.x;
    return result;
}
uint4 operator.zyzx(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    result.w = v.x;
    return result;
}
int4 operator.zyzx(int3 v) {
    int4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    result.w = v.x;
    return result;
}
int4 operator.zyzx(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    result.w = v.x;
    return result;
}
float4 operator.zyzx(float3 v) {
    float4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    result.w = v.x;
    return result;
}
float4 operator.zyzx(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    result.w = v.x;
    return result;
}

/* Functions named operator.xzxw */
bool4 operator.xzxw(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    result.w = v.w;
    return result;
}
uint4 operator.xzxw(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    result.w = v.w;
    return result;
}
int4 operator.xzxw(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    result.w = v.w;
    return result;
}
float4 operator.xzxw(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    result.w = v.w;
    return result;
}

/* Functions named operator.xzw= */
bool4 operator.xzw=(bool4 v, bool3 c) {
    bool4 result = v;
    result.x = c.x;
    result.z = c.y;
    result.w = c.z;
    return result;
}
uint4 operator.xzw=(uint4 v, uint3 c) {
    uint4 result = v;
    result.x = c.x;
    result.z = c.y;
    result.w = c.z;
    return result;
}
int4 operator.xzw=(int4 v, int3 c) {
    int4 result = v;
    result.x = c.x;
    result.z = c.y;
    result.w = c.z;
    return result;
}
float4 operator.xzw=(float4 v, float3 c) {
    float4 result = v;
    result.x = c.x;
    result.z = c.y;
    result.w = c.z;
    return result;
}

/* Functions named tan */
native float tan(float);
float2 tan(float2 x) {
    float2 result;
    result[0] = tan(x[0]);
    result[1] = tan(x[1]);
    return result;
}
float3 tan(float3 x) {
    float3 result;
    result[0] = tan(x[0]);
    result[1] = tan(x[1]);
    result[2] = tan(x[2]);
    return result;
}
float4 tan(float4 x) {
    float4 result;
    result[0] = tan(x[0]);
    result[1] = tan(x[1]);
    result[2] = tan(x[2]);
    result[3] = tan(x[3]);
    return result;
}
float2x2 tan(float2x2 x) {
    float2x2 result;
    result[0][0] = tan(x[0][0]);
    result[0][1] = tan(x[0][1]);
    result[1][0] = tan(x[1][0]);
    result[1][1] = tan(x[1][1]);
    return result;
}
float2x3 tan(float2x3 x) {
    float2x3 result;
    result[0][0] = tan(x[0][0]);
    result[0][1] = tan(x[0][1]);
    result[0][2] = tan(x[0][2]);
    result[1][0] = tan(x[1][0]);
    result[1][1] = tan(x[1][1]);
    result[1][2] = tan(x[1][2]);
    return result;
}
float2x4 tan(float2x4 x) {
    float2x4 result;
    result[0][0] = tan(x[0][0]);
    result[0][1] = tan(x[0][1]);
    result[0][2] = tan(x[0][2]);
    result[0][3] = tan(x[0][3]);
    result[1][0] = tan(x[1][0]);
    result[1][1] = tan(x[1][1]);
    result[1][2] = tan(x[1][2]);
    result[1][3] = tan(x[1][3]);
    return result;
}
float3x2 tan(float3x2 x) {
    float3x2 result;
    result[0][0] = tan(x[0][0]);
    result[0][1] = tan(x[0][1]);
    result[1][0] = tan(x[1][0]);
    result[1][1] = tan(x[1][1]);
    result[2][0] = tan(x[2][0]);
    result[2][1] = tan(x[2][1]);
    return result;
}
float3x3 tan(float3x3 x) {
    float3x3 result;
    result[0][0] = tan(x[0][0]);
    result[0][1] = tan(x[0][1]);
    result[0][2] = tan(x[0][2]);
    result[1][0] = tan(x[1][0]);
    result[1][1] = tan(x[1][1]);
    result[1][2] = tan(x[1][2]);
    result[2][0] = tan(x[2][0]);
    result[2][1] = tan(x[2][1]);
    result[2][2] = tan(x[2][2]);
    return result;
}
float3x4 tan(float3x4 x) {
    float3x4 result;
    result[0][0] = tan(x[0][0]);
    result[0][1] = tan(x[0][1]);
    result[0][2] = tan(x[0][2]);
    result[0][3] = tan(x[0][3]);
    result[1][0] = tan(x[1][0]);
    result[1][1] = tan(x[1][1]);
    result[1][2] = tan(x[1][2]);
    result[1][3] = tan(x[1][3]);
    result[2][0] = tan(x[2][0]);
    result[2][1] = tan(x[2][1]);
    result[2][2] = tan(x[2][2]);
    result[2][3] = tan(x[2][3]);
    return result;
}
float4x2 tan(float4x2 x) {
    float4x2 result;
    result[0][0] = tan(x[0][0]);
    result[0][1] = tan(x[0][1]);
    result[1][0] = tan(x[1][0]);
    result[1][1] = tan(x[1][1]);
    result[2][0] = tan(x[2][0]);
    result[2][1] = tan(x[2][1]);
    result[3][0] = tan(x[3][0]);
    result[3][1] = tan(x[3][1]);
    return result;
}
float4x3 tan(float4x3 x) {
    float4x3 result;
    result[0][0] = tan(x[0][0]);
    result[0][1] = tan(x[0][1]);
    result[0][2] = tan(x[0][2]);
    result[1][0] = tan(x[1][0]);
    result[1][1] = tan(x[1][1]);
    result[1][2] = tan(x[1][2]);
    result[2][0] = tan(x[2][0]);
    result[2][1] = tan(x[2][1]);
    result[2][2] = tan(x[2][2]);
    result[3][0] = tan(x[3][0]);
    result[3][1] = tan(x[3][1]);
    result[3][2] = tan(x[3][2]);
    return result;
}
float4x4 tan(float4x4 x) {
    float4x4 result;
    result[0][0] = tan(x[0][0]);
    result[0][1] = tan(x[0][1]);
    result[0][2] = tan(x[0][2]);
    result[0][3] = tan(x[0][3]);
    result[1][0] = tan(x[1][0]);
    result[1][1] = tan(x[1][1]);
    result[1][2] = tan(x[1][2]);
    result[1][3] = tan(x[1][3]);
    result[2][0] = tan(x[2][0]);
    result[2][1] = tan(x[2][1]);
    result[2][2] = tan(x[2][2]);
    result[2][3] = tan(x[2][3]);
    result[3][0] = tan(x[3][0]);
    result[3][1] = tan(x[3][1]);
    result[3][2] = tan(x[3][2]);
    result[3][3] = tan(x[3][3]);
    return result;
}

/* Functions named fma */
float fma(float x, float y, float z) {
    return x * y + z;
}
float2 fma(float2 x, float2 y, float2 z) {
    float2 result;
    result[0] = fma(x[0], y[0], z[0]);
    result[1] = fma(x[1], y[1], z[1]);
    return result;
}
float3 fma(float3 x, float3 y, float3 z) {
    float3 result;
    result[0] = fma(x[0], y[0], z[0]);
    result[1] = fma(x[1], y[1], z[1]);
    result[2] = fma(x[2], y[2], z[2]);
    return result;
}
float4 fma(float4 x, float4 y, float4 z) {
    float4 result;
    result[0] = fma(x[0], y[0], z[0]);
    result[1] = fma(x[1], y[1], z[1]);
    result[2] = fma(x[2], y[2], z[2]);
    result[3] = fma(x[3], y[3], z[3]);
    return result;
}
float2x2 fma(float2x2 x, float2x2 y, float2x2 z) {
    float2x2 result;
    result[0][0] = fma(x[0][0], y[0][0], z[0][0]);
    result[0][1] = fma(x[0][1], y[0][1], z[0][1]);
    result[1][0] = fma(x[1][0], y[1][0], z[1][0]);
    result[1][1] = fma(x[1][1], y[1][1], z[1][1]);
    return result;
}
float2x3 fma(float2x3 x, float2x3 y, float2x3 z) {
    float2x3 result;
    result[0][0] = fma(x[0][0], y[0][0], z[0][0]);
    result[0][1] = fma(x[0][1], y[0][1], z[0][1]);
    result[0][2] = fma(x[0][2], y[0][2], z[0][2]);
    result[1][0] = fma(x[1][0], y[1][0], z[1][0]);
    result[1][1] = fma(x[1][1], y[1][1], z[1][1]);
    result[1][2] = fma(x[1][2], y[1][2], z[1][2]);
    return result;
}
float2x4 fma(float2x4 x, float2x4 y, float2x4 z) {
    float2x4 result;
    result[0][0] = fma(x[0][0], y[0][0], z[0][0]);
    result[0][1] = fma(x[0][1], y[0][1], z[0][1]);
    result[0][2] = fma(x[0][2], y[0][2], z[0][2]);
    result[0][3] = fma(x[0][3], y[0][3], z[0][3]);
    result[1][0] = fma(x[1][0], y[1][0], z[1][0]);
    result[1][1] = fma(x[1][1], y[1][1], z[1][1]);
    result[1][2] = fma(x[1][2], y[1][2], z[1][2]);
    result[1][3] = fma(x[1][3], y[1][3], z[1][3]);
    return result;
}
float3x2 fma(float3x2 x, float3x2 y, float3x2 z) {
    float3x2 result;
    result[0][0] = fma(x[0][0], y[0][0], z[0][0]);
    result[0][1] = fma(x[0][1], y[0][1], z[0][1]);
    result[1][0] = fma(x[1][0], y[1][0], z[1][0]);
    result[1][1] = fma(x[1][1], y[1][1], z[1][1]);
    result[2][0] = fma(x[2][0], y[2][0], z[2][0]);
    result[2][1] = fma(x[2][1], y[2][1], z[2][1]);
    return result;
}
float3x3 fma(float3x3 x, float3x3 y, float3x3 z) {
    float3x3 result;
    result[0][0] = fma(x[0][0], y[0][0], z[0][0]);
    result[0][1] = fma(x[0][1], y[0][1], z[0][1]);
    result[0][2] = fma(x[0][2], y[0][2], z[0][2]);
    result[1][0] = fma(x[1][0], y[1][0], z[1][0]);
    result[1][1] = fma(x[1][1], y[1][1], z[1][1]);
    result[1][2] = fma(x[1][2], y[1][2], z[1][2]);
    result[2][0] = fma(x[2][0], y[2][0], z[2][0]);
    result[2][1] = fma(x[2][1], y[2][1], z[2][1]);
    result[2][2] = fma(x[2][2], y[2][2], z[2][2]);
    return result;
}
float3x4 fma(float3x4 x, float3x4 y, float3x4 z) {
    float3x4 result;
    result[0][0] = fma(x[0][0], y[0][0], z[0][0]);
    result[0][1] = fma(x[0][1], y[0][1], z[0][1]);
    result[0][2] = fma(x[0][2], y[0][2], z[0][2]);
    result[0][3] = fma(x[0][3], y[0][3], z[0][3]);
    result[1][0] = fma(x[1][0], y[1][0], z[1][0]);
    result[1][1] = fma(x[1][1], y[1][1], z[1][1]);
    result[1][2] = fma(x[1][2], y[1][2], z[1][2]);
    result[1][3] = fma(x[1][3], y[1][3], z[1][3]);
    result[2][0] = fma(x[2][0], y[2][0], z[2][0]);
    result[2][1] = fma(x[2][1], y[2][1], z[2][1]);
    result[2][2] = fma(x[2][2], y[2][2], z[2][2]);
    result[2][3] = fma(x[2][3], y[2][3], z[2][3]);
    return result;
}
float4x2 fma(float4x2 x, float4x2 y, float4x2 z) {
    float4x2 result;
    result[0][0] = fma(x[0][0], y[0][0], z[0][0]);
    result[0][1] = fma(x[0][1], y[0][1], z[0][1]);
    result[1][0] = fma(x[1][0], y[1][0], z[1][0]);
    result[1][1] = fma(x[1][1], y[1][1], z[1][1]);
    result[2][0] = fma(x[2][0], y[2][0], z[2][0]);
    result[2][1] = fma(x[2][1], y[2][1], z[2][1]);
    result[3][0] = fma(x[3][0], y[3][0], z[3][0]);
    result[3][1] = fma(x[3][1], y[3][1], z[3][1]);
    return result;
}
float4x3 fma(float4x3 x, float4x3 y, float4x3 z) {
    float4x3 result;
    result[0][0] = fma(x[0][0], y[0][0], z[0][0]);
    result[0][1] = fma(x[0][1], y[0][1], z[0][1]);
    result[0][2] = fma(x[0][2], y[0][2], z[0][2]);
    result[1][0] = fma(x[1][0], y[1][0], z[1][0]);
    result[1][1] = fma(x[1][1], y[1][1], z[1][1]);
    result[1][2] = fma(x[1][2], y[1][2], z[1][2]);
    result[2][0] = fma(x[2][0], y[2][0], z[2][0]);
    result[2][1] = fma(x[2][1], y[2][1], z[2][1]);
    result[2][2] = fma(x[2][2], y[2][2], z[2][2]);
    result[3][0] = fma(x[3][0], y[3][0], z[3][0]);
    result[3][1] = fma(x[3][1], y[3][1], z[3][1]);
    result[3][2] = fma(x[3][2], y[3][2], z[3][2]);
    return result;
}
float4x4 fma(float4x4 x, float4x4 y, float4x4 z) {
    float4x4 result;
    result[0][0] = fma(x[0][0], y[0][0], z[0][0]);
    result[0][1] = fma(x[0][1], y[0][1], z[0][1]);
    result[0][2] = fma(x[0][2], y[0][2], z[0][2]);
    result[0][3] = fma(x[0][3], y[0][3], z[0][3]);
    result[1][0] = fma(x[1][0], y[1][0], z[1][0]);
    result[1][1] = fma(x[1][1], y[1][1], z[1][1]);
    result[1][2] = fma(x[1][2], y[1][2], z[1][2]);
    result[1][3] = fma(x[1][3], y[1][3], z[1][3]);
    result[2][0] = fma(x[2][0], y[2][0], z[2][0]);
    result[2][1] = fma(x[2][1], y[2][1], z[2][1]);
    result[2][2] = fma(x[2][2], y[2][2], z[2][2]);
    result[2][3] = fma(x[2][3], y[2][3], z[2][3]);
    result[3][0] = fma(x[3][0], y[3][0], z[3][0]);
    result[3][1] = fma(x[3][1], y[3][1], z[3][1]);
    result[3][2] = fma(x[3][2], y[3][2], z[3][2]);
    result[3][3] = fma(x[3][3], y[3][3], z[3][3]);
    return result;
}

/* Functions named determinant */
float determinant(float x) {
    return x;
}
float determinant(float2x2 x) {
    return x[0][0] * x[1][1] - x[0][1] * x[1][0];
}
float determinant(float3x3 x) {
    return x[0][0] * x[1][1] * x[2][2] +
           x[0][1] * x[1][2] * x[2][0] +
           x[0][2] * x[1][0] * x[2][1] -
           x[2][0] * x[1][1] * x[0][2] -
           x[2][1] * x[1][2] * x[0][0] -
           x[2][2] * x[1][0] * x[0][1];
}
float determinant(float4x4 x) {
    float result;
    float3x3 minor;
    minor[0][0] = x[1][1];
    minor[0][1] = x[1][2];
    minor[0][2] = x[1][3];
    minor[1][0] = x[2][1];
    minor[1][1] = x[2][2];
    minor[1][2] = x[2][3];
    minor[2][0] = x[3][1];
    minor[2][1] = x[3][2];
    minor[2][2] = x[3][3];
    result = result + x[0][0] * determinant(minor);
    minor[0][0] = x[1][0];
    minor[0][1] = x[1][2];
    minor[0][2] = x[1][3];
    minor[1][0] = x[2][0];
    minor[1][1] = x[2][2];
    minor[1][2] = x[2][3];
    minor[2][0] = x[3][0];
    minor[2][1] = x[3][2];
    minor[2][2] = x[3][3];
    result = result - x[0][1] * determinant(minor);
    minor[0][0] = x[1][0];
    minor[0][1] = x[1][1];
    minor[0][2] = x[1][3];
    minor[1][0] = x[2][0];
    minor[1][1] = x[2][1];
    minor[1][2] = x[2][3];
    minor[2][0] = x[3][0];
    minor[2][1] = x[3][1];
    minor[2][2] = x[3][3];
    result = result + x[0][2] * determinant(minor);
    minor[0][0] = x[1][0];
    minor[0][1] = x[1][1];
    minor[0][2] = x[1][2];
    minor[1][0] = x[2][0];
    minor[1][1] = x[2][1];
    minor[1][2] = x[2][2];
    minor[2][0] = x[3][0];
    minor[2][1] = x[3][1];
    minor[2][2] = x[3][2];
    result = result - x[0][3] * determinant(minor);
    return result;
}


/* Functions named operator.ywxy */
bool4 operator.ywxy(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.x;
    result.w = v.y;
    return result;
}
uint4 operator.ywxy(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.x;
    result.w = v.y;
    return result;
}
int4 operator.ywxy(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.x;
    result.w = v.y;
    return result;
}
float4 operator.ywxy(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.x;
    result.w = v.y;
    return result;
}

/* Functions named floor */
native float floor(float);
float2 floor(float2 x) {
    float2 result;
    result[0] = floor(x[0]);
    result[1] = floor(x[1]);
    return result;
}
float3 floor(float3 x) {
    float3 result;
    result[0] = floor(x[0]);
    result[1] = floor(x[1]);
    result[2] = floor(x[2]);
    return result;
}
float4 floor(float4 x) {
    float4 result;
    result[0] = floor(x[0]);
    result[1] = floor(x[1]);
    result[2] = floor(x[2]);
    result[3] = floor(x[3]);
    return result;
}
float2x2 floor(float2x2 x) {
    float2x2 result;
    result[0][0] = floor(x[0][0]);
    result[0][1] = floor(x[0][1]);
    result[1][0] = floor(x[1][0]);
    result[1][1] = floor(x[1][1]);
    return result;
}
float2x3 floor(float2x3 x) {
    float2x3 result;
    result[0][0] = floor(x[0][0]);
    result[0][1] = floor(x[0][1]);
    result[0][2] = floor(x[0][2]);
    result[1][0] = floor(x[1][0]);
    result[1][1] = floor(x[1][1]);
    result[1][2] = floor(x[1][2]);
    return result;
}
float2x4 floor(float2x4 x) {
    float2x4 result;
    result[0][0] = floor(x[0][0]);
    result[0][1] = floor(x[0][1]);
    result[0][2] = floor(x[0][2]);
    result[0][3] = floor(x[0][3]);
    result[1][0] = floor(x[1][0]);
    result[1][1] = floor(x[1][1]);
    result[1][2] = floor(x[1][2]);
    result[1][3] = floor(x[1][3]);
    return result;
}
float3x2 floor(float3x2 x) {
    float3x2 result;
    result[0][0] = floor(x[0][0]);
    result[0][1] = floor(x[0][1]);
    result[1][0] = floor(x[1][0]);
    result[1][1] = floor(x[1][1]);
    result[2][0] = floor(x[2][0]);
    result[2][1] = floor(x[2][1]);
    return result;
}
float3x3 floor(float3x3 x) {
    float3x3 result;
    result[0][0] = floor(x[0][0]);
    result[0][1] = floor(x[0][1]);
    result[0][2] = floor(x[0][2]);
    result[1][0] = floor(x[1][0]);
    result[1][1] = floor(x[1][1]);
    result[1][2] = floor(x[1][2]);
    result[2][0] = floor(x[2][0]);
    result[2][1] = floor(x[2][1]);
    result[2][2] = floor(x[2][2]);
    return result;
}
float3x4 floor(float3x4 x) {
    float3x4 result;
    result[0][0] = floor(x[0][0]);
    result[0][1] = floor(x[0][1]);
    result[0][2] = floor(x[0][2]);
    result[0][3] = floor(x[0][3]);
    result[1][0] = floor(x[1][0]);
    result[1][1] = floor(x[1][1]);
    result[1][2] = floor(x[1][2]);
    result[1][3] = floor(x[1][3]);
    result[2][0] = floor(x[2][0]);
    result[2][1] = floor(x[2][1]);
    result[2][2] = floor(x[2][2]);
    result[2][3] = floor(x[2][3]);
    return result;
}
float4x2 floor(float4x2 x) {
    float4x2 result;
    result[0][0] = floor(x[0][0]);
    result[0][1] = floor(x[0][1]);
    result[1][0] = floor(x[1][0]);
    result[1][1] = floor(x[1][1]);
    result[2][0] = floor(x[2][0]);
    result[2][1] = floor(x[2][1]);
    result[3][0] = floor(x[3][0]);
    result[3][1] = floor(x[3][1]);
    return result;
}
float4x3 floor(float4x3 x) {
    float4x3 result;
    result[0][0] = floor(x[0][0]);
    result[0][1] = floor(x[0][1]);
    result[0][2] = floor(x[0][2]);
    result[1][0] = floor(x[1][0]);
    result[1][1] = floor(x[1][1]);
    result[1][2] = floor(x[1][2]);
    result[2][0] = floor(x[2][0]);
    result[2][1] = floor(x[2][1]);
    result[2][2] = floor(x[2][2]);
    result[3][0] = floor(x[3][0]);
    result[3][1] = floor(x[3][1]);
    result[3][2] = floor(x[3][2]);
    return result;
}
float4x4 floor(float4x4 x) {
    float4x4 result;
    result[0][0] = floor(x[0][0]);
    result[0][1] = floor(x[0][1]);
    result[0][2] = floor(x[0][2]);
    result[0][3] = floor(x[0][3]);
    result[1][0] = floor(x[1][0]);
    result[1][1] = floor(x[1][1]);
    result[1][2] = floor(x[1][2]);
    result[1][3] = floor(x[1][3]);
    result[2][0] = floor(x[2][0]);
    result[2][1] = floor(x[2][1]);
    result[2][2] = floor(x[2][2]);
    result[2][3] = floor(x[2][3]);
    result[3][0] = floor(x[3][0]);
    result[3][1] = floor(x[3][1]);
    result[3][2] = floor(x[3][2]);
    result[3][3] = floor(x[3][3]);
    return result;
}

/* Functions named cross */
float3 cross(float3 u, float3 v) {
    float3 result;
    result.x = u.y * v.z - u.z * v.y;
    result.y = u.z * v.x - u.x * v.z;
    result.z = u.x * v.y - u.y * v.x;
    return result;
}


/* Functions named operator.xwyz */
bool4 operator.xwyz(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.y;
    result.w = v.z;
    return result;
}
uint4 operator.xwyz(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.y;
    result.w = v.z;
    return result;
}
int4 operator.xwyz(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.y;
    result.w = v.z;
    return result;
}
float4 operator.xwyz(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.y;
    result.w = v.z;
    return result;
}

/* Functions named operator.xxyy */
bool4 operator.xxyy(bool2 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
bool4 operator.xxyy(bool3 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
bool4 operator.xxyy(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
uint4 operator.xxyy(uint2 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
uint4 operator.xxyy(uint3 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
uint4 operator.xxyy(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
int4 operator.xxyy(int2 v) {
    int4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
int4 operator.xxyy(int3 v) {
    int4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
int4 operator.xxyy(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
float4 operator.xxyy(float2 v) {
    float4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
float4 operator.xxyy(float3 v) {
    float4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
float4 operator.xxyy(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}

/* Functions named isfinite */
native bool isfinite(float);
bool2 isfinite(float2 x) {
    bool2 result;
    result[0] = isfinite(x[0]);
    result[1] = isfinite(x[1]);
    return result;
}
bool3 isfinite(float3 x) {
    bool3 result;
    result[0] = isfinite(x[0]);
    result[1] = isfinite(x[1]);
    result[2] = isfinite(x[2]);
    return result;
}
bool4 isfinite(float4 x) {
    bool4 result;
    result[0] = isfinite(x[0]);
    result[1] = isfinite(x[1]);
    result[2] = isfinite(x[2]);
    result[3] = isfinite(x[3]);
    return result;
}

/* Functions named operator.zxy= */
bool3 operator.zxy=(bool3 v, bool3 c) {
    bool3 result = v;
    result.z = c.x;
    result.x = c.y;
    result.y = c.z;
    return result;
}
bool4 operator.zxy=(bool4 v, bool3 c) {
    bool4 result = v;
    result.z = c.x;
    result.x = c.y;
    result.y = c.z;
    return result;
}
uint3 operator.zxy=(uint3 v, uint3 c) {
    uint3 result = v;
    result.z = c.x;
    result.x = c.y;
    result.y = c.z;
    return result;
}
uint4 operator.zxy=(uint4 v, uint3 c) {
    uint4 result = v;
    result.z = c.x;
    result.x = c.y;
    result.y = c.z;
    return result;
}
int3 operator.zxy=(int3 v, int3 c) {
    int3 result = v;
    result.z = c.x;
    result.x = c.y;
    result.y = c.z;
    return result;
}
int4 operator.zxy=(int4 v, int3 c) {
    int4 result = v;
    result.z = c.x;
    result.x = c.y;
    result.y = c.z;
    return result;
}
float3 operator.zxy=(float3 v, float3 c) {
    float3 result = v;
    result.z = c.x;
    result.x = c.y;
    result.y = c.z;
    return result;
}
float4 operator.zxy=(float4 v, float3 c) {
    float4 result = v;
    result.z = c.x;
    result.x = c.y;
    result.y = c.z;
    return result;
}

/* Functions named InterlockedOr */
native void InterlockedOr(device atomic_uint*, uint, thread uint*);
native void InterlockedOr(device atomic_int*, int, thread int*);
native void InterlockedOr(device atomic_uint*, uint, device uint*);
native void InterlockedOr(device atomic_int*, int, device int*);
native void InterlockedOr(device atomic_uint*, uint, threadgroup uint*);
native void InterlockedOr(device atomic_int*, int, threadgroup int*);
native void InterlockedOr(threadgroup atomic_uint*, uint, thread uint*);
native void InterlockedOr(threadgroup atomic_int*, int, thread int*);
native void InterlockedOr(threadgroup atomic_uint*, uint, device uint*);
native void InterlockedOr(threadgroup atomic_int*, int, device int*);
native void InterlockedOr(threadgroup atomic_uint*, uint, threadgroup uint*);
native void InterlockedOr(threadgroup atomic_int*, int, threadgroup int*);

/* Functions named operator.zxzw */
bool4 operator.zxzw(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    result.w = v.w;
    return result;
}
uint4 operator.zxzw(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    result.w = v.w;
    return result;
}
int4 operator.zxzw(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    result.w = v.w;
    return result;
}
float4 operator.zxzw(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    result.w = v.w;
    return result;
}

/* Functions named atan2 */
native float atan2(float, float);
float2 atan2(float2 x, float2 y) {
    float2 result;
    result[0] = atan2(x[0], y[0]);
    result[1] = atan2(x[1], y[1]);
    return result;
}
float3 atan2(float3 x, float3 y) {
    float3 result;
    result[0] = atan2(x[0], y[0]);
    result[1] = atan2(x[1], y[1]);
    result[2] = atan2(x[2], y[2]);
    return result;
}
float4 atan2(float4 x, float4 y) {
    float4 result;
    result[0] = atan2(x[0], y[0]);
    result[1] = atan2(x[1], y[1]);
    result[2] = atan2(x[2], y[2]);
    result[3] = atan2(x[3], y[3]);
    return result;
}
float2x2 atan2(float2x2 x, float2x2 y) {
    float2x2 result;
    result[0][0] = atan2(x[0][0], y[0][0]);
    result[0][1] = atan2(x[0][1], y[0][1]);
    result[1][0] = atan2(x[1][0], y[1][0]);
    result[1][1] = atan2(x[1][1], y[1][1]);
    return result;
}
float2x3 atan2(float2x3 x, float2x3 y) {
    float2x3 result;
    result[0][0] = atan2(x[0][0], y[0][0]);
    result[0][1] = atan2(x[0][1], y[0][1]);
    result[0][2] = atan2(x[0][2], y[0][2]);
    result[1][0] = atan2(x[1][0], y[1][0]);
    result[1][1] = atan2(x[1][1], y[1][1]);
    result[1][2] = atan2(x[1][2], y[1][2]);
    return result;
}
float2x4 atan2(float2x4 x, float2x4 y) {
    float2x4 result;
    result[0][0] = atan2(x[0][0], y[0][0]);
    result[0][1] = atan2(x[0][1], y[0][1]);
    result[0][2] = atan2(x[0][2], y[0][2]);
    result[0][3] = atan2(x[0][3], y[0][3]);
    result[1][0] = atan2(x[1][0], y[1][0]);
    result[1][1] = atan2(x[1][1], y[1][1]);
    result[1][2] = atan2(x[1][2], y[1][2]);
    result[1][3] = atan2(x[1][3], y[1][3]);
    return result;
}
float3x2 atan2(float3x2 x, float3x2 y) {
    float3x2 result;
    result[0][0] = atan2(x[0][0], y[0][0]);
    result[0][1] = atan2(x[0][1], y[0][1]);
    result[1][0] = atan2(x[1][0], y[1][0]);
    result[1][1] = atan2(x[1][1], y[1][1]);
    result[2][0] = atan2(x[2][0], y[2][0]);
    result[2][1] = atan2(x[2][1], y[2][1]);
    return result;
}
float3x3 atan2(float3x3 x, float3x3 y) {
    float3x3 result;
    result[0][0] = atan2(x[0][0], y[0][0]);
    result[0][1] = atan2(x[0][1], y[0][1]);
    result[0][2] = atan2(x[0][2], y[0][2]);
    result[1][0] = atan2(x[1][0], y[1][0]);
    result[1][1] = atan2(x[1][1], y[1][1]);
    result[1][2] = atan2(x[1][2], y[1][2]);
    result[2][0] = atan2(x[2][0], y[2][0]);
    result[2][1] = atan2(x[2][1], y[2][1]);
    result[2][2] = atan2(x[2][2], y[2][2]);
    return result;
}
float3x4 atan2(float3x4 x, float3x4 y) {
    float3x4 result;
    result[0][0] = atan2(x[0][0], y[0][0]);
    result[0][1] = atan2(x[0][1], y[0][1]);
    result[0][2] = atan2(x[0][2], y[0][2]);
    result[0][3] = atan2(x[0][3], y[0][3]);
    result[1][0] = atan2(x[1][0], y[1][0]);
    result[1][1] = atan2(x[1][1], y[1][1]);
    result[1][2] = atan2(x[1][2], y[1][2]);
    result[1][3] = atan2(x[1][3], y[1][3]);
    result[2][0] = atan2(x[2][0], y[2][0]);
    result[2][1] = atan2(x[2][1], y[2][1]);
    result[2][2] = atan2(x[2][2], y[2][2]);
    result[2][3] = atan2(x[2][3], y[2][3]);
    return result;
}
float4x2 atan2(float4x2 x, float4x2 y) {
    float4x2 result;
    result[0][0] = atan2(x[0][0], y[0][0]);
    result[0][1] = atan2(x[0][1], y[0][1]);
    result[1][0] = atan2(x[1][0], y[1][0]);
    result[1][1] = atan2(x[1][1], y[1][1]);
    result[2][0] = atan2(x[2][0], y[2][0]);
    result[2][1] = atan2(x[2][1], y[2][1]);
    result[3][0] = atan2(x[3][0], y[3][0]);
    result[3][1] = atan2(x[3][1], y[3][1]);
    return result;
}
float4x3 atan2(float4x3 x, float4x3 y) {
    float4x3 result;
    result[0][0] = atan2(x[0][0], y[0][0]);
    result[0][1] = atan2(x[0][1], y[0][1]);
    result[0][2] = atan2(x[0][2], y[0][2]);
    result[1][0] = atan2(x[1][0], y[1][0]);
    result[1][1] = atan2(x[1][1], y[1][1]);
    result[1][2] = atan2(x[1][2], y[1][2]);
    result[2][0] = atan2(x[2][0], y[2][0]);
    result[2][1] = atan2(x[2][1], y[2][1]);
    result[2][2] = atan2(x[2][2], y[2][2]);
    result[3][0] = atan2(x[3][0], y[3][0]);
    result[3][1] = atan2(x[3][1], y[3][1]);
    result[3][2] = atan2(x[3][2], y[3][2]);
    return result;
}
float4x4 atan2(float4x4 x, float4x4 y) {
    float4x4 result;
    result[0][0] = atan2(x[0][0], y[0][0]);
    result[0][1] = atan2(x[0][1], y[0][1]);
    result[0][2] = atan2(x[0][2], y[0][2]);
    result[0][3] = atan2(x[0][3], y[0][3]);
    result[1][0] = atan2(x[1][0], y[1][0]);
    result[1][1] = atan2(x[1][1], y[1][1]);
    result[1][2] = atan2(x[1][2], y[1][2]);
    result[1][3] = atan2(x[1][3], y[1][3]);
    result[2][0] = atan2(x[2][0], y[2][0]);
    result[2][1] = atan2(x[2][1], y[2][1]);
    result[2][2] = atan2(x[2][2], y[2][2]);
    result[2][3] = atan2(x[2][3], y[2][3]);
    result[3][0] = atan2(x[3][0], y[3][0]);
    result[3][1] = atan2(x[3][1], y[3][1]);
    result[3][2] = atan2(x[3][2], y[3][2]);
    result[3][3] = atan2(x[3][3], y[3][3]);
    return result;
}


/* Functions named operator.yzwy */
bool4 operator.yzwy(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.w;
    result.w = v.y;
    return result;
}
uint4 operator.yzwy(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.w;
    result.w = v.y;
    return result;
}
int4 operator.yzwy(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.w;
    result.w = v.y;
    return result;
}
float4 operator.yzwy(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.w;
    result.w = v.y;
    return result;
}

/* Functions named operator.zzxw */
bool4 operator.zzxw(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    result.w = v.w;
    return result;
}
uint4 operator.zzxw(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    result.w = v.w;
    return result;
}
int4 operator.zzxw(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    result.w = v.w;
    return result;
}
float4 operator.zzxw(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    result.w = v.w;
    return result;
}

/* Functions named operator.wywz */
bool4 operator.wywz(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.w;
    result.w = v.z;
    return result;
}
uint4 operator.wywz(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.w;
    result.w = v.z;
    return result;
}
int4 operator.wywz(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.w;
    result.w = v.z;
    return result;
}
float4 operator.wywz(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.w;
    result.w = v.z;
    return result;
}

/* Functions named operator.ywyz */
bool4 operator.ywyz(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.y;
    result.w = v.z;
    return result;
}
uint4 operator.ywyz(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.y;
    result.w = v.z;
    return result;
}
int4 operator.ywyz(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.y;
    result.w = v.z;
    return result;
}
float4 operator.ywyz(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.y;
    result.w = v.z;
    return result;
}

/* Functions named operator.yzx */
bool3 operator.yzx(bool3 v) {
    bool3 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    return result;
}
bool3 operator.yzx(bool4 v) {
    bool3 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    return result;
}
uint3 operator.yzx(uint3 v) {
    uint3 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    return result;
}
uint3 operator.yzx(uint4 v) {
    uint3 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    return result;
}
int3 operator.yzx(int3 v) {
    int3 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    return result;
}
int3 operator.yzx(int4 v) {
    int3 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    return result;
}
float3 operator.yzx(float3 v) {
    float3 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    return result;
}
float3 operator.yzx(float4 v) {
    float3 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    return result;
}

/* Functions named operator.yz */
bool2 operator.yz(bool3 v) {
    bool2 result;
    result.x = v.y;
    result.y = v.z;
    return result;
}
bool2 operator.yz(bool4 v) {
    bool2 result;
    result.x = v.y;
    result.y = v.z;
    return result;
}
uint2 operator.yz(uint3 v) {
    uint2 result;
    result.x = v.y;
    result.y = v.z;
    return result;
}
uint2 operator.yz(uint4 v) {
    uint2 result;
    result.x = v.y;
    result.y = v.z;
    return result;
}
int2 operator.yz(int3 v) {
    int2 result;
    result.x = v.y;
    result.y = v.z;
    return result;
}
int2 operator.yz(int4 v) {
    int2 result;
    result.x = v.y;
    result.y = v.z;
    return result;
}
float2 operator.yz(float3 v) {
    float2 result;
    result.x = v.y;
    result.y = v.z;
    return result;
}
float2 operator.yz(float4 v) {
    float2 result;
    result.x = v.y;
    result.y = v.z;
    return result;
}

/* Functions named operator.wxxz */
bool4 operator.wxxz(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.x;
    result.w = v.z;
    return result;
}
uint4 operator.wxxz(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.x;
    result.w = v.z;
    return result;
}
int4 operator.wxxz(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.x;
    result.w = v.z;
    return result;
}
float4 operator.wxxz(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.x;
    result.w = v.z;
    return result;
}

/* Functions named operator.xw= */
bool4 operator.xw=(bool4 v, bool2 c) {
    bool4 result = v;
    result.x = c.x;
    result.w = c.y;
    return result;
}
uint4 operator.xw=(uint4 v, uint2 c) {
    uint4 result = v;
    result.x = c.x;
    result.w = c.y;
    return result;
}
int4 operator.xw=(int4 v, int2 c) {
    int4 result = v;
    result.x = c.x;
    result.w = c.y;
    return result;
}
float4 operator.xw=(float4 v, float2 c) {
    float4 result = v;
    result.x = c.x;
    result.w = c.y;
    return result;
}

/* Functions named operator.xyxy */
bool4 operator.xyxy(bool2 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
bool4 operator.xyxy(bool3 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
bool4 operator.xyxy(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
uint4 operator.xyxy(uint2 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
uint4 operator.xyxy(uint3 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
uint4 operator.xyxy(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
int4 operator.xyxy(int2 v) {
    int4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
int4 operator.xyxy(int3 v) {
    int4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
int4 operator.xyxy(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
float4 operator.xyxy(float2 v) {
    float4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
float4 operator.xyxy(float3 v) {
    float4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}
float4 operator.xyxy(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.y;
    return result;
}

/* Functions named operator.yyyx */
bool4 operator.yyyx(bool2 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
bool4 operator.yyyx(bool3 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
bool4 operator.yyyx(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
uint4 operator.yyyx(uint2 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
uint4 operator.yyyx(uint3 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
uint4 operator.yyyx(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
int4 operator.yyyx(int2 v) {
    int4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
int4 operator.yyyx(int3 v) {
    int4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
int4 operator.yyyx(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
float4 operator.yyyx(float2 v) {
    float4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
float4 operator.yyyx(float3 v) {
    float4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
float4 operator.yyyx(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}

/* Functions named operator.yzzx */
bool4 operator.yzzx(bool3 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    result.w = v.x;
    return result;
}
bool4 operator.yzzx(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    result.w = v.x;
    return result;
}
uint4 operator.yzzx(uint3 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    result.w = v.x;
    return result;
}
uint4 operator.yzzx(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    result.w = v.x;
    return result;
}
int4 operator.yzzx(int3 v) {
    int4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    result.w = v.x;
    return result;
}
int4 operator.yzzx(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    result.w = v.x;
    return result;
}
float4 operator.yzzx(float3 v) {
    float4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    result.w = v.x;
    return result;
}
float4 operator.yzzx(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    result.w = v.x;
    return result;
}

/* Functions named operator.xzz */
bool3 operator.xzz(bool3 v) {
    bool3 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    return result;
}
bool3 operator.xzz(bool4 v) {
    bool3 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    return result;
}
uint3 operator.xzz(uint3 v) {
    uint3 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    return result;
}
uint3 operator.xzz(uint4 v) {
    uint3 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    return result;
}
int3 operator.xzz(int3 v) {
    int3 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    return result;
}
int3 operator.xzz(int4 v) {
    int3 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    return result;
}
float3 operator.xzz(float3 v) {
    float3 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    return result;
}
float3 operator.xzz(float4 v) {
    float3 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    return result;
}

/* Functions named operator.yxyz */
bool4 operator.yxyz(bool3 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.z;
    return result;
}
bool4 operator.yxyz(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.z;
    return result;
}
uint4 operator.yxyz(uint3 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.z;
    return result;
}
uint4 operator.yxyz(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.z;
    return result;
}
int4 operator.yxyz(int3 v) {
    int4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.z;
    return result;
}
int4 operator.yxyz(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.z;
    return result;
}
float4 operator.yxyz(float3 v) {
    float4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.z;
    return result;
}
float4 operator.yxyz(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.y;
    result.w = v.z;
    return result;
}

/* Functions named operator.zzxx */
bool4 operator.zzxx(bool3 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    result.w = v.x;
    return result;
}
bool4 operator.zzxx(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    result.w = v.x;
    return result;
}
uint4 operator.zzxx(uint3 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    result.w = v.x;
    return result;
}
uint4 operator.zzxx(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    result.w = v.x;
    return result;
}
int4 operator.zzxx(int3 v) {
    int4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    result.w = v.x;
    return result;
}
int4 operator.zzxx(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    result.w = v.x;
    return result;
}
float4 operator.zzxx(float3 v) {
    float4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    result.w = v.x;
    return result;
}
float4 operator.zzxx(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    result.w = v.x;
    return result;
}

/* Functions named operator.zzwx */
bool4 operator.zzwx(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.w;
    result.w = v.x;
    return result;
}
uint4 operator.zzwx(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.w;
    result.w = v.x;
    return result;
}
int4 operator.zzwx(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.w;
    result.w = v.x;
    return result;
}
float4 operator.zzwx(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.w;
    result.w = v.x;
    return result;
}

/* Functions named operator.yxx */
bool3 operator.yxx(bool2 v) {
    bool3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    return result;
}
bool3 operator.yxx(bool3 v) {
    bool3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    return result;
}
bool3 operator.yxx(bool4 v) {
    bool3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    return result;
}
uint3 operator.yxx(uint2 v) {
    uint3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    return result;
}
uint3 operator.yxx(uint3 v) {
    uint3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    return result;
}
uint3 operator.yxx(uint4 v) {
    uint3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    return result;
}
int3 operator.yxx(int2 v) {
    int3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    return result;
}
int3 operator.yxx(int3 v) {
    int3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    return result;
}
int3 operator.yxx(int4 v) {
    int3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    return result;
}
float3 operator.yxx(float2 v) {
    float3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    return result;
}
float3 operator.yxx(float3 v) {
    float3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    return result;
}
float3 operator.yxx(float4 v) {
    float3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    return result;
}

/* Functions named DeviceMemoryBarrierWithGroupSync */
native void DeviceMemoryBarrierWithGroupSync();

/* Functions named operator.zwww */
bool4 operator.zwww(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.w;
    result.w = v.w;
    return result;
}
uint4 operator.zwww(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.w;
    result.w = v.w;
    return result;
}
int4 operator.zwww(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.w;
    result.w = v.w;
    return result;
}
float4 operator.zwww(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.w;
    result.w = v.w;
    return result;
}

/* Functions named operator.wzz */
bool3 operator.wzz(bool4 v) {
    bool3 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.z;
    return result;
}
uint3 operator.wzz(uint4 v) {
    uint3 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.z;
    return result;
}
int3 operator.wzz(int4 v) {
    int3 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.z;
    return result;
}
float3 operator.wzz(float4 v) {
    float3 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.z;
    return result;
}

/* Functions named fmod */

float fmod(float x, float y) {
    uint whole = uint(x / y);
    float multiple = float(whole) * y;
    return x - multiple;
}
float2 fmod(float2 x, float2 y) {
    float2 result;
    result[0] = fmod(x[0], y[0]);
    result[1] = fmod(x[1], y[1]);
    return result;
}
float3 fmod(float3 x, float3 y) {
    float3 result;
    result[0] = fmod(x[0], y[0]);
    result[1] = fmod(x[1], y[1]);
    result[2] = fmod(x[2], y[2]);
    return result;
}
float4 fmod(float4 x, float4 y) {
    float4 result;
    result[0] = fmod(x[0], y[0]);
    result[1] = fmod(x[1], y[1]);
    result[2] = fmod(x[2], y[2]);
    result[3] = fmod(x[3], y[3]);
    return result;
}
float2x2 fmod(float2x2 x, float2x2 y) {
    float2x2 result;
    result[0][0] = fmod(x[0][0], y[0][0]);
    result[0][1] = fmod(x[0][1], y[0][1]);
    result[1][0] = fmod(x[1][0], y[1][0]);
    result[1][1] = fmod(x[1][1], y[1][1]);
    return result;
}
float2x3 fmod(float2x3 x, float2x3 y) {
    float2x3 result;
    result[0][0] = fmod(x[0][0], y[0][0]);
    result[0][1] = fmod(x[0][1], y[0][1]);
    result[0][2] = fmod(x[0][2], y[0][2]);
    result[1][0] = fmod(x[1][0], y[1][0]);
    result[1][1] = fmod(x[1][1], y[1][1]);
    result[1][2] = fmod(x[1][2], y[1][2]);
    return result;
}
float2x4 fmod(float2x4 x, float2x4 y) {
    float2x4 result;
    result[0][0] = fmod(x[0][0], y[0][0]);
    result[0][1] = fmod(x[0][1], y[0][1]);
    result[0][2] = fmod(x[0][2], y[0][2]);
    result[0][3] = fmod(x[0][3], y[0][3]);
    result[1][0] = fmod(x[1][0], y[1][0]);
    result[1][1] = fmod(x[1][1], y[1][1]);
    result[1][2] = fmod(x[1][2], y[1][2]);
    result[1][3] = fmod(x[1][3], y[1][3]);
    return result;
}
float3x2 fmod(float3x2 x, float3x2 y) {
    float3x2 result;
    result[0][0] = fmod(x[0][0], y[0][0]);
    result[0][1] = fmod(x[0][1], y[0][1]);
    result[1][0] = fmod(x[1][0], y[1][0]);
    result[1][1] = fmod(x[1][1], y[1][1]);
    result[2][0] = fmod(x[2][0], y[2][0]);
    result[2][1] = fmod(x[2][1], y[2][1]);
    return result;
}
float3x3 fmod(float3x3 x, float3x3 y) {
    float3x3 result;
    result[0][0] = fmod(x[0][0], y[0][0]);
    result[0][1] = fmod(x[0][1], y[0][1]);
    result[0][2] = fmod(x[0][2], y[0][2]);
    result[1][0] = fmod(x[1][0], y[1][0]);
    result[1][1] = fmod(x[1][1], y[1][1]);
    result[1][2] = fmod(x[1][2], y[1][2]);
    result[2][0] = fmod(x[2][0], y[2][0]);
    result[2][1] = fmod(x[2][1], y[2][1]);
    result[2][2] = fmod(x[2][2], y[2][2]);
    return result;
}
float3x4 fmod(float3x4 x, float3x4 y) {
    float3x4 result;
    result[0][0] = fmod(x[0][0], y[0][0]);
    result[0][1] = fmod(x[0][1], y[0][1]);
    result[0][2] = fmod(x[0][2], y[0][2]);
    result[0][3] = fmod(x[0][3], y[0][3]);
    result[1][0] = fmod(x[1][0], y[1][0]);
    result[1][1] = fmod(x[1][1], y[1][1]);
    result[1][2] = fmod(x[1][2], y[1][2]);
    result[1][3] = fmod(x[1][3], y[1][3]);
    result[2][0] = fmod(x[2][0], y[2][0]);
    result[2][1] = fmod(x[2][1], y[2][1]);
    result[2][2] = fmod(x[2][2], y[2][2]);
    result[2][3] = fmod(x[2][3], y[2][3]);
    return result;
}
float4x2 fmod(float4x2 x, float4x2 y) {
    float4x2 result;
    result[0][0] = fmod(x[0][0], y[0][0]);
    result[0][1] = fmod(x[0][1], y[0][1]);
    result[1][0] = fmod(x[1][0], y[1][0]);
    result[1][1] = fmod(x[1][1], y[1][1]);
    result[2][0] = fmod(x[2][0], y[2][0]);
    result[2][1] = fmod(x[2][1], y[2][1]);
    result[3][0] = fmod(x[3][0], y[3][0]);
    result[3][1] = fmod(x[3][1], y[3][1]);
    return result;
}
float4x3 fmod(float4x3 x, float4x3 y) {
    float4x3 result;
    result[0][0] = fmod(x[0][0], y[0][0]);
    result[0][1] = fmod(x[0][1], y[0][1]);
    result[0][2] = fmod(x[0][2], y[0][2]);
    result[1][0] = fmod(x[1][0], y[1][0]);
    result[1][1] = fmod(x[1][1], y[1][1]);
    result[1][2] = fmod(x[1][2], y[1][2]);
    result[2][0] = fmod(x[2][0], y[2][0]);
    result[2][1] = fmod(x[2][1], y[2][1]);
    result[2][2] = fmod(x[2][2], y[2][2]);
    result[3][0] = fmod(x[3][0], y[3][0]);
    result[3][1] = fmod(x[3][1], y[3][1]);
    result[3][2] = fmod(x[3][2], y[3][2]);
    return result;
}
float4x4 fmod(float4x4 x, float4x4 y) {
    float4x4 result;
    result[0][0] = fmod(x[0][0], y[0][0]);
    result[0][1] = fmod(x[0][1], y[0][1]);
    result[0][2] = fmod(x[0][2], y[0][2]);
    result[0][3] = fmod(x[0][3], y[0][3]);
    result[1][0] = fmod(x[1][0], y[1][0]);
    result[1][1] = fmod(x[1][1], y[1][1]);
    result[1][2] = fmod(x[1][2], y[1][2]);
    result[1][3] = fmod(x[1][3], y[1][3]);
    result[2][0] = fmod(x[2][0], y[2][0]);
    result[2][1] = fmod(x[2][1], y[2][1]);
    result[2][2] = fmod(x[2][2], y[2][2]);
    result[2][3] = fmod(x[2][3], y[2][3]);
    result[3][0] = fmod(x[3][0], y[3][0]);
    result[3][1] = fmod(x[3][1], y[3][1]);
    result[3][2] = fmod(x[3][2], y[3][2]);
    result[3][3] = fmod(x[3][3], y[3][3]);
    return result;
}


/* Functions named operator.xzzx */
bool4 operator.xzzx(bool3 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    result.w = v.x;
    return result;
}
bool4 operator.xzzx(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    result.w = v.x;
    return result;
}
uint4 operator.xzzx(uint3 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    result.w = v.x;
    return result;
}
uint4 operator.xzzx(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    result.w = v.x;
    return result;
}
int4 operator.xzzx(int3 v) {
    int4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    result.w = v.x;
    return result;
}
int4 operator.xzzx(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    result.w = v.x;
    return result;
}
float4 operator.xzzx(float3 v) {
    float4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    result.w = v.x;
    return result;
}
float4 operator.xzzx(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    result.w = v.x;
    return result;
}

/* Functions named operator.yyzy */
bool4 operator.yyzy(bool3 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    result.w = v.y;
    return result;
}
bool4 operator.yyzy(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    result.w = v.y;
    return result;
}
uint4 operator.yyzy(uint3 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    result.w = v.y;
    return result;
}
uint4 operator.yyzy(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    result.w = v.y;
    return result;
}
int4 operator.yyzy(int3 v) {
    int4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    result.w = v.y;
    return result;
}
int4 operator.yyzy(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    result.w = v.y;
    return result;
}
float4 operator.yyzy(float3 v) {
    float4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    result.w = v.y;
    return result;
}
float4 operator.yyzy(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    result.w = v.y;
    return result;
}

/* Functions named operator.wyy */
bool3 operator.wyy(bool4 v) {
    bool3 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.y;
    return result;
}
uint3 operator.wyy(uint4 v) {
    uint3 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.y;
    return result;
}
int3 operator.wyy(int4 v) {
    int3 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.y;
    return result;
}
float3 operator.wyy(float4 v) {
    float3 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.y;
    return result;
}

/* Functions named operator.yzyx */
bool4 operator.yzyx(bool3 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    result.w = v.x;
    return result;
}
bool4 operator.yzyx(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    result.w = v.x;
    return result;
}
uint4 operator.yzyx(uint3 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    result.w = v.x;
    return result;
}
uint4 operator.yzyx(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    result.w = v.x;
    return result;
}
int4 operator.yzyx(int3 v) {
    int4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    result.w = v.x;
    return result;
}
int4 operator.yzyx(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    result.w = v.x;
    return result;
}
float4 operator.yzyx(float3 v) {
    float4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    result.w = v.x;
    return result;
}
float4 operator.yzyx(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    result.w = v.x;
    return result;
}

/* Functions named operator.ywzx= */
bool4 operator.ywzx=(bool4 v, bool4 c) {
    bool4 result = v;
    result.y = c.x;
    result.w = c.y;
    result.z = c.z;
    result.x = c.w;
    return result;
}
uint4 operator.ywzx=(uint4 v, uint4 c) {
    uint4 result = v;
    result.y = c.x;
    result.w = c.y;
    result.z = c.z;
    result.x = c.w;
    return result;
}
int4 operator.ywzx=(int4 v, int4 c) {
    int4 result = v;
    result.y = c.x;
    result.w = c.y;
    result.z = c.z;
    result.x = c.w;
    return result;
}
float4 operator.ywzx=(float4 v, float4 c) {
    float4 result = v;
    result.y = c.x;
    result.w = c.y;
    result.z = c.z;
    result.x = c.w;
    return result;
}

/* Functions named operator.xxzw */
bool4 operator.xxzw(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    result.w = v.w;
    return result;
}
uint4 operator.xxzw(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    result.w = v.w;
    return result;
}
int4 operator.xxzw(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    result.w = v.w;
    return result;
}
float4 operator.xxzw(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    result.w = v.w;
    return result;
}

/* Functions named operator.xyxx */
bool4 operator.xyxx(bool2 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
bool4 operator.xyxx(bool3 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
bool4 operator.xyxx(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
uint4 operator.xyxx(uint2 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
uint4 operator.xyxx(uint3 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
uint4 operator.xyxx(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
int4 operator.xyxx(int2 v) {
    int4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
int4 operator.xyxx(int3 v) {
    int4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
int4 operator.xyxx(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
float4 operator.xyxx(float2 v) {
    float4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
float4 operator.xyxx(float3 v) {
    float4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
float4 operator.xyxx(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}

/* Functions named operator.zyw= */
bool4 operator.zyw=(bool4 v, bool3 c) {
    bool4 result = v;
    result.z = c.x;
    result.y = c.y;
    result.w = c.z;
    return result;
}
uint4 operator.zyw=(uint4 v, uint3 c) {
    uint4 result = v;
    result.z = c.x;
    result.y = c.y;
    result.w = c.z;
    return result;
}
int4 operator.zyw=(int4 v, int3 c) {
    int4 result = v;
    result.z = c.x;
    result.y = c.y;
    result.w = c.z;
    return result;
}
float4 operator.zyw=(float4 v, float3 c) {
    float4 result = v;
    result.z = c.x;
    result.y = c.y;
    result.w = c.z;
    return result;
}

/* Functions named operator.wzxy */
bool4 operator.wzxy(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.x;
    result.w = v.y;
    return result;
}
uint4 operator.wzxy(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.x;
    result.w = v.y;
    return result;
}
int4 operator.wzxy(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.x;
    result.w = v.y;
    return result;
}
float4 operator.wzxy(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.x;
    result.w = v.y;
    return result;
}

/* Functions named operator.zwx */
bool3 operator.zwx(bool4 v) {
    bool3 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.x;
    return result;
}
uint3 operator.zwx(uint4 v) {
    uint3 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.x;
    return result;
}
int3 operator.zwx(int4 v) {
    int3 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.x;
    return result;
}
float3 operator.zwx(float4 v) {
    float3 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.x;
    return result;
}

/* Functions named operator- */
native int operator-(int, int);
native uint operator-(uint, uint);
native float operator-(float, float);
native int operator-(int);
native float operator-(float);

uint2 operator-(uint2 a, uint2 b) {
    uint2 result;
    result[0] = a[0] - b[0];
    result[1] = a[1] - b[1];
    return result;
}
uint3 operator-(uint3 a, uint3 b) {
    uint3 result;
    result[0] = a[0] - b[0];
    result[1] = a[1] - b[1];
    result[2] = a[2] - b[2];
    return result;
}
uint4 operator-(uint4 a, uint4 b) {
    uint4 result;
    result[0] = a[0] - b[0];
    result[1] = a[1] - b[1];
    result[2] = a[2] - b[2];
    result[3] = a[3] - b[3];
    return result;
}
int2 operator-(int2 a, int2 b) {
    int2 result;
    result[0] = a[0] - b[0];
    result[1] = a[1] - b[1];
    return result;
}
int3 operator-(int3 a, int3 b) {
    int3 result;
    result[0] = a[0] - b[0];
    result[1] = a[1] - b[1];
    result[2] = a[2] - b[2];
    return result;
}
int4 operator-(int4 a, int4 b) {
    int4 result;
    result[0] = a[0] - b[0];
    result[1] = a[1] - b[1];
    result[2] = a[2] - b[2];
    result[3] = a[3] - b[3];
    return result;
}
float2 operator-(float2 a, float2 b) {
    float2 result;
    result[0] = a[0] - b[0];
    result[1] = a[1] - b[1];
    return result;
}
float3 operator-(float3 a, float3 b) {
    float3 result;
    result[0] = a[0] - b[0];
    result[1] = a[1] - b[1];
    result[2] = a[2] - b[2];
    return result;
}
float4 operator-(float4 a, float4 b) {
    float4 result;
    result[0] = a[0] - b[0];
    result[1] = a[1] - b[1];
    result[2] = a[2] - b[2];
    result[3] = a[3] - b[3];
    return result;
}
int2 operator-(int2 a) {
    int2 result;
    result[0] = -a[0];
    result[1] = -a[1];
    return result;
}
int3 operator-(int3 a) {
    int3 result;
    result[0] = -a[0];
    result[1] = -a[1];
    result[2] = -a[2];
    return result;
}
int4 operator-(int4 a) {
    int4 result;
    result[0] = -a[0];
    result[1] = -a[1];
    result[2] = -a[2];
    result[3] = -a[3];
    return result;
}
float2 operator-(float2 a) {
    float2 result;
    result[0] = -a[0];
    result[1] = -a[1];
    return result;
}
float3 operator-(float3 a) {
    float3 result;
    result[0] = -a[0];
    result[1] = -a[1];
    result[2] = -a[2];
    return result;
}
float4 operator-(float4 a) {
    float4 result;
    result[0] = -a[0];
    result[1] = -a[1];
    result[2] = -a[2];
    result[3] = -a[3];
    return result;
}
float2x2 operator-(float2x2 a, float2x2 b) {
    float2x2 result;
    result[0][0] = a[0][0] - b[0][0];
    result[0][1] = a[0][1] - b[0][1];
    result[1][0] = a[1][0] - b[1][0];
    result[1][1] = a[1][1] - b[1][1];
    return result;
}
float2x2 operator-(float2x2 a) {
    float2x2 result;
    result[0][0] = -a[0][0];
    result[0][1] = -a[0][1];
    result[1][0] = -a[1][0];
    result[1][1] = -a[1][1];
    return result;
}
float2x3 operator-(float2x3 a, float2x3 b) {
    float2x3 result;
    result[0][0] = a[0][0] - b[0][0];
    result[0][1] = a[0][1] - b[0][1];
    result[0][2] = a[0][2] - b[0][2];
    result[1][0] = a[1][0] - b[1][0];
    result[1][1] = a[1][1] - b[1][1];
    result[1][2] = a[1][2] - b[1][2];
    return result;
}
float2x3 operator-(float2x3 a) {
    float2x3 result;
    result[0][0] = -a[0][0];
    result[0][1] = -a[0][1];
    result[0][2] = -a[0][2];
    result[1][0] = -a[1][0];
    result[1][1] = -a[1][1];
    result[1][2] = -a[1][2];
    return result;
}
float2x4 operator-(float2x4 a, float2x4 b) {
    float2x4 result;
    result[0][0] = a[0][0] - b[0][0];
    result[0][1] = a[0][1] - b[0][1];
    result[0][2] = a[0][2] - b[0][2];
    result[0][3] = a[0][3] - b[0][3];
    result[1][0] = a[1][0] - b[1][0];
    result[1][1] = a[1][1] - b[1][1];
    result[1][2] = a[1][2] - b[1][2];
    result[1][3] = a[1][3] - b[1][3];
    return result;
}
float2x4 operator-(float2x4 a) {
    float2x4 result;
    result[0][0] = -a[0][0];
    result[0][1] = -a[0][1];
    result[0][2] = -a[0][2];
    result[0][3] = -a[0][3];
    result[1][0] = -a[1][0];
    result[1][1] = -a[1][1];
    result[1][2] = -a[1][2];
    result[1][3] = -a[1][3];
    return result;
}
float3x2 operator-(float3x2 a, float3x2 b) {
    float3x2 result;
    result[0][0] = a[0][0] - b[0][0];
    result[0][1] = a[0][1] - b[0][1];
    result[1][0] = a[1][0] - b[1][0];
    result[1][1] = a[1][1] - b[1][1];
    result[2][0] = a[2][0] - b[2][0];
    result[2][1] = a[2][1] - b[2][1];
    return result;
}
float3x2 operator-(float3x2 a) {
    float3x2 result;
    result[0][0] = -a[0][0];
    result[0][1] = -a[0][1];
    result[1][0] = -a[1][0];
    result[1][1] = -a[1][1];
    result[2][0] = -a[2][0];
    result[2][1] = -a[2][1];
    return result;
}
float3x3 operator-(float3x3 a, float3x3 b) {
    float3x3 result;
    result[0][0] = a[0][0] - b[0][0];
    result[0][1] = a[0][1] - b[0][1];
    result[0][2] = a[0][2] - b[0][2];
    result[1][0] = a[1][0] - b[1][0];
    result[1][1] = a[1][1] - b[1][1];
    result[1][2] = a[1][2] - b[1][2];
    result[2][0] = a[2][0] - b[2][0];
    result[2][1] = a[2][1] - b[2][1];
    result[2][2] = a[2][2] - b[2][2];
    return result;
}
float3x3 operator-(float3x3 a) {
    float3x3 result;
    result[0][0] = -a[0][0];
    result[0][1] = -a[0][1];
    result[0][2] = -a[0][2];
    result[1][0] = -a[1][0];
    result[1][1] = -a[1][1];
    result[1][2] = -a[1][2];
    result[2][0] = -a[2][0];
    result[2][1] = -a[2][1];
    result[2][2] = -a[2][2];
    return result;
}
float3x4 operator-(float3x4 a, float3x4 b) {
    float3x4 result;
    result[0][0] = a[0][0] - b[0][0];
    result[0][1] = a[0][1] - b[0][1];
    result[0][2] = a[0][2] - b[0][2];
    result[0][3] = a[0][3] - b[0][3];
    result[1][0] = a[1][0] - b[1][0];
    result[1][1] = a[1][1] - b[1][1];
    result[1][2] = a[1][2] - b[1][2];
    result[1][3] = a[1][3] - b[1][3];
    result[2][0] = a[2][0] - b[2][0];
    result[2][1] = a[2][1] - b[2][1];
    result[2][2] = a[2][2] - b[2][2];
    result[2][3] = a[2][3] - b[2][3];
    return result;
}
float3x4 operator-(float3x4 a) {
    float3x4 result;
    result[0][0] = -a[0][0];
    result[0][1] = -a[0][1];
    result[0][2] = -a[0][2];
    result[0][3] = -a[0][3];
    result[1][0] = -a[1][0];
    result[1][1] = -a[1][1];
    result[1][2] = -a[1][2];
    result[1][3] = -a[1][3];
    result[2][0] = -a[2][0];
    result[2][1] = -a[2][1];
    result[2][2] = -a[2][2];
    result[2][3] = -a[2][3];
    return result;
}
float4x2 operator-(float4x2 a, float4x2 b) {
    float4x2 result;
    result[0][0] = a[0][0] - b[0][0];
    result[0][1] = a[0][1] - b[0][1];
    result[1][0] = a[1][0] - b[1][0];
    result[1][1] = a[1][1] - b[1][1];
    result[2][0] = a[2][0] - b[2][0];
    result[2][1] = a[2][1] - b[2][1];
    result[3][0] = a[3][0] - b[3][0];
    result[3][1] = a[3][1] - b[3][1];
    return result;
}
float4x2 operator-(float4x2 a) {
    float4x2 result;
    result[0][0] = -a[0][0];
    result[0][1] = -a[0][1];
    result[1][0] = -a[1][0];
    result[1][1] = -a[1][1];
    result[2][0] = -a[2][0];
    result[2][1] = -a[2][1];
    result[3][0] = -a[3][0];
    result[3][1] = -a[3][1];
    return result;
}
float4x3 operator-(float4x3 a, float4x3 b) {
    float4x3 result;
    result[0][0] = a[0][0] - b[0][0];
    result[0][1] = a[0][1] - b[0][1];
    result[0][2] = a[0][2] - b[0][2];
    result[1][0] = a[1][0] - b[1][0];
    result[1][1] = a[1][1] - b[1][1];
    result[1][2] = a[1][2] - b[1][2];
    result[2][0] = a[2][0] - b[2][0];
    result[2][1] = a[2][1] - b[2][1];
    result[2][2] = a[2][2] - b[2][2];
    result[3][0] = a[3][0] - b[3][0];
    result[3][1] = a[3][1] - b[3][1];
    result[3][2] = a[3][2] - b[3][2];
    return result;
}
float4x3 operator-(float4x3 a) {
    float4x3 result;
    result[0][0] = -a[0][0];
    result[0][1] = -a[0][1];
    result[0][2] = -a[0][2];
    result[1][0] = -a[1][0];
    result[1][1] = -a[1][1];
    result[1][2] = -a[1][2];
    result[2][0] = -a[2][0];
    result[2][1] = -a[2][1];
    result[2][2] = -a[2][2];
    result[3][0] = -a[3][0];
    result[3][1] = -a[3][1];
    result[3][2] = -a[3][2];
    return result;
}
float4x4 operator-(float4x4 a, float4x4 b) {
    float4x4 result;
    result[0][0] = a[0][0] - b[0][0];
    result[0][1] = a[0][1] - b[0][1];
    result[0][2] = a[0][2] - b[0][2];
    result[0][3] = a[0][3] - b[0][3];
    result[1][0] = a[1][0] - b[1][0];
    result[1][1] = a[1][1] - b[1][1];
    result[1][2] = a[1][2] - b[1][2];
    result[1][3] = a[1][3] - b[1][3];
    result[2][0] = a[2][0] - b[2][0];
    result[2][1] = a[2][1] - b[2][1];
    result[2][2] = a[2][2] - b[2][2];
    result[2][3] = a[2][3] - b[2][3];
    result[3][0] = a[3][0] - b[3][0];
    result[3][1] = a[3][1] - b[3][1];
    result[3][2] = a[3][2] - b[3][2];
    result[3][3] = a[3][3] - b[3][3];
    return result;
}
float4x4 operator-(float4x4 a) {
    float4x4 result;
    result[0][0] = -a[0][0];
    result[0][1] = -a[0][1];
    result[0][2] = -a[0][2];
    result[0][3] = -a[0][3];
    result[1][0] = -a[1][0];
    result[1][1] = -a[1][1];
    result[1][2] = -a[1][2];
    result[1][3] = -a[1][3];
    result[2][0] = -a[2][0];
    result[2][1] = -a[2][1];
    result[2][2] = -a[2][2];
    result[2][3] = -a[2][3];
    result[3][0] = -a[3][0];
    result[3][1] = -a[3][1];
    result[3][2] = -a[3][2];
    result[3][3] = -a[3][3];
    return result;
}

/* Functions named min */
uint min(uint x, uint y) {
    return x > y ? y : x;
}
uint2 min(uint2 x, uint2 y) {
    uint2 result;
    result[0] = min(x[0], y[0]);
    result[1] = min(x[1], y[1]);
    return result;
}
uint3 min(uint3 x, uint3 y) {
    uint3 result;
    result[0] = min(x[0], y[0]);
    result[1] = min(x[1], y[1]);
    result[2] = min(x[2], y[2]);
    return result;
}
uint4 min(uint4 x, uint4 y) {
    uint4 result;
    result[0] = min(x[0], y[0]);
    result[1] = min(x[1], y[1]);
    result[2] = min(x[2], y[2]);
    result[3] = min(x[3], y[3]);
    return result;
}
int min(int x, int y) {
    return x > y ? y : x;
}
int2 min(int2 x, int2 y) {
    int2 result;
    result[0] = min(x[0], y[0]);
    result[1] = min(x[1], y[1]);
    return result;
}
int3 min(int3 x, int3 y) {
    int3 result;
    result[0] = min(x[0], y[0]);
    result[1] = min(x[1], y[1]);
    result[2] = min(x[2], y[2]);
    return result;
}
int4 min(int4 x, int4 y) {
    int4 result;
    result[0] = min(x[0], y[0]);
    result[1] = min(x[1], y[1]);
    result[2] = min(x[2], y[2]);
    result[3] = min(x[3], y[3]);
    return result;
}
float min(float x, float y) {
    return x > y ? y : x;
}
float2 min(float2 x, float2 y) {
    float2 result;
    result[0] = min(x[0], y[0]);
    result[1] = min(x[1], y[1]);
    return result;
}
float3 min(float3 x, float3 y) {
    float3 result;
    result[0] = min(x[0], y[0]);
    result[1] = min(x[1], y[1]);
    result[2] = min(x[2], y[2]);
    return result;
}
float4 min(float4 x, float4 y) {
    float4 result;
    result[0] = min(x[0], y[0]);
    result[1] = min(x[1], y[1]);
    result[2] = min(x[2], y[2]);
    result[3] = min(x[3], y[3]);
    return result;
}
float2x2 min(float2x2 x, float2x2 y) {
    float2x2 result;
    result[0][0] = min(x[0][0], y[0][0]);
    result[0][1] = min(x[0][1], y[0][1]);
    result[1][0] = min(x[1][0], y[1][0]);
    result[1][1] = min(x[1][1], y[1][1]);
    return result;
}
float2x3 min(float2x3 x, float2x3 y) {
    float2x3 result;
    result[0][0] = min(x[0][0], y[0][0]);
    result[0][1] = min(x[0][1], y[0][1]);
    result[0][2] = min(x[0][2], y[0][2]);
    result[1][0] = min(x[1][0], y[1][0]);
    result[1][1] = min(x[1][1], y[1][1]);
    result[1][2] = min(x[1][2], y[1][2]);
    return result;
}
float2x4 min(float2x4 x, float2x4 y) {
    float2x4 result;
    result[0][0] = min(x[0][0], y[0][0]);
    result[0][1] = min(x[0][1], y[0][1]);
    result[0][2] = min(x[0][2], y[0][2]);
    result[0][3] = min(x[0][3], y[0][3]);
    result[1][0] = min(x[1][0], y[1][0]);
    result[1][1] = min(x[1][1], y[1][1]);
    result[1][2] = min(x[1][2], y[1][2]);
    result[1][3] = min(x[1][3], y[1][3]);
    return result;
}
float3x2 min(float3x2 x, float3x2 y) {
    float3x2 result;
    result[0][0] = min(x[0][0], y[0][0]);
    result[0][1] = min(x[0][1], y[0][1]);
    result[1][0] = min(x[1][0], y[1][0]);
    result[1][1] = min(x[1][1], y[1][1]);
    result[2][0] = min(x[2][0], y[2][0]);
    result[2][1] = min(x[2][1], y[2][1]);
    return result;
}
float3x3 min(float3x3 x, float3x3 y) {
    float3x3 result;
    result[0][0] = min(x[0][0], y[0][0]);
    result[0][1] = min(x[0][1], y[0][1]);
    result[0][2] = min(x[0][2], y[0][2]);
    result[1][0] = min(x[1][0], y[1][0]);
    result[1][1] = min(x[1][1], y[1][1]);
    result[1][2] = min(x[1][2], y[1][2]);
    result[2][0] = min(x[2][0], y[2][0]);
    result[2][1] = min(x[2][1], y[2][1]);
    result[2][2] = min(x[2][2], y[2][2]);
    return result;
}
float3x4 min(float3x4 x, float3x4 y) {
    float3x4 result;
    result[0][0] = min(x[0][0], y[0][0]);
    result[0][1] = min(x[0][1], y[0][1]);
    result[0][2] = min(x[0][2], y[0][2]);
    result[0][3] = min(x[0][3], y[0][3]);
    result[1][0] = min(x[1][0], y[1][0]);
    result[1][1] = min(x[1][1], y[1][1]);
    result[1][2] = min(x[1][2], y[1][2]);
    result[1][3] = min(x[1][3], y[1][3]);
    result[2][0] = min(x[2][0], y[2][0]);
    result[2][1] = min(x[2][1], y[2][1]);
    result[2][2] = min(x[2][2], y[2][2]);
    result[2][3] = min(x[2][3], y[2][3]);
    return result;
}
float4x2 min(float4x2 x, float4x2 y) {
    float4x2 result;
    result[0][0] = min(x[0][0], y[0][0]);
    result[0][1] = min(x[0][1], y[0][1]);
    result[1][0] = min(x[1][0], y[1][0]);
    result[1][1] = min(x[1][1], y[1][1]);
    result[2][0] = min(x[2][0], y[2][0]);
    result[2][1] = min(x[2][1], y[2][1]);
    result[3][0] = min(x[3][0], y[3][0]);
    result[3][1] = min(x[3][1], y[3][1]);
    return result;
}
float4x3 min(float4x3 x, float4x3 y) {
    float4x3 result;
    result[0][0] = min(x[0][0], y[0][0]);
    result[0][1] = min(x[0][1], y[0][1]);
    result[0][2] = min(x[0][2], y[0][2]);
    result[1][0] = min(x[1][0], y[1][0]);
    result[1][1] = min(x[1][1], y[1][1]);
    result[1][2] = min(x[1][2], y[1][2]);
    result[2][0] = min(x[2][0], y[2][0]);
    result[2][1] = min(x[2][1], y[2][1]);
    result[2][2] = min(x[2][2], y[2][2]);
    result[3][0] = min(x[3][0], y[3][0]);
    result[3][1] = min(x[3][1], y[3][1]);
    result[3][2] = min(x[3][2], y[3][2]);
    return result;
}
float4x4 min(float4x4 x, float4x4 y) {
    float4x4 result;
    result[0][0] = min(x[0][0], y[0][0]);
    result[0][1] = min(x[0][1], y[0][1]);
    result[0][2] = min(x[0][2], y[0][2]);
    result[0][3] = min(x[0][3], y[0][3]);
    result[1][0] = min(x[1][0], y[1][0]);
    result[1][1] = min(x[1][1], y[1][1]);
    result[1][2] = min(x[1][2], y[1][2]);
    result[1][3] = min(x[1][3], y[1][3]);
    result[2][0] = min(x[2][0], y[2][0]);
    result[2][1] = min(x[2][1], y[2][1]);
    result[2][2] = min(x[2][2], y[2][2]);
    result[2][3] = min(x[2][3], y[2][3]);
    result[3][0] = min(x[3][0], y[3][0]);
    result[3][1] = min(x[3][1], y[3][1]);
    result[3][2] = min(x[3][2], y[3][2]);
    result[3][3] = min(x[3][3], y[3][3]);
    return result;
}

/* Functions named operator.xyz */
bool3 operator.xyz(bool3 v) {
    bool3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    return result;
}
bool3 operator.xyz(bool4 v) {
    bool3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    return result;
}
uint3 operator.xyz(uint3 v) {
    uint3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    return result;
}
uint3 operator.xyz(uint4 v) {
    uint3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    return result;
}
int3 operator.xyz(int3 v) {
    int3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    return result;
}
int3 operator.xyz(int4 v) {
    int3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    return result;
}
float3 operator.xyz(float3 v) {
    float3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    return result;
}
float3 operator.xyz(float4 v) {
    float3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    return result;
}

/* Functions named operator.wz= */
bool4 operator.wz=(bool4 v, bool2 c) {
    bool4 result = v;
    result.w = c.x;
    result.z = c.y;
    return result;
}
uint4 operator.wz=(uint4 v, uint2 c) {
    uint4 result = v;
    result.w = c.x;
    result.z = c.y;
    return result;
}
int4 operator.wz=(int4 v, int2 c) {
    int4 result = v;
    result.w = c.x;
    result.z = c.y;
    return result;
}
float4 operator.wz=(float4 v, float2 c) {
    float4 result = v;
    result.w = c.x;
    result.z = c.y;
    return result;
}

/* Functions named operator.zyyy */
bool4 operator.zyyy(bool3 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
bool4 operator.zyyy(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
uint4 operator.zyyy(uint3 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
uint4 operator.zyyy(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
int4 operator.zyyy(int3 v) {
    int4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
int4 operator.zyyy(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
float4 operator.zyyy(float3 v) {
    float4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
float4 operator.zyyy(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}

/* Functions named InterlockedXor */
native void InterlockedXor(device atomic_uint*, uint, thread uint*);
native void InterlockedXor(device atomic_int*, int, thread int*);
native void InterlockedXor(device atomic_uint*, uint, device uint*);
native void InterlockedXor(device atomic_int*, int, device int*);
native void InterlockedXor(device atomic_uint*, uint, threadgroup uint*);
native void InterlockedXor(device atomic_int*, int, threadgroup int*);
native void InterlockedXor(threadgroup atomic_uint*, uint, thread uint*);
native void InterlockedXor(threadgroup atomic_int*, int, thread int*);
native void InterlockedXor(threadgroup atomic_uint*, uint, device uint*);
native void InterlockedXor(threadgroup atomic_int*, int, device int*);
native void InterlockedXor(threadgroup atomic_uint*, uint, threadgroup uint*);
native void InterlockedXor(threadgroup atomic_int*, int, threadgroup int*);

/* Functions named operator.wzx= */
bool4 operator.wzx=(bool4 v, bool3 c) {
    bool4 result = v;
    result.w = c.x;
    result.z = c.y;
    result.x = c.z;
    return result;
}
uint4 operator.wzx=(uint4 v, uint3 c) {
    uint4 result = v;
    result.w = c.x;
    result.z = c.y;
    result.x = c.z;
    return result;
}
int4 operator.wzx=(int4 v, int3 c) {
    int4 result = v;
    result.w = c.x;
    result.z = c.y;
    result.x = c.z;
    return result;
}
float4 operator.wzx=(float4 v, float3 c) {
    float4 result = v;
    result.w = c.x;
    result.z = c.y;
    result.x = c.z;
    return result;
}

/* Functions named operator.zwzy */
bool4 operator.zwzy(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.z;
    result.w = v.y;
    return result;
}
uint4 operator.zwzy(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.z;
    result.w = v.y;
    return result;
}
int4 operator.zwzy(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.z;
    result.w = v.y;
    return result;
}
float4 operator.zwzy(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.z;
    result.w = v.y;
    return result;
}

/* Functions named GroupMemoryBarrierWithGroupSync */
native void GroupMemoryBarrierWithGroupSync();


/* Functions named operator.xyzy */
bool4 operator.xyzy(bool3 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    result.w = v.y;
    return result;
}
bool4 operator.xyzy(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    result.w = v.y;
    return result;
}
uint4 operator.xyzy(uint3 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    result.w = v.y;
    return result;
}
uint4 operator.xyzy(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    result.w = v.y;
    return result;
}
int4 operator.xyzy(int3 v) {
    int4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    result.w = v.y;
    return result;
}
int4 operator.xyzy(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    result.w = v.y;
    return result;
}
float4 operator.xyzy(float3 v) {
    float4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    result.w = v.y;
    return result;
}
float4 operator.xyzy(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    result.w = v.y;
    return result;
}

/* Functions named trunc */
native float trunc(float);
float2 trunc(float2 x) {
    float2 result;
    result[0] = trunc(x[0]);
    result[1] = trunc(x[1]);
    return result;
}
float3 trunc(float3 x) {
    float3 result;
    result[0] = trunc(x[0]);
    result[1] = trunc(x[1]);
    result[2] = trunc(x[2]);
    return result;
}
float4 trunc(float4 x) {
    float4 result;
    result[0] = trunc(x[0]);
    result[1] = trunc(x[1]);
    result[2] = trunc(x[2]);
    result[3] = trunc(x[3]);
    return result;
}
float2x2 trunc(float2x2 x) {
    float2x2 result;
    result[0][0] = trunc(x[0][0]);
    result[0][1] = trunc(x[0][1]);
    result[1][0] = trunc(x[1][0]);
    result[1][1] = trunc(x[1][1]);
    return result;
}
float2x3 trunc(float2x3 x) {
    float2x3 result;
    result[0][0] = trunc(x[0][0]);
    result[0][1] = trunc(x[0][1]);
    result[0][2] = trunc(x[0][2]);
    result[1][0] = trunc(x[1][0]);
    result[1][1] = trunc(x[1][1]);
    result[1][2] = trunc(x[1][2]);
    return result;
}
float2x4 trunc(float2x4 x) {
    float2x4 result;
    result[0][0] = trunc(x[0][0]);
    result[0][1] = trunc(x[0][1]);
    result[0][2] = trunc(x[0][2]);
    result[0][3] = trunc(x[0][3]);
    result[1][0] = trunc(x[1][0]);
    result[1][1] = trunc(x[1][1]);
    result[1][2] = trunc(x[1][2]);
    result[1][3] = trunc(x[1][3]);
    return result;
}
float3x2 trunc(float3x2 x) {
    float3x2 result;
    result[0][0] = trunc(x[0][0]);
    result[0][1] = trunc(x[0][1]);
    result[1][0] = trunc(x[1][0]);
    result[1][1] = trunc(x[1][1]);
    result[2][0] = trunc(x[2][0]);
    result[2][1] = trunc(x[2][1]);
    return result;
}
float3x3 trunc(float3x3 x) {
    float3x3 result;
    result[0][0] = trunc(x[0][0]);
    result[0][1] = trunc(x[0][1]);
    result[0][2] = trunc(x[0][2]);
    result[1][0] = trunc(x[1][0]);
    result[1][1] = trunc(x[1][1]);
    result[1][2] = trunc(x[1][2]);
    result[2][0] = trunc(x[2][0]);
    result[2][1] = trunc(x[2][1]);
    result[2][2] = trunc(x[2][2]);
    return result;
}
float3x4 trunc(float3x4 x) {
    float3x4 result;
    result[0][0] = trunc(x[0][0]);
    result[0][1] = trunc(x[0][1]);
    result[0][2] = trunc(x[0][2]);
    result[0][3] = trunc(x[0][3]);
    result[1][0] = trunc(x[1][0]);
    result[1][1] = trunc(x[1][1]);
    result[1][2] = trunc(x[1][2]);
    result[1][3] = trunc(x[1][3]);
    result[2][0] = trunc(x[2][0]);
    result[2][1] = trunc(x[2][1]);
    result[2][2] = trunc(x[2][2]);
    result[2][3] = trunc(x[2][3]);
    return result;
}
float4x2 trunc(float4x2 x) {
    float4x2 result;
    result[0][0] = trunc(x[0][0]);
    result[0][1] = trunc(x[0][1]);
    result[1][0] = trunc(x[1][0]);
    result[1][1] = trunc(x[1][1]);
    result[2][0] = trunc(x[2][0]);
    result[2][1] = trunc(x[2][1]);
    result[3][0] = trunc(x[3][0]);
    result[3][1] = trunc(x[3][1]);
    return result;
}
float4x3 trunc(float4x3 x) {
    float4x3 result;
    result[0][0] = trunc(x[0][0]);
    result[0][1] = trunc(x[0][1]);
    result[0][2] = trunc(x[0][2]);
    result[1][0] = trunc(x[1][0]);
    result[1][1] = trunc(x[1][1]);
    result[1][2] = trunc(x[1][2]);
    result[2][0] = trunc(x[2][0]);
    result[2][1] = trunc(x[2][1]);
    result[2][2] = trunc(x[2][2]);
    result[3][0] = trunc(x[3][0]);
    result[3][1] = trunc(x[3][1]);
    result[3][2] = trunc(x[3][2]);
    return result;
}
float4x4 trunc(float4x4 x) {
    float4x4 result;
    result[0][0] = trunc(x[0][0]);
    result[0][1] = trunc(x[0][1]);
    result[0][2] = trunc(x[0][2]);
    result[0][3] = trunc(x[0][3]);
    result[1][0] = trunc(x[1][0]);
    result[1][1] = trunc(x[1][1]);
    result[1][2] = trunc(x[1][2]);
    result[1][3] = trunc(x[1][3]);
    result[2][0] = trunc(x[2][0]);
    result[2][1] = trunc(x[2][1]);
    result[2][2] = trunc(x[2][2]);
    result[2][3] = trunc(x[2][3]);
    result[3][0] = trunc(x[3][0]);
    result[3][1] = trunc(x[3][1]);
    result[3][2] = trunc(x[3][2]);
    result[3][3] = trunc(x[3][3]);
    return result;
}

/* Functions named operator.length */
uint operator.length(bool2) {
    return 2;
}
uint operator.length(bool3) {
    return 3;
}
uint operator.length(bool4) {
    return 4;
}
uint operator.length(uint2) {
    return 2;
}
uint operator.length(uint3) {
    return 3;
}
uint operator.length(uint4) {
    return 4;
}
uint operator.length(int2) {
    return 2;
}
uint operator.length(int3) {
    return 3;
}
uint operator.length(int4) {
    return 4;
}
uint operator.length(float2) {
    return 2;
}
uint operator.length(float3) {
    return 3;
}
uint operator.length(float4) {
    return 4;
}


/* Functions named operator.zwwx */
bool4 operator.zwwx(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.w;
    result.w = v.x;
    return result;
}
uint4 operator.zwwx(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.w;
    result.w = v.x;
    return result;
}
int4 operator.zwwx(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.w;
    result.w = v.x;
    return result;
}
float4 operator.zwwx(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.w;
    result.w = v.x;
    return result;
}

/* Functions named operator.wyxx */
bool4 operator.wyxx(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
uint4 operator.wyxx(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
int4 operator.wyxx(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
float4 operator.wyxx(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}

/* Functions named operator.ywz= */
bool4 operator.ywz=(bool4 v, bool3 c) {
    bool4 result = v;
    result.y = c.x;
    result.w = c.y;
    result.z = c.z;
    return result;
}
uint4 operator.ywz=(uint4 v, uint3 c) {
    uint4 result = v;
    result.y = c.x;
    result.w = c.y;
    result.z = c.z;
    return result;
}
int4 operator.ywz=(int4 v, int3 c) {
    int4 result = v;
    result.y = c.x;
    result.w = c.y;
    result.z = c.z;
    return result;
}
float4 operator.ywz=(float4 v, float3 c) {
    float4 result = v;
    result.y = c.x;
    result.w = c.y;
    result.z = c.z;
    return result;
}

/* Functions named operator.xzyy */
bool4 operator.xzyy(bool3 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    result.w = v.y;
    return result;
}
bool4 operator.xzyy(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    result.w = v.y;
    return result;
}
uint4 operator.xzyy(uint3 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    result.w = v.y;
    return result;
}
uint4 operator.xzyy(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    result.w = v.y;
    return result;
}
int4 operator.xzyy(int3 v) {
    int4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    result.w = v.y;
    return result;
}
int4 operator.xzyy(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    result.w = v.y;
    return result;
}
float4 operator.xzyy(float3 v) {
    float4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    result.w = v.y;
    return result;
}
float4 operator.xzyy(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    result.w = v.y;
    return result;
}

/* Functions named operator.xxxz */
bool4 operator.xxxz(bool3 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.z;
    return result;
}
bool4 operator.xxxz(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.z;
    return result;
}
uint4 operator.xxxz(uint3 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.z;
    return result;
}
uint4 operator.xxxz(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.z;
    return result;
}
int4 operator.xxxz(int3 v) {
    int4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.z;
    return result;
}
int4 operator.xxxz(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.z;
    return result;
}
float4 operator.xxxz(float3 v) {
    float4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.z;
    return result;
}
float4 operator.xxxz(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.z;
    return result;
}

/* Functions named operator.wxwy */
bool4 operator.wxwy(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.w;
    result.w = v.y;
    return result;
}
uint4 operator.wxwy(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.w;
    result.w = v.y;
    return result;
}
int4 operator.wxwy(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.w;
    result.w = v.y;
    return result;
}
float4 operator.wxwy(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.w;
    result.w = v.y;
    return result;
}

/* Functions named operator.yxwz */
bool4 operator.yxwz(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.w;
    result.w = v.z;
    return result;
}
uint4 operator.yxwz(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.w;
    result.w = v.z;
    return result;
}
int4 operator.yxwz(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.w;
    result.w = v.z;
    return result;
}
float4 operator.yxwz(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.w;
    result.w = v.z;
    return result;
}

/* Functions named operator.ywww */
bool4 operator.ywww(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.w;
    result.w = v.w;
    return result;
}
uint4 operator.ywww(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.w;
    result.w = v.w;
    return result;
}
int4 operator.ywww(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.w;
    result.w = v.w;
    return result;
}
float4 operator.ywww(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.w;
    result.w = v.w;
    return result;
}

/* Functions named operator.xzw */
bool3 operator.xzw(bool4 v) {
    bool3 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.w;
    return result;
}
uint3 operator.xzw(uint4 v) {
    uint3 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.w;
    return result;
}
int3 operator.xzw(int4 v) {
    int3 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.w;
    return result;
}
float3 operator.xzw(float4 v) {
    float3 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.w;
    return result;
}

/* Functions named operator.wwwx */
bool4 operator.wwwx(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.w;
    result.w = v.x;
    return result;
}
uint4 operator.wwwx(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.w;
    result.w = v.x;
    return result;
}
int4 operator.wwwx(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.w;
    result.w = v.x;
    return result;
}
float4 operator.wwwx(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.w;
    result.w = v.x;
    return result;
}

/* Functions named operator.wwxx */
bool4 operator.wwxx(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.x;
    result.w = v.x;
    return result;
}
uint4 operator.wwxx(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.x;
    result.w = v.x;
    return result;
}
int4 operator.wwxx(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.x;
    result.w = v.x;
    return result;
}
float4 operator.wwxx(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.x;
    result.w = v.x;
    return result;
}

/* Functions named operator.xyw= */
bool4 operator.xyw=(bool4 v, bool3 c) {
    bool4 result = v;
    result.x = c.x;
    result.y = c.y;
    result.w = c.z;
    return result;
}
uint4 operator.xyw=(uint4 v, uint3 c) {
    uint4 result = v;
    result.x = c.x;
    result.y = c.y;
    result.w = c.z;
    return result;
}
int4 operator.xyw=(int4 v, int3 c) {
    int4 result = v;
    result.x = c.x;
    result.y = c.y;
    result.w = c.z;
    return result;
}
float4 operator.xyw=(float4 v, float3 c) {
    float4 result = v;
    result.x = c.x;
    result.y = c.y;
    result.w = c.z;
    return result;
}

/* Functions named operator.xzy */
bool3 operator.xzy(bool3 v) {
    bool3 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    return result;
}
bool3 operator.xzy(bool4 v) {
    bool3 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    return result;
}
uint3 operator.xzy(uint3 v) {
    uint3 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    return result;
}
uint3 operator.xzy(uint4 v) {
    uint3 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    return result;
}
int3 operator.xzy(int3 v) {
    int3 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    return result;
}
int3 operator.xzy(int4 v) {
    int3 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    return result;
}
float3 operator.xzy(float3 v) {
    float3 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    return result;
}
float3 operator.xzy(float4 v) {
    float3 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.y;
    return result;
}

/* Functions named operator.zzzz */
bool4 operator.zzzz(bool3 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    result.w = v.z;
    return result;
}
bool4 operator.zzzz(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    result.w = v.z;
    return result;
}
uint4 operator.zzzz(uint3 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    result.w = v.z;
    return result;
}
uint4 operator.zzzz(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    result.w = v.z;
    return result;
}
int4 operator.zzzz(int3 v) {
    int4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    result.w = v.z;
    return result;
}
int4 operator.zzzz(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    result.w = v.z;
    return result;
}
float4 operator.zzzz(float3 v) {
    float4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    result.w = v.z;
    return result;
}
float4 operator.zzzz(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    result.w = v.z;
    return result;
}

/* Functions named operator.zzzx */
bool4 operator.zzzx(bool3 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    result.w = v.x;
    return result;
}
bool4 operator.zzzx(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    result.w = v.x;
    return result;
}
uint4 operator.zzzx(uint3 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    result.w = v.x;
    return result;
}
uint4 operator.zzzx(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    result.w = v.x;
    return result;
}
int4 operator.zzzx(int3 v) {
    int4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    result.w = v.x;
    return result;
}
int4 operator.zzzx(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    result.w = v.x;
    return result;
}
float4 operator.zzzx(float3 v) {
    float4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    result.w = v.x;
    return result;
}
float4 operator.zzzx(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.z;
    result.w = v.x;
    return result;
}

/* Functions named operator.xw */
bool2 operator.xw(bool4 v) {
    bool2 result;
    result.x = v.x;
    result.y = v.w;
    return result;
}
uint2 operator.xw(uint4 v) {
    uint2 result;
    result.x = v.x;
    result.y = v.w;
    return result;
}
int2 operator.xw(int4 v) {
    int2 result;
    result.x = v.x;
    result.y = v.w;
    return result;
}
float2 operator.xw(float4 v) {
    float2 result;
    result.x = v.x;
    result.y = v.w;
    return result;
}

/* Functions named operator.wxyw */
bool4 operator.wxyw(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.y;
    result.w = v.w;
    return result;
}
uint4 operator.wxyw(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.y;
    result.w = v.w;
    return result;
}
int4 operator.wxyw(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.y;
    result.w = v.w;
    return result;
}
float4 operator.wxyw(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.y;
    result.w = v.w;
    return result;
}

/* Functions named operator.yzww */
bool4 operator.yzww(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.w;
    result.w = v.w;
    return result;
}
uint4 operator.yzww(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.w;
    result.w = v.w;
    return result;
}
int4 operator.yzww(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.w;
    result.w = v.w;
    return result;
}
float4 operator.yzww(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.w;
    result.w = v.w;
    return result;
}

/* Functions named operator.wxw */
bool3 operator.wxw(bool4 v) {
    bool3 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.w;
    return result;
}
uint3 operator.wxw(uint4 v) {
    uint3 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.w;
    return result;
}
int3 operator.wxw(int4 v) {
    int3 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.w;
    return result;
}
float3 operator.wxw(float4 v) {
    float3 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.w;
    return result;
}

/* Functions named operator.xwwy */
bool4 operator.xwwy(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.w;
    result.w = v.y;
    return result;
}
uint4 operator.xwwy(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.w;
    result.w = v.y;
    return result;
}
int4 operator.xwwy(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.w;
    result.w = v.y;
    return result;
}
float4 operator.xwwy(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.w;
    result.w = v.y;
    return result;
}

/* Functions named operator.wzzw */
bool4 operator.wzzw(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.z;
    result.w = v.w;
    return result;
}
uint4 operator.wzzw(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.z;
    result.w = v.w;
    return result;
}
int4 operator.wzzw(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.z;
    result.w = v.w;
    return result;
}
float4 operator.wzzw(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.z;
    result.w = v.w;
    return result;
}

/* Functions named operator.wxww */
bool4 operator.wxww(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.w;
    result.w = v.w;
    return result;
}
uint4 operator.wxww(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.w;
    result.w = v.w;
    return result;
}
int4 operator.wxww(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.w;
    result.w = v.w;
    return result;
}
float4 operator.wxww(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.w;
    result.w = v.w;
    return result;
}

/* Functions named max */


uint max(uint x, uint y) {
    return x > y ? x : y;
}
uint2 max(uint2 x, uint2 y) {
    uint2 result;
    result[0] = max(x[0], y[0]);
    result[1] = max(x[1], y[1]);
    return result;
}
uint3 max(uint3 x, uint3 y) {
    uint3 result;
    result[0] = max(x[0], y[0]);
    result[1] = max(x[1], y[1]);
    result[2] = max(x[2], y[2]);
    return result;
}
uint4 max(uint4 x, uint4 y) {
    uint4 result;
    result[0] = max(x[0], y[0]);
    result[1] = max(x[1], y[1]);
    result[2] = max(x[2], y[2]);
    result[3] = max(x[3], y[3]);
    return result;
}



int max(int x, int y) {
    return x > y ? x : y;
}
int2 max(int2 x, int2 y) {
    int2 result;
    result[0] = max(x[0], y[0]);
    result[1] = max(x[1], y[1]);
    return result;
}
int3 max(int3 x, int3 y) {
    int3 result;
    result[0] = max(x[0], y[0]);
    result[1] = max(x[1], y[1]);
    result[2] = max(x[2], y[2]);
    return result;
}
int4 max(int4 x, int4 y) {
    int4 result;
    result[0] = max(x[0], y[0]);
    result[1] = max(x[1], y[1]);
    result[2] = max(x[2], y[2]);
    result[3] = max(x[3], y[3]);
    return result;
}


float max(float x, float y) {
    return x > y ? x : y;
}
float2 max(float2 x, float2 y) {
    float2 result;
    result[0] = max(x[0], y[0]);
    result[1] = max(x[1], y[1]);
    return result;
}
float3 max(float3 x, float3 y) {
    float3 result;
    result[0] = max(x[0], y[0]);
    result[1] = max(x[1], y[1]);
    result[2] = max(x[2], y[2]);
    return result;
}
float4 max(float4 x, float4 y) {
    float4 result;
    result[0] = max(x[0], y[0]);
    result[1] = max(x[1], y[1]);
    result[2] = max(x[2], y[2]);
    result[3] = max(x[3], y[3]);
    return result;
}
float2x2 max(float2x2 x, float2x2 y) {
    float2x2 result;
    result[0][0] = max(x[0][0], y[0][0]);
    result[0][1] = max(x[0][1], y[0][1]);
    result[1][0] = max(x[1][0], y[1][0]);
    result[1][1] = max(x[1][1], y[1][1]);
    return result;
}
float2x3 max(float2x3 x, float2x3 y) {
    float2x3 result;
    result[0][0] = max(x[0][0], y[0][0]);
    result[0][1] = max(x[0][1], y[0][1]);
    result[0][2] = max(x[0][2], y[0][2]);
    result[1][0] = max(x[1][0], y[1][0]);
    result[1][1] = max(x[1][1], y[1][1]);
    result[1][2] = max(x[1][2], y[1][2]);
    return result;
}
float2x4 max(float2x4 x, float2x4 y) {
    float2x4 result;
    result[0][0] = max(x[0][0], y[0][0]);
    result[0][1] = max(x[0][1], y[0][1]);
    result[0][2] = max(x[0][2], y[0][2]);
    result[0][3] = max(x[0][3], y[0][3]);
    result[1][0] = max(x[1][0], y[1][0]);
    result[1][1] = max(x[1][1], y[1][1]);
    result[1][2] = max(x[1][2], y[1][2]);
    result[1][3] = max(x[1][3], y[1][3]);
    return result;
}
float3x2 max(float3x2 x, float3x2 y) {
    float3x2 result;
    result[0][0] = max(x[0][0], y[0][0]);
    result[0][1] = max(x[0][1], y[0][1]);
    result[1][0] = max(x[1][0], y[1][0]);
    result[1][1] = max(x[1][1], y[1][1]);
    result[2][0] = max(x[2][0], y[2][0]);
    result[2][1] = max(x[2][1], y[2][1]);
    return result;
}
float3x3 max(float3x3 x, float3x3 y) {
    float3x3 result;
    result[0][0] = max(x[0][0], y[0][0]);
    result[0][1] = max(x[0][1], y[0][1]);
    result[0][2] = max(x[0][2], y[0][2]);
    result[1][0] = max(x[1][0], y[1][0]);
    result[1][1] = max(x[1][1], y[1][1]);
    result[1][2] = max(x[1][2], y[1][2]);
    result[2][0] = max(x[2][0], y[2][0]);
    result[2][1] = max(x[2][1], y[2][1]);
    result[2][2] = max(x[2][2], y[2][2]);
    return result;
}
float3x4 max(float3x4 x, float3x4 y) {
    float3x4 result;
    result[0][0] = max(x[0][0], y[0][0]);
    result[0][1] = max(x[0][1], y[0][1]);
    result[0][2] = max(x[0][2], y[0][2]);
    result[0][3] = max(x[0][3], y[0][3]);
    result[1][0] = max(x[1][0], y[1][0]);
    result[1][1] = max(x[1][1], y[1][1]);
    result[1][2] = max(x[1][2], y[1][2]);
    result[1][3] = max(x[1][3], y[1][3]);
    result[2][0] = max(x[2][0], y[2][0]);
    result[2][1] = max(x[2][1], y[2][1]);
    result[2][2] = max(x[2][2], y[2][2]);
    result[2][3] = max(x[2][3], y[2][3]);
    return result;
}
float4x2 max(float4x2 x, float4x2 y) {
    float4x2 result;
    result[0][0] = max(x[0][0], y[0][0]);
    result[0][1] = max(x[0][1], y[0][1]);
    result[1][0] = max(x[1][0], y[1][0]);
    result[1][1] = max(x[1][1], y[1][1]);
    result[2][0] = max(x[2][0], y[2][0]);
    result[2][1] = max(x[2][1], y[2][1]);
    result[3][0] = max(x[3][0], y[3][0]);
    result[3][1] = max(x[3][1], y[3][1]);
    return result;
}
float4x3 max(float4x3 x, float4x3 y) {
    float4x3 result;
    result[0][0] = max(x[0][0], y[0][0]);
    result[0][1] = max(x[0][1], y[0][1]);
    result[0][2] = max(x[0][2], y[0][2]);
    result[1][0] = max(x[1][0], y[1][0]);
    result[1][1] = max(x[1][1], y[1][1]);
    result[1][2] = max(x[1][2], y[1][2]);
    result[2][0] = max(x[2][0], y[2][0]);
    result[2][1] = max(x[2][1], y[2][1]);
    result[2][2] = max(x[2][2], y[2][2]);
    result[3][0] = max(x[3][0], y[3][0]);
    result[3][1] = max(x[3][1], y[3][1]);
    result[3][2] = max(x[3][2], y[3][2]);
    return result;
}
float4x4 max(float4x4 x, float4x4 y) {
    float4x4 result;
    result[0][0] = max(x[0][0], y[0][0]);
    result[0][1] = max(x[0][1], y[0][1]);
    result[0][2] = max(x[0][2], y[0][2]);
    result[0][3] = max(x[0][3], y[0][3]);
    result[1][0] = max(x[1][0], y[1][0]);
    result[1][1] = max(x[1][1], y[1][1]);
    result[1][2] = max(x[1][2], y[1][2]);
    result[1][3] = max(x[1][3], y[1][3]);
    result[2][0] = max(x[2][0], y[2][0]);
    result[2][1] = max(x[2][1], y[2][1]);
    result[2][2] = max(x[2][2], y[2][2]);
    result[2][3] = max(x[2][3], y[2][3]);
    result[3][0] = max(x[3][0], y[3][0]);
    result[3][1] = max(x[3][1], y[3][1]);
    result[3][2] = max(x[3][2], y[3][2]);
    result[3][3] = max(x[3][3], y[3][3]);
    return result;
}


/* Functions named operator.wwz */
bool3 operator.wwz(bool4 v) {
    bool3 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.z;
    return result;
}
uint3 operator.wwz(uint4 v) {
    uint3 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.z;
    return result;
}
int3 operator.wwz(int4 v) {
    int3 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.z;
    return result;
}
float3 operator.wwz(float4 v) {
    float3 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.z;
    return result;
}

/* Functions named operator.wyz= */
bool4 operator.wyz=(bool4 v, bool3 c) {
    bool4 result = v;
    result.w = c.x;
    result.y = c.y;
    result.z = c.z;
    return result;
}
uint4 operator.wyz=(uint4 v, uint3 c) {
    uint4 result = v;
    result.w = c.x;
    result.y = c.y;
    result.z = c.z;
    return result;
}
int4 operator.wyz=(int4 v, int3 c) {
    int4 result = v;
    result.w = c.x;
    result.y = c.y;
    result.z = c.z;
    return result;
}
float4 operator.wyz=(float4 v, float3 c) {
    float4 result = v;
    result.w = c.x;
    result.y = c.y;
    result.z = c.z;
    return result;
}

/* Functions named operator.ywyy */
bool4 operator.ywyy(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.y;
    result.w = v.y;
    return result;
}
uint4 operator.ywyy(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.y;
    result.w = v.y;
    return result;
}
int4 operator.ywyy(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.y;
    result.w = v.y;
    return result;
}
float4 operator.ywyy(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.y;
    result.w = v.y;
    return result;
}

/* Functions named asint */
int asint(int x) {
    return x;
}
int2 asint(int2 x) {
    return x;
}
int3 asint(int3 x) {
    return x;
}
int4 asint(int4 x) {
    return x;
}
int asint(uint x) {
    return int(x);
}
int2 asint(uint2 x) {
    int2 result;
    result[0] = asint(x[0]);
    result[1] = asint(x[1]);
    return result;
}
int3 asint(uint3 x) {
    int3 result;
    result[0] = asint(x[0]);
    result[1] = asint(x[1]);
    result[2] = asint(x[2]);
    return result;
}
int4 asint(uint4 x) {
    int4 result;
    result[0] = asint(x[0]);
    result[1] = asint(x[1]);
    result[2] = asint(x[2]);
    result[3] = asint(x[3]);
    return result;
}
native int asint(float);
int2 asint(float2 x) {
    int2 result;
    result[0] = asint(x[0]);
    result[1] = asint(x[1]);
    return result;
}
int3 asint(float3 x) {
    int3 result;
    result[0] = asint(x[0]);
    result[1] = asint(x[1]);
    result[2] = asint(x[2]);
    return result;
}
int4 asint(float4 x) {
    int4 result;
    result[0] = asint(x[0]);
    result[1] = asint(x[1]);
    result[2] = asint(x[2]);
    result[3] = asint(x[3]);
    return result;
}

/* Functions named operator.yzwz */
bool4 operator.yzwz(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.w;
    result.w = v.z;
    return result;
}
uint4 operator.yzwz(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.w;
    result.w = v.z;
    return result;
}
int4 operator.yzwz(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.w;
    result.w = v.z;
    return result;
}
float4 operator.yzwz(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.w;
    result.w = v.z;
    return result;
}

/* Functions named operator.yxzy */
bool4 operator.yxzy(bool3 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    result.w = v.y;
    return result;
}
bool4 operator.yxzy(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    result.w = v.y;
    return result;
}
uint4 operator.yxzy(uint3 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    result.w = v.y;
    return result;
}
uint4 operator.yxzy(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    result.w = v.y;
    return result;
}
int4 operator.yxzy(int3 v) {
    int4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    result.w = v.y;
    return result;
}
int4 operator.yxzy(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    result.w = v.y;
    return result;
}
float4 operator.yxzy(float3 v) {
    float4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    result.w = v.y;
    return result;
}
float4 operator.yxzy(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    result.w = v.y;
    return result;
}

/* Functions named operator.yzxz */
bool4 operator.yzxz(bool3 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    result.w = v.z;
    return result;
}
bool4 operator.yzxz(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    result.w = v.z;
    return result;
}
uint4 operator.yzxz(uint3 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    result.w = v.z;
    return result;
}
uint4 operator.yzxz(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    result.w = v.z;
    return result;
}
int4 operator.yzxz(int3 v) {
    int4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    result.w = v.z;
    return result;
}
int4 operator.yzxz(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    result.w = v.z;
    return result;
}
float4 operator.yzxz(float3 v) {
    float4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    result.w = v.z;
    return result;
}
float4 operator.yzxz(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    result.w = v.z;
    return result;
}

/* Functions named operator.wzzx */
bool4 operator.wzzx(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.z;
    result.w = v.x;
    return result;
}
uint4 operator.wzzx(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.z;
    result.w = v.x;
    return result;
}
int4 operator.wzzx(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.z;
    result.w = v.x;
    return result;
}
float4 operator.wzzx(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.z;
    result.w = v.x;
    return result;
}

/* Functions named operator.yzxw= */
bool4 operator.yzxw=(bool4 v, bool4 c) {
    bool4 result = v;
    result.y = c.x;
    result.z = c.y;
    result.x = c.z;
    result.w = c.w;
    return result;
}
uint4 operator.yzxw=(uint4 v, uint4 c) {
    uint4 result = v;
    result.y = c.x;
    result.z = c.y;
    result.x = c.z;
    result.w = c.w;
    return result;
}
int4 operator.yzxw=(int4 v, int4 c) {
    int4 result = v;
    result.y = c.x;
    result.z = c.y;
    result.x = c.z;
    result.w = c.w;
    return result;
}
float4 operator.yzxw=(float4 v, float4 c) {
    float4 result = v;
    result.y = c.x;
    result.z = c.y;
    result.x = c.z;
    result.w = c.w;
    return result;
}

/* Functions named operator.zyxx */
bool4 operator.zyxx(bool3 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
bool4 operator.zyxx(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
uint4 operator.zyxx(uint3 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
uint4 operator.zyxx(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
int4 operator.zyxx(int3 v) {
    int4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
int4 operator.zyxx(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
float4 operator.zyxx(float3 v) {
    float4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}
float4 operator.zyxx(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.x;
    result.w = v.x;
    return result;
}

/* Functions named operator.xywz */
bool4 operator.xywz(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.w;
    result.w = v.z;
    return result;
}
uint4 operator.xywz(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.w;
    result.w = v.z;
    return result;
}
int4 operator.xywz(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.w;
    result.w = v.z;
    return result;
}
float4 operator.xywz(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.w;
    result.w = v.z;
    return result;
}

/* Functions named operator.wzwz */
bool4 operator.wzwz(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.w;
    result.w = v.z;
    return result;
}
uint4 operator.wzwz(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.w;
    result.w = v.z;
    return result;
}
int4 operator.wzwz(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.w;
    result.w = v.z;
    return result;
}
float4 operator.wzwz(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.w;
    result.w = v.z;
    return result;
}

/* Functions named operator.xxxy */
bool4 operator.xxxy(bool2 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
bool4 operator.xxxy(bool3 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
bool4 operator.xxxy(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
uint4 operator.xxxy(uint2 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
uint4 operator.xxxy(uint3 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
uint4 operator.xxxy(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
int4 operator.xxxy(int2 v) {
    int4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
int4 operator.xxxy(int3 v) {
    int4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
int4 operator.xxxy(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
float4 operator.xxxy(float2 v) {
    float4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
float4 operator.xxxy(float3 v) {
    float4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
float4 operator.xxxy(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}

/* Functions named operator.zwxy= */
bool4 operator.zwxy=(bool4 v, bool4 c) {
    bool4 result = v;
    result.z = c.x;
    result.w = c.y;
    result.x = c.z;
    result.y = c.w;
    return result;
}
uint4 operator.zwxy=(uint4 v, uint4 c) {
    uint4 result = v;
    result.z = c.x;
    result.w = c.y;
    result.x = c.z;
    result.y = c.w;
    return result;
}
int4 operator.zwxy=(int4 v, int4 c) {
    int4 result = v;
    result.z = c.x;
    result.w = c.y;
    result.x = c.z;
    result.y = c.w;
    return result;
}
float4 operator.zwxy=(float4 v, float4 c) {
    float4 result = v;
    result.z = c.x;
    result.w = c.y;
    result.x = c.z;
    result.y = c.w;
    return result;
}

/* Functions named operator.zwzw */
bool4 operator.zwzw(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.z;
    result.w = v.w;
    return result;
}
uint4 operator.zwzw(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.z;
    result.w = v.w;
    return result;
}
int4 operator.zwzw(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.z;
    result.w = v.w;
    return result;
}
float4 operator.zwzw(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.z;
    result.w = v.w;
    return result;
}

/* Functions named operator.wwwy */
bool4 operator.wwwy(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.w;
    result.w = v.y;
    return result;
}
uint4 operator.wwwy(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.w;
    result.w = v.y;
    return result;
}
int4 operator.wwwy(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.w;
    result.w = v.y;
    return result;
}
float4 operator.wwwy(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.w;
    result.w = v.y;
    return result;
}

/* Functions named operator.ywx */
bool3 operator.ywx(bool4 v) {
    bool3 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.x;
    return result;
}
uint3 operator.ywx(uint4 v) {
    uint3 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.x;
    return result;
}
int3 operator.ywx(int4 v) {
    int3 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.x;
    return result;
}
float3 operator.ywx(float4 v) {
    float3 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.x;
    return result;
}

/* Functions named operator.xxzz */
bool4 operator.xxzz(bool3 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    result.w = v.z;
    return result;
}
bool4 operator.xxzz(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    result.w = v.z;
    return result;
}
uint4 operator.xxzz(uint3 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    result.w = v.z;
    return result;
}
uint4 operator.xxzz(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    result.w = v.z;
    return result;
}
int4 operator.xxzz(int3 v) {
    int4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    result.w = v.z;
    return result;
}
int4 operator.xxzz(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    result.w = v.z;
    return result;
}
float4 operator.xxzz(float3 v) {
    float4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    result.w = v.z;
    return result;
}
float4 operator.xxzz(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    result.w = v.z;
    return result;
}

/* Functions named operator.xwyz= */
bool4 operator.xwyz=(bool4 v, bool4 c) {
    bool4 result = v;
    result.x = c.x;
    result.w = c.y;
    result.y = c.z;
    result.z = c.w;
    return result;
}
uint4 operator.xwyz=(uint4 v, uint4 c) {
    uint4 result = v;
    result.x = c.x;
    result.w = c.y;
    result.y = c.z;
    result.z = c.w;
    return result;
}
int4 operator.xwyz=(int4 v, int4 c) {
    int4 result = v;
    result.x = c.x;
    result.w = c.y;
    result.y = c.z;
    result.z = c.w;
    return result;
}
float4 operator.xwyz=(float4 v, float4 c) {
    float4 result = v;
    result.x = c.x;
    result.w = c.y;
    result.y = c.z;
    result.z = c.w;
    return result;
}

/* Functions named operator.yyx */
bool3 operator.yyx(bool2 v) {
    bool3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    return result;
}
bool3 operator.yyx(bool3 v) {
    bool3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    return result;
}
bool3 operator.yyx(bool4 v) {
    bool3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    return result;
}
uint3 operator.yyx(uint2 v) {
    uint3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    return result;
}
uint3 operator.yyx(uint3 v) {
    uint3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    return result;
}
uint3 operator.yyx(uint4 v) {
    uint3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    return result;
}
int3 operator.yyx(int2 v) {
    int3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    return result;
}
int3 operator.yyx(int3 v) {
    int3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    return result;
}
int3 operator.yyx(int4 v) {
    int3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    return result;
}
float3 operator.yyx(float2 v) {
    float3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    return result;
}
float3 operator.yyx(float3 v) {
    float3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    return result;
}
float3 operator.yyx(float4 v) {
    float3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.x;
    return result;
}

/* Functions named operator.zzwy */
bool4 operator.zzwy(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.w;
    result.w = v.y;
    return result;
}
uint4 operator.zzwy(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.w;
    result.w = v.y;
    return result;
}
int4 operator.zzwy(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.w;
    result.w = v.y;
    return result;
}
float4 operator.zzwy(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.w;
    result.w = v.y;
    return result;
}

/* Functions named operator.wx= */
bool4 operator.wx=(bool4 v, bool2 c) {
    bool4 result = v;
    result.w = c.x;
    result.x = c.y;
    return result;
}
uint4 operator.wx=(uint4 v, uint2 c) {
    uint4 result = v;
    result.w = c.x;
    result.x = c.y;
    return result;
}
int4 operator.wx=(int4 v, int2 c) {
    int4 result = v;
    result.w = c.x;
    result.x = c.y;
    return result;
}
float4 operator.wx=(float4 v, float2 c) {
    float4 result = v;
    result.w = c.x;
    result.x = c.y;
    return result;
}

/* Functions named operator.zzw */
bool3 operator.zzw(bool4 v) {
    bool3 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.w;
    return result;
}
uint3 operator.zzw(uint4 v) {
    uint3 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.w;
    return result;
}
int3 operator.zzw(int4 v) {
    int3 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.w;
    return result;
}
float3 operator.zzw(float4 v) {
    float3 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.w;
    return result;
}

/* Functions named operator.xxzy */
bool4 operator.xxzy(bool3 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    result.w = v.y;
    return result;
}
bool4 operator.xxzy(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    result.w = v.y;
    return result;
}
uint4 operator.xxzy(uint3 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    result.w = v.y;
    return result;
}
uint4 operator.xxzy(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    result.w = v.y;
    return result;
}
int4 operator.xxzy(int3 v) {
    int4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    result.w = v.y;
    return result;
}
int4 operator.xxzy(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    result.w = v.y;
    return result;
}
float4 operator.xxzy(float3 v) {
    float4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    result.w = v.y;
    return result;
}
float4 operator.xxzy(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.z;
    result.w = v.y;
    return result;
}

/* Functions named operator.yxz */
bool3 operator.yxz(bool3 v) {
    bool3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    return result;
}
bool3 operator.yxz(bool4 v) {
    bool3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    return result;
}
uint3 operator.yxz(uint3 v) {
    uint3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    return result;
}
uint3 operator.yxz(uint4 v) {
    uint3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    return result;
}
int3 operator.yxz(int3 v) {
    int3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    return result;
}
int3 operator.yxz(int4 v) {
    int3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    return result;
}
float3 operator.yxz(float3 v) {
    float3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    return result;
}
float3 operator.yxz(float4 v) {
    float3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.z;
    return result;
}

/* Functions named operator.yzy */
bool3 operator.yzy(bool3 v) {
    bool3 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    return result;
}
bool3 operator.yzy(bool4 v) {
    bool3 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    return result;
}
uint3 operator.yzy(uint3 v) {
    uint3 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    return result;
}
uint3 operator.yzy(uint4 v) {
    uint3 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    return result;
}
int3 operator.yzy(int3 v) {
    int3 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    return result;
}
int3 operator.yzy(int4 v) {
    int3 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    return result;
}
float3 operator.yzy(float3 v) {
    float3 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    return result;
}
float3 operator.yzy(float4 v) {
    float3 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    return result;
}

/* Functions named operator.y= */
native bool2 operator.y=(bool2, bool);
native bool3 operator.y=(bool3, bool);
native bool4 operator.y=(bool4, bool);
native uint2 operator.y=(uint2, uint);
native uint3 operator.y=(uint3, uint);
native uint4 operator.y=(uint4, uint);
native int2 operator.y=(int2, int);
native int3 operator.y=(int3, int);
native int4 operator.y=(int4, int);
native float2 operator.y=(float2, float);
native float3 operator.y=(float3, float);
native float4 operator.y=(float4, float);

/* Functions named operator.zxzz */
bool4 operator.zxzz(bool3 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    result.w = v.z;
    return result;
}
bool4 operator.zxzz(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    result.w = v.z;
    return result;
}
uint4 operator.zxzz(uint3 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    result.w = v.z;
    return result;
}
uint4 operator.zxzz(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    result.w = v.z;
    return result;
}
int4 operator.zxzz(int3 v) {
    int4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    result.w = v.z;
    return result;
}
int4 operator.zxzz(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    result.w = v.z;
    return result;
}
float4 operator.zxzz(float3 v) {
    float4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    result.w = v.z;
    return result;
}
float4 operator.zxzz(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    result.w = v.z;
    return result;
}

/* Functions named operator.xyzw */
bool4 operator.xyzw(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    result.w = v.w;
    return result;
}
uint4 operator.xyzw(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    result.w = v.w;
    return result;
}
int4 operator.xyzw(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    result.w = v.w;
    return result;
}
float4 operator.xyzw(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    result.w = v.w;
    return result;
}

/* Functions named operator.zwyw */
bool4 operator.zwyw(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.y;
    result.w = v.w;
    return result;
}
uint4 operator.zwyw(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.y;
    result.w = v.w;
    return result;
}
int4 operator.zwyw(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.y;
    result.w = v.w;
    return result;
}
float4 operator.zwyw(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.y;
    result.w = v.w;
    return result;
}

/* Functions named operator.xyw */
bool3 operator.xyw(bool4 v) {
    bool3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.w;
    return result;
}
uint3 operator.xyw(uint4 v) {
    uint3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.w;
    return result;
}
int3 operator.xyw(int4 v) {
    int3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.w;
    return result;
}
float3 operator.xyw(float4 v) {
    float3 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.w;
    return result;
}

/* Functions named operator.zzww */
bool4 operator.zzww(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.w;
    result.w = v.w;
    return result;
}
uint4 operator.zzww(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.w;
    result.w = v.w;
    return result;
}
int4 operator.zzww(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.w;
    result.w = v.w;
    return result;
}
float4 operator.zzww(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.w;
    result.w = v.w;
    return result;
}

/* Functions named operator.zyw */
bool3 operator.zyw(bool4 v) {
    bool3 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.w;
    return result;
}
uint3 operator.zyw(uint4 v) {
    uint3 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.w;
    return result;
}
int3 operator.zyw(int4 v) {
    int3 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.w;
    return result;
}
float3 operator.zyw(float4 v) {
    float3 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.w;
    return result;
}

/* Functions named clamp */


uint clamp(uint x, uint lower, uint upper) {
    return max(min(upper, x), lower);
}
uint2 clamp(uint2 x, uint2 y, uint2 z) {
    uint2 result;
    result[0] = clamp(x[0], y[0], z[0]);
    result[1] = clamp(x[1], y[1], z[1]);
    return result;
}
uint3 clamp(uint3 x, uint3 y, uint3 z) {
    uint3 result;
    result[0] = clamp(x[0], y[0], z[0]);
    result[1] = clamp(x[1], y[1], z[1]);
    result[2] = clamp(x[2], y[2], z[2]);
    return result;
}
uint4 clamp(uint4 x, uint4 y, uint4 z) {
    uint4 result;
    result[0] = clamp(x[0], y[0], z[0]);
    result[1] = clamp(x[1], y[1], z[1]);
    result[2] = clamp(x[2], y[2], z[2]);
    result[3] = clamp(x[3], y[3], z[3]);
    return result;
}



int clamp(int x, int lower, int upper) {
    return max(min(upper, x), lower);
}
int2 clamp(int2 x, int2 y, int2 z) {
    int2 result;
    result[0] = clamp(x[0], y[0], z[0]);
    result[1] = clamp(x[1], y[1], z[1]);
    return result;
}
int3 clamp(int3 x, int3 y, int3 z) {
    int3 result;
    result[0] = clamp(x[0], y[0], z[0]);
    result[1] = clamp(x[1], y[1], z[1]);
    result[2] = clamp(x[2], y[2], z[2]);
    return result;
}
int4 clamp(int4 x, int4 y, int4 z) {
    int4 result;
    result[0] = clamp(x[0], y[0], z[0]);
    result[1] = clamp(x[1], y[1], z[1]);
    result[2] = clamp(x[2], y[2], z[2]);
    result[3] = clamp(x[3], y[3], z[3]);
    return result;
}


float clamp(float x, float lower, float upper) {
    return max(min(upper, x), lower);
}
float2 clamp(float2 x, float2 y, float2 z) {
    float2 result;
    result[0] = clamp(x[0], y[0], z[0]);
    result[1] = clamp(x[1], y[1], z[1]);
    return result;
}
float3 clamp(float3 x, float3 y, float3 z) {
    float3 result;
    result[0] = clamp(x[0], y[0], z[0]);
    result[1] = clamp(x[1], y[1], z[1]);
    result[2] = clamp(x[2], y[2], z[2]);
    return result;
}
float4 clamp(float4 x, float4 y, float4 z) {
    float4 result;
    result[0] = clamp(x[0], y[0], z[0]);
    result[1] = clamp(x[1], y[1], z[1]);
    result[2] = clamp(x[2], y[2], z[2]);
    result[3] = clamp(x[3], y[3], z[3]);
    return result;
}
float2x2 clamp(float2x2 x, float2x2 y, float2x2 z) {
    float2x2 result;
    result[0][0] = clamp(x[0][0], y[0][0], z[0][0]);
    result[0][1] = clamp(x[0][1], y[0][1], z[0][1]);
    result[1][0] = clamp(x[1][0], y[1][0], z[1][0]);
    result[1][1] = clamp(x[1][1], y[1][1], z[1][1]);
    return result;
}
float2x3 clamp(float2x3 x, float2x3 y, float2x3 z) {
    float2x3 result;
    result[0][0] = clamp(x[0][0], y[0][0], z[0][0]);
    result[0][1] = clamp(x[0][1], y[0][1], z[0][1]);
    result[0][2] = clamp(x[0][2], y[0][2], z[0][2]);
    result[1][0] = clamp(x[1][0], y[1][0], z[1][0]);
    result[1][1] = clamp(x[1][1], y[1][1], z[1][1]);
    result[1][2] = clamp(x[1][2], y[1][2], z[1][2]);
    return result;
}
float2x4 clamp(float2x4 x, float2x4 y, float2x4 z) {
    float2x4 result;
    result[0][0] = clamp(x[0][0], y[0][0], z[0][0]);
    result[0][1] = clamp(x[0][1], y[0][1], z[0][1]);
    result[0][2] = clamp(x[0][2], y[0][2], z[0][2]);
    result[0][3] = clamp(x[0][3], y[0][3], z[0][3]);
    result[1][0] = clamp(x[1][0], y[1][0], z[1][0]);
    result[1][1] = clamp(x[1][1], y[1][1], z[1][1]);
    result[1][2] = clamp(x[1][2], y[1][2], z[1][2]);
    result[1][3] = clamp(x[1][3], y[1][3], z[1][3]);
    return result;
}
float3x2 clamp(float3x2 x, float3x2 y, float3x2 z) {
    float3x2 result;
    result[0][0] = clamp(x[0][0], y[0][0], z[0][0]);
    result[0][1] = clamp(x[0][1], y[0][1], z[0][1]);
    result[1][0] = clamp(x[1][0], y[1][0], z[1][0]);
    result[1][1] = clamp(x[1][1], y[1][1], z[1][1]);
    result[2][0] = clamp(x[2][0], y[2][0], z[2][0]);
    result[2][1] = clamp(x[2][1], y[2][1], z[2][1]);
    return result;
}
float3x3 clamp(float3x3 x, float3x3 y, float3x3 z) {
    float3x3 result;
    result[0][0] = clamp(x[0][0], y[0][0], z[0][0]);
    result[0][1] = clamp(x[0][1], y[0][1], z[0][1]);
    result[0][2] = clamp(x[0][2], y[0][2], z[0][2]);
    result[1][0] = clamp(x[1][0], y[1][0], z[1][0]);
    result[1][1] = clamp(x[1][1], y[1][1], z[1][1]);
    result[1][2] = clamp(x[1][2], y[1][2], z[1][2]);
    result[2][0] = clamp(x[2][0], y[2][0], z[2][0]);
    result[2][1] = clamp(x[2][1], y[2][1], z[2][1]);
    result[2][2] = clamp(x[2][2], y[2][2], z[2][2]);
    return result;
}
float3x4 clamp(float3x4 x, float3x4 y, float3x4 z) {
    float3x4 result;
    result[0][0] = clamp(x[0][0], y[0][0], z[0][0]);
    result[0][1] = clamp(x[0][1], y[0][1], z[0][1]);
    result[0][2] = clamp(x[0][2], y[0][2], z[0][2]);
    result[0][3] = clamp(x[0][3], y[0][3], z[0][3]);
    result[1][0] = clamp(x[1][0], y[1][0], z[1][0]);
    result[1][1] = clamp(x[1][1], y[1][1], z[1][1]);
    result[1][2] = clamp(x[1][2], y[1][2], z[1][2]);
    result[1][3] = clamp(x[1][3], y[1][3], z[1][3]);
    result[2][0] = clamp(x[2][0], y[2][0], z[2][0]);
    result[2][1] = clamp(x[2][1], y[2][1], z[2][1]);
    result[2][2] = clamp(x[2][2], y[2][2], z[2][2]);
    result[2][3] = clamp(x[2][3], y[2][3], z[2][3]);
    return result;
}
float4x2 clamp(float4x2 x, float4x2 y, float4x2 z) {
    float4x2 result;
    result[0][0] = clamp(x[0][0], y[0][0], z[0][0]);
    result[0][1] = clamp(x[0][1], y[0][1], z[0][1]);
    result[1][0] = clamp(x[1][0], y[1][0], z[1][0]);
    result[1][1] = clamp(x[1][1], y[1][1], z[1][1]);
    result[2][0] = clamp(x[2][0], y[2][0], z[2][0]);
    result[2][1] = clamp(x[2][1], y[2][1], z[2][1]);
    result[3][0] = clamp(x[3][0], y[3][0], z[3][0]);
    result[3][1] = clamp(x[3][1], y[3][1], z[3][1]);
    return result;
}
float4x3 clamp(float4x3 x, float4x3 y, float4x3 z) {
    float4x3 result;
    result[0][0] = clamp(x[0][0], y[0][0], z[0][0]);
    result[0][1] = clamp(x[0][1], y[0][1], z[0][1]);
    result[0][2] = clamp(x[0][2], y[0][2], z[0][2]);
    result[1][0] = clamp(x[1][0], y[1][0], z[1][0]);
    result[1][1] = clamp(x[1][1], y[1][1], z[1][1]);
    result[1][2] = clamp(x[1][2], y[1][2], z[1][2]);
    result[2][0] = clamp(x[2][0], y[2][0], z[2][0]);
    result[2][1] = clamp(x[2][1], y[2][1], z[2][1]);
    result[2][2] = clamp(x[2][2], y[2][2], z[2][2]);
    result[3][0] = clamp(x[3][0], y[3][0], z[3][0]);
    result[3][1] = clamp(x[3][1], y[3][1], z[3][1]);
    result[3][2] = clamp(x[3][2], y[3][2], z[3][2]);
    return result;
}
float4x4 clamp(float4x4 x, float4x4 y, float4x4 z) {
    float4x4 result;
    result[0][0] = clamp(x[0][0], y[0][0], z[0][0]);
    result[0][1] = clamp(x[0][1], y[0][1], z[0][1]);
    result[0][2] = clamp(x[0][2], y[0][2], z[0][2]);
    result[0][3] = clamp(x[0][3], y[0][3], z[0][3]);
    result[1][0] = clamp(x[1][0], y[1][0], z[1][0]);
    result[1][1] = clamp(x[1][1], y[1][1], z[1][1]);
    result[1][2] = clamp(x[1][2], y[1][2], z[1][2]);
    result[1][3] = clamp(x[1][3], y[1][3], z[1][3]);
    result[2][0] = clamp(x[2][0], y[2][0], z[2][0]);
    result[2][1] = clamp(x[2][1], y[2][1], z[2][1]);
    result[2][2] = clamp(x[2][2], y[2][2], z[2][2]);
    result[2][3] = clamp(x[2][3], y[2][3], z[2][3]);
    result[3][0] = clamp(x[3][0], y[3][0], z[3][0]);
    result[3][1] = clamp(x[3][1], y[3][1], z[3][1]);
    result[3][2] = clamp(x[3][2], y[3][2], z[3][2]);
    result[3][3] = clamp(x[3][3], y[3][3], z[3][3]);
    return result;
}


/* Functions named operator.wxxy */
bool4 operator.wxxy(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
uint4 operator.wxxy(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
int4 operator.wxxy(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
float4 operator.wxxy(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}

/* Functions named operator.yxwy */
bool4 operator.yxwy(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.w;
    result.w = v.y;
    return result;
}
uint4 operator.yxwy(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.w;
    result.w = v.y;
    return result;
}
int4 operator.yxwy(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.w;
    result.w = v.y;
    return result;
}
float4 operator.yxwy(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.w;
    result.w = v.y;
    return result;
}

/* Functions named operator.xwy */
bool3 operator.xwy(bool4 v) {
    bool3 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.y;
    return result;
}
uint3 operator.xwy(uint4 v) {
    uint3 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.y;
    return result;
}
int3 operator.xwy(int4 v) {
    int3 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.y;
    return result;
}
float3 operator.xwy(float4 v) {
    float3 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.y;
    return result;
}

/* Functions named operator< */
native bool operator<(int, int);
native bool operator<(uint, uint);
native bool operator<(float, float);

/* Functions named operator.wyw */
bool3 operator.wyw(bool4 v) {
    bool3 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.w;
    return result;
}
uint3 operator.wyw(uint4 v) {
    uint3 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.w;
    return result;
}
int3 operator.wyw(int4 v) {
    int3 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.w;
    return result;
}
float3 operator.wyw(float4 v) {
    float3 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.w;
    return result;
}

/* Functions named operator.zzyw */
bool4 operator.zzyw(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    result.w = v.w;
    return result;
}
uint4 operator.zzyw(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    result.w = v.w;
    return result;
}
int4 operator.zzyw(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    result.w = v.w;
    return result;
}
float4 operator.zzyw(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    result.w = v.w;
    return result;
}

/* Functions named operator.zxz */
bool3 operator.zxz(bool3 v) {
    bool3 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    return result;
}
bool3 operator.zxz(bool4 v) {
    bool3 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    return result;
}
uint3 operator.zxz(uint3 v) {
    uint3 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    return result;
}
uint3 operator.zxz(uint4 v) {
    uint3 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    return result;
}
int3 operator.zxz(int3 v) {
    int3 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    return result;
}
int3 operator.zxz(int4 v) {
    int3 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    return result;
}
float3 operator.zxz(float3 v) {
    float3 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    return result;
}
float3 operator.zxz(float4 v) {
    float3 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.z;
    return result;
}

/* Functions named operator.ywzx */
bool4 operator.ywzx(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.z;
    result.w = v.x;
    return result;
}
uint4 operator.ywzx(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.z;
    result.w = v.x;
    return result;
}
int4 operator.ywzx(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.z;
    result.w = v.x;
    return result;
}
float4 operator.ywzx(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.z;
    result.w = v.x;
    return result;
}

/* Functions named operator.zxxy */
bool4 operator.zxxy(bool3 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
bool4 operator.zxxy(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
uint4 operator.zxxy(uint3 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
uint4 operator.zxxy(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
int4 operator.zxxy(int3 v) {
    int4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
int4 operator.zxxy(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
float4 operator.zxxy(float3 v) {
    float4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}
float4 operator.zxxy(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    result.w = v.y;
    return result;
}

/* Functions named isnan */
native bool isnan(float);

bool2 isnan(float2 x) {
    bool2 result;
    result[0] = isnan(x[0]);
    result[1] = isnan(x[1]);
    return result;
}
bool3 isnan(float3 x) {
    bool3 result;
    result[0] = isnan(x[0]);
    result[1] = isnan(x[1]);
    result[2] = isnan(x[2]);
    return result;
}
bool4 isnan(float4 x) {
    bool4 result;
    result[0] = isnan(x[0]);
    result[1] = isnan(x[1]);
    result[2] = isnan(x[2]);
    result[3] = isnan(x[3]);
    return result;
}


/* Functions named operator.xxww */
bool4 operator.xxww(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.w;
    result.w = v.w;
    return result;
}
uint4 operator.xxww(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.w;
    result.w = v.w;
    return result;
}
int4 operator.xxww(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.w;
    result.w = v.w;
    return result;
}
float4 operator.xxww(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.w;
    result.w = v.w;
    return result;
}

/* Functions named operator.xwy= */
bool4 operator.xwy=(bool4 v, bool3 c) {
    bool4 result = v;
    result.x = c.x;
    result.w = c.y;
    result.y = c.z;
    return result;
}
uint4 operator.xwy=(uint4 v, uint3 c) {
    uint4 result = v;
    result.x = c.x;
    result.w = c.y;
    result.y = c.z;
    return result;
}
int4 operator.xwy=(int4 v, int3 c) {
    int4 result = v;
    result.x = c.x;
    result.w = c.y;
    result.y = c.z;
    return result;
}
float4 operator.xwy=(float4 v, float3 c) {
    float4 result = v;
    result.x = c.x;
    result.w = c.y;
    result.y = c.z;
    return result;
}

/* Functions named AllMemoryBarrierWithGroupSync */
native void AllMemoryBarrierWithGroupSync();

/* Functions named operator.yx= */
bool2 operator.yx=(bool2 v, bool2 c) {
    bool2 result = v;
    result.y = c.x;
    result.x = c.y;
    return result;
}
bool3 operator.yx=(bool3 v, bool2 c) {
    bool3 result = v;
    result.y = c.x;
    result.x = c.y;
    return result;
}
bool4 operator.yx=(bool4 v, bool2 c) {
    bool4 result = v;
    result.y = c.x;
    result.x = c.y;
    return result;
}
uint2 operator.yx=(uint2 v, uint2 c) {
    uint2 result = v;
    result.y = c.x;
    result.x = c.y;
    return result;
}
uint3 operator.yx=(uint3 v, uint2 c) {
    uint3 result = v;
    result.y = c.x;
    result.x = c.y;
    return result;
}
uint4 operator.yx=(uint4 v, uint2 c) {
    uint4 result = v;
    result.y = c.x;
    result.x = c.y;
    return result;
}
int2 operator.yx=(int2 v, int2 c) {
    int2 result = v;
    result.y = c.x;
    result.x = c.y;
    return result;
}
int3 operator.yx=(int3 v, int2 c) {
    int3 result = v;
    result.y = c.x;
    result.x = c.y;
    return result;
}
int4 operator.yx=(int4 v, int2 c) {
    int4 result = v;
    result.y = c.x;
    result.x = c.y;
    return result;
}
float2 operator.yx=(float2 v, float2 c) {
    float2 result = v;
    result.y = c.x;
    result.x = c.y;
    return result;
}
float3 operator.yx=(float3 v, float2 c) {
    float3 result = v;
    result.y = c.x;
    result.x = c.y;
    return result;
}
float4 operator.yx=(float4 v, float2 c) {
    float4 result = v;
    result.y = c.x;
    result.x = c.y;
    return result;
}

/* Functions named operator^ */
bool operator^(bool a, bool b) {
    if (a)
        return !b;
    return b;
}
native int operator^(int, int);
native uint operator^(uint, uint);

/* Functions named operator.yzyw */
bool4 operator.yzyw(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    result.w = v.w;
    return result;
}
uint4 operator.yzyw(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    result.w = v.w;
    return result;
}
int4 operator.yzyw(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    result.w = v.w;
    return result;
}
float4 operator.yzyw(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    result.w = v.w;
    return result;
}

/* Functions named operator.xwwz */
bool4 operator.xwwz(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.w;
    result.w = v.z;
    return result;
}
uint4 operator.xwwz(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.w;
    result.w = v.z;
    return result;
}
int4 operator.xwwz(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.w;
    result.w = v.z;
    return result;
}
float4 operator.xwwz(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.w;
    result.w = v.z;
    return result;
}

/* Functions named isinf */
native bool isinf(float);
bool2 isinf(float2 x) {
    bool2 result;
    result[0] = isinf(x[0]);
    result[1] = isinf(x[1]);
    return result;
}
bool3 isinf(float3 x) {
    bool3 result;
    result[0] = isinf(x[0]);
    result[1] = isinf(x[1]);
    result[2] = isinf(x[2]);
    return result;
}
bool4 isinf(float4 x) {
    bool4 result;
    result[0] = isinf(x[0]);
    result[1] = isinf(x[1]);
    result[2] = isinf(x[2]);
    result[3] = isinf(x[3]);
    return result;
}

/* Functions named operator| */
bool operator|(bool a, bool b) {
    return a || b;
}
native int operator|(int, int);
native uint operator|(uint, uint);

/* Functions named operator.zwy */
bool3 operator.zwy(bool4 v) {
    bool3 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.y;
    return result;
}
uint3 operator.zwy(uint4 v) {
    uint3 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.y;
    return result;
}
int3 operator.zwy(int4 v) {
    int3 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.y;
    return result;
}
float3 operator.zwy(float4 v) {
    float3 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.y;
    return result;
}

/* Functions named operator.yzxx */
bool4 operator.yzxx(bool3 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    result.w = v.x;
    return result;
}
bool4 operator.yzxx(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    result.w = v.x;
    return result;
}
uint4 operator.yzxx(uint3 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    result.w = v.x;
    return result;
}
uint4 operator.yzxx(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    result.w = v.x;
    return result;
}
int4 operator.yzxx(int3 v) {
    int4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    result.w = v.x;
    return result;
}
int4 operator.yzxx(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    result.w = v.x;
    return result;
}
float4 operator.yzxx(float3 v) {
    float4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    result.w = v.x;
    return result;
}
float4 operator.yzxx(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.x;
    result.w = v.x;
    return result;
}

/* Functions named operator.zyyx */
bool4 operator.zyyx(bool3 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
bool4 operator.zyyx(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
uint4 operator.zyyx(uint3 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
uint4 operator.zyyx(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
int4 operator.zyyx(int3 v) {
    int4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
int4 operator.zyyx(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
float4 operator.zyyx(float3 v) {
    float4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
float4 operator.zyyx(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}

/* Functions named operator.zywy */
bool4 operator.zywy(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.w;
    result.w = v.y;
    return result;
}
uint4 operator.zywy(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.w;
    result.w = v.y;
    return result;
}
int4 operator.zywy(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.w;
    result.w = v.y;
    return result;
}
float4 operator.zywy(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.w;
    result.w = v.y;
    return result;
}

/* Functions named operator.ywyx */
bool4 operator.ywyx(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.y;
    result.w = v.x;
    return result;
}
uint4 operator.ywyx(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.y;
    result.w = v.x;
    return result;
}
int4 operator.ywyx(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.y;
    result.w = v.x;
    return result;
}
float4 operator.ywyx(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.y;
    result.w = v.x;
    return result;
}

/* Functions named operator.yxxx */
bool4 operator.yxxx(bool2 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
bool4 operator.yxxx(bool3 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
bool4 operator.yxxx(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
uint4 operator.yxxx(uint2 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
uint4 operator.yxxx(uint3 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
uint4 operator.yxxx(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
int4 operator.yxxx(int2 v) {
    int4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
int4 operator.yxxx(int3 v) {
    int4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
int4 operator.yxxx(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
float4 operator.yxxx(float2 v) {
    float4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
float4 operator.yxxx(float3 v) {
    float4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
float4 operator.yxxx(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}

/* Functions named operator.xyyz */
bool4 operator.xyyz(bool3 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.z;
    return result;
}
bool4 operator.xyyz(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.z;
    return result;
}
uint4 operator.xyyz(uint3 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.z;
    return result;
}
uint4 operator.xyyz(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.z;
    return result;
}
int4 operator.xyyz(int3 v) {
    int4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.z;
    return result;
}
int4 operator.xyyz(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.z;
    return result;
}
float4 operator.xyyz(float3 v) {
    float4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.z;
    return result;
}
float4 operator.xyyz(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.z;
    return result;
}

/* Functions named operator.xxyw */
bool4 operator.xxyw(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.w;
    return result;
}
uint4 operator.xxyw(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.w;
    return result;
}
int4 operator.xxyw(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.w;
    return result;
}
float4 operator.xxyw(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.w;
    return result;
}

/* Functions named operator.wzxx */
bool4 operator.wzxx(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.x;
    result.w = v.x;
    return result;
}
uint4 operator.wzxx(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.x;
    result.w = v.x;
    return result;
}
int4 operator.wzxx(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.x;
    result.w = v.x;
    return result;
}
float4 operator.wzxx(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.x;
    result.w = v.x;
    return result;
}

/* Functions named operator.zxwz */
bool4 operator.zxwz(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.w;
    result.w = v.z;
    return result;
}
uint4 operator.zxwz(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.w;
    result.w = v.z;
    return result;
}
int4 operator.zxwz(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.w;
    result.w = v.z;
    return result;
}
float4 operator.zxwz(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.w;
    result.w = v.z;
    return result;
}

/* Functions named operator.wxyz */
bool4 operator.wxyz(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.y;
    result.w = v.z;
    return result;
}
uint4 operator.wxyz(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.y;
    result.w = v.z;
    return result;
}
int4 operator.wxyz(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.y;
    result.w = v.z;
    return result;
}
float4 operator.wxyz(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.y;
    result.w = v.z;
    return result;
}

/* Functions named operator.xwyy */
bool4 operator.xwyy(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.y;
    result.w = v.y;
    return result;
}
uint4 operator.xwyy(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.y;
    result.w = v.y;
    return result;
}
int4 operator.xwyy(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.y;
    result.w = v.y;
    return result;
}
float4 operator.xwyy(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.y;
    result.w = v.y;
    return result;
}

/* Functions named operator.wzww */
bool4 operator.wzww(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.w;
    result.w = v.w;
    return result;
}
uint4 operator.wzww(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.w;
    result.w = v.w;
    return result;
}
int4 operator.wzww(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.w;
    result.w = v.w;
    return result;
}
float4 operator.wzww(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.w;
    result.w = v.w;
    return result;
}

/* Functions named degrees */
float degrees(float x) {
    return x * 180 / 3.14159;
}
float2 degrees(float2 x) {
    float2 result;
    result[0] = degrees(x[0]);
    result[1] = degrees(x[1]);
    return result;
}
float3 degrees(float3 x) {
    float3 result;
    result[0] = degrees(x[0]);
    result[1] = degrees(x[1]);
    result[2] = degrees(x[2]);
    return result;
}
float4 degrees(float4 x) {
    float4 result;
    result[0] = degrees(x[0]);
    result[1] = degrees(x[1]);
    result[2] = degrees(x[2]);
    result[3] = degrees(x[3]);
    return result;
}
float2x2 degrees(float2x2 x) {
    float2x2 result;
    result[0][0] = degrees(x[0][0]);
    result[0][1] = degrees(x[0][1]);
    result[1][0] = degrees(x[1][0]);
    result[1][1] = degrees(x[1][1]);
    return result;
}
float2x3 degrees(float2x3 x) {
    float2x3 result;
    result[0][0] = degrees(x[0][0]);
    result[0][1] = degrees(x[0][1]);
    result[0][2] = degrees(x[0][2]);
    result[1][0] = degrees(x[1][0]);
    result[1][1] = degrees(x[1][1]);
    result[1][2] = degrees(x[1][2]);
    return result;
}
float2x4 degrees(float2x4 x) {
    float2x4 result;
    result[0][0] = degrees(x[0][0]);
    result[0][1] = degrees(x[0][1]);
    result[0][2] = degrees(x[0][2]);
    result[0][3] = degrees(x[0][3]);
    result[1][0] = degrees(x[1][0]);
    result[1][1] = degrees(x[1][1]);
    result[1][2] = degrees(x[1][2]);
    result[1][3] = degrees(x[1][3]);
    return result;
}
float3x2 degrees(float3x2 x) {
    float3x2 result;
    result[0][0] = degrees(x[0][0]);
    result[0][1] = degrees(x[0][1]);
    result[1][0] = degrees(x[1][0]);
    result[1][1] = degrees(x[1][1]);
    result[2][0] = degrees(x[2][0]);
    result[2][1] = degrees(x[2][1]);
    return result;
}
float3x3 degrees(float3x3 x) {
    float3x3 result;
    result[0][0] = degrees(x[0][0]);
    result[0][1] = degrees(x[0][1]);
    result[0][2] = degrees(x[0][2]);
    result[1][0] = degrees(x[1][0]);
    result[1][1] = degrees(x[1][1]);
    result[1][2] = degrees(x[1][2]);
    result[2][0] = degrees(x[2][0]);
    result[2][1] = degrees(x[2][1]);
    result[2][2] = degrees(x[2][2]);
    return result;
}
float3x4 degrees(float3x4 x) {
    float3x4 result;
    result[0][0] = degrees(x[0][0]);
    result[0][1] = degrees(x[0][1]);
    result[0][2] = degrees(x[0][2]);
    result[0][3] = degrees(x[0][3]);
    result[1][0] = degrees(x[1][0]);
    result[1][1] = degrees(x[1][1]);
    result[1][2] = degrees(x[1][2]);
    result[1][3] = degrees(x[1][3]);
    result[2][0] = degrees(x[2][0]);
    result[2][1] = degrees(x[2][1]);
    result[2][2] = degrees(x[2][2]);
    result[2][3] = degrees(x[2][3]);
    return result;
}
float4x2 degrees(float4x2 x) {
    float4x2 result;
    result[0][0] = degrees(x[0][0]);
    result[0][1] = degrees(x[0][1]);
    result[1][0] = degrees(x[1][0]);
    result[1][1] = degrees(x[1][1]);
    result[2][0] = degrees(x[2][0]);
    result[2][1] = degrees(x[2][1]);
    result[3][0] = degrees(x[3][0]);
    result[3][1] = degrees(x[3][1]);
    return result;
}
float4x3 degrees(float4x3 x) {
    float4x3 result;
    result[0][0] = degrees(x[0][0]);
    result[0][1] = degrees(x[0][1]);
    result[0][2] = degrees(x[0][2]);
    result[1][0] = degrees(x[1][0]);
    result[1][1] = degrees(x[1][1]);
    result[1][2] = degrees(x[1][2]);
    result[2][0] = degrees(x[2][0]);
    result[2][1] = degrees(x[2][1]);
    result[2][2] = degrees(x[2][2]);
    result[3][0] = degrees(x[3][0]);
    result[3][1] = degrees(x[3][1]);
    result[3][2] = degrees(x[3][2]);
    return result;
}
float4x4 degrees(float4x4 x) {
    float4x4 result;
    result[0][0] = degrees(x[0][0]);
    result[0][1] = degrees(x[0][1]);
    result[0][2] = degrees(x[0][2]);
    result[0][3] = degrees(x[0][3]);
    result[1][0] = degrees(x[1][0]);
    result[1][1] = degrees(x[1][1]);
    result[1][2] = degrees(x[1][2]);
    result[1][3] = degrees(x[1][3]);
    result[2][0] = degrees(x[2][0]);
    result[2][1] = degrees(x[2][1]);
    result[2][2] = degrees(x[2][2]);
    result[2][3] = degrees(x[2][3]);
    result[3][0] = degrees(x[3][0]);
    result[3][1] = degrees(x[3][1]);
    result[3][2] = degrees(x[3][2]);
    result[3][3] = degrees(x[3][3]);
    return result;
}

/* Functions named operator.yyy */
bool3 operator.yyy(bool2 v) {
    bool3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    return result;
}
bool3 operator.yyy(bool3 v) {
    bool3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    return result;
}
bool3 operator.yyy(bool4 v) {
    bool3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    return result;
}
uint3 operator.yyy(uint2 v) {
    uint3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    return result;
}
uint3 operator.yyy(uint3 v) {
    uint3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    return result;
}
uint3 operator.yyy(uint4 v) {
    uint3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    return result;
}
int3 operator.yyy(int2 v) {
    int3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    return result;
}
int3 operator.yyy(int3 v) {
    int3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    return result;
}
int3 operator.yyy(int4 v) {
    int3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    return result;
}
float3 operator.yyy(float2 v) {
    float3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    return result;
}
float3 operator.yyy(float3 v) {
    float3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    return result;
}
float3 operator.yyy(float4 v) {
    float3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    return result;
}

/* Functions named operator.wzzy */
bool4 operator.wzzy(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.z;
    result.w = v.y;
    return result;
}
uint4 operator.wzzy(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.z;
    result.w = v.y;
    return result;
}
int4 operator.wzzy(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.z;
    result.w = v.y;
    return result;
}
float4 operator.wzzy(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.z;
    result.w = v.y;
    return result;
}

/* Functions named operator.zzwz */
bool4 operator.zzwz(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.w;
    result.w = v.z;
    return result;
}
uint4 operator.zzwz(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.w;
    result.w = v.z;
    return result;
}
int4 operator.zzwz(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.w;
    result.w = v.z;
    return result;
}
float4 operator.zzwz(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.w;
    result.w = v.z;
    return result;
}

/* Functions named operator.zzyy */
bool4 operator.zzyy(bool3 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    result.w = v.y;
    return result;
}
bool4 operator.zzyy(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    result.w = v.y;
    return result;
}
uint4 operator.zzyy(uint3 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    result.w = v.y;
    return result;
}
uint4 operator.zzyy(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    result.w = v.y;
    return result;
}
int4 operator.zzyy(int3 v) {
    int4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    result.w = v.y;
    return result;
}
int4 operator.zzyy(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    result.w = v.y;
    return result;
}
float4 operator.zzyy(float3 v) {
    float4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    result.w = v.y;
    return result;
}
float4 operator.zzyy(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    result.w = v.y;
    return result;
}

/* Functions named Sample */
native uint Sample(Texture1D<uint>, sampler, float location);
native uint Sample(Texture1DArray<uint>, sampler, float2 location);
native uint Sample(Texture2D<uint>, sampler, float2 location);
native uint Sample(Texture2D<uint>, sampler, float2 location, int2 offset);
native uint Sample(Texture2DArray<uint>, sampler, float3 location);
native uint Sample(Texture2DArray<uint>, sampler, float3 location, int2 offset);
native uint Sample(Texture3D<uint>, sampler, float3 location);
native uint Sample(Texture3D<uint>, sampler, float3 location, int3 offset);
native uint Sample(TextureCube<uint>, sampler, float3 location);
native uint2 Sample(Texture1D<uint2>, sampler, float location);
native uint2 Sample(Texture1DArray<uint2>, sampler, float2 location);
native uint2 Sample(Texture2D<uint2>, sampler, float2 location);
native uint2 Sample(Texture2D<uint2>, sampler, float2 location, int2 offset);
native uint2 Sample(Texture2DArray<uint2>, sampler, float3 location);
native uint2 Sample(Texture2DArray<uint2>, sampler, float3 location, int2 offset);
native uint2 Sample(Texture3D<uint2>, sampler, float3 location);
native uint2 Sample(Texture3D<uint2>, sampler, float3 location, int3 offset);
native uint2 Sample(TextureCube<uint2>, sampler, float3 location);
native uint3 Sample(Texture1D<uint3>, sampler, float location);
native uint3 Sample(Texture1DArray<uint3>, sampler, float2 location);
native uint3 Sample(Texture2D<uint3>, sampler, float2 location);
native uint3 Sample(Texture2D<uint3>, sampler, float2 location, int2 offset);
native uint3 Sample(Texture2DArray<uint3>, sampler, float3 location);
native uint3 Sample(Texture2DArray<uint3>, sampler, float3 location, int2 offset);
native uint3 Sample(Texture3D<uint3>, sampler, float3 location);
native uint3 Sample(Texture3D<uint3>, sampler, float3 location, int3 offset);
native uint3 Sample(TextureCube<uint3>, sampler, float3 location);
native uint4 Sample(Texture1D<uint4>, sampler, float location);
native uint4 Sample(Texture1DArray<uint4>, sampler, float2 location);
native uint4 Sample(Texture2D<uint4>, sampler, float2 location);
native uint4 Sample(Texture2D<uint4>, sampler, float2 location, int2 offset);
native uint4 Sample(Texture2DArray<uint4>, sampler, float3 location);
native uint4 Sample(Texture2DArray<uint4>, sampler, float3 location, int2 offset);
native uint4 Sample(Texture3D<uint4>, sampler, float3 location);
native uint4 Sample(Texture3D<uint4>, sampler, float3 location, int3 offset);
native uint4 Sample(TextureCube<uint4>, sampler, float3 location);
native int Sample(Texture1D<int>, sampler, float location);
native int Sample(Texture1DArray<int>, sampler, float2 location);
native int Sample(Texture2D<int>, sampler, float2 location);
native int Sample(Texture2D<int>, sampler, float2 location, int2 offset);
native int Sample(Texture2DArray<int>, sampler, float3 location);
native int Sample(Texture2DArray<int>, sampler, float3 location, int2 offset);
native int Sample(Texture3D<int>, sampler, float3 location);
native int Sample(Texture3D<int>, sampler, float3 location, int3 offset);
native int Sample(TextureCube<int>, sampler, float3 location);
native int2 Sample(Texture1D<int2>, sampler, float location);
native int2 Sample(Texture1DArray<int2>, sampler, float2 location);
native int2 Sample(Texture2D<int2>, sampler, float2 location);
native int2 Sample(Texture2D<int2>, sampler, float2 location, int2 offset);
native int2 Sample(Texture2DArray<int2>, sampler, float3 location);
native int2 Sample(Texture2DArray<int2>, sampler, float3 location, int2 offset);
native int2 Sample(Texture3D<int2>, sampler, float3 location);
native int2 Sample(Texture3D<int2>, sampler, float3 location, int3 offset);
native int2 Sample(TextureCube<int2>, sampler, float3 location);
native int3 Sample(Texture1D<int3>, sampler, float location);
native int3 Sample(Texture1DArray<int3>, sampler, float2 location);
native int3 Sample(Texture2D<int3>, sampler, float2 location);
native int3 Sample(Texture2D<int3>, sampler, float2 location, int2 offset);
native int3 Sample(Texture2DArray<int3>, sampler, float3 location);
native int3 Sample(Texture2DArray<int3>, sampler, float3 location, int2 offset);
native int3 Sample(Texture3D<int3>, sampler, float3 location);
native int3 Sample(Texture3D<int3>, sampler, float3 location, int3 offset);
native int3 Sample(TextureCube<int3>, sampler, float3 location);
native int4 Sample(Texture1D<int4>, sampler, float location);
native int4 Sample(Texture1DArray<int4>, sampler, float2 location);
native int4 Sample(Texture2D<int4>, sampler, float2 location);
native int4 Sample(Texture2D<int4>, sampler, float2 location, int2 offset);
native int4 Sample(Texture2DArray<int4>, sampler, float3 location);
native int4 Sample(Texture2DArray<int4>, sampler, float3 location, int2 offset);
native int4 Sample(Texture3D<int4>, sampler, float3 location);
native int4 Sample(Texture3D<int4>, sampler, float3 location, int3 offset);
native int4 Sample(TextureCube<int4>, sampler, float3 location);
native float Sample(Texture1D<float>, sampler, float location);
native float Sample(Texture1DArray<float>, sampler, float2 location);
native float Sample(Texture2D<float>, sampler, float2 location);
native float Sample(Texture2D<float>, sampler, float2 location, int2 offset);
native float Sample(Texture2DArray<float>, sampler, float3 location);
native float Sample(Texture2DArray<float>, sampler, float3 location, int2 offset);
native float Sample(Texture3D<float>, sampler, float3 location);
native float Sample(Texture3D<float>, sampler, float3 location, int3 offset);
native float Sample(TextureCube<float>, sampler, float3 location);
native float2 Sample(Texture1D<float2>, sampler, float location);
native float2 Sample(Texture1DArray<float2>, sampler, float2 location);
native float2 Sample(Texture2D<float2>, sampler, float2 location);
native float2 Sample(Texture2D<float2>, sampler, float2 location, int2 offset);
native float2 Sample(Texture2DArray<float2>, sampler, float3 location);
native float2 Sample(Texture2DArray<float2>, sampler, float3 location, int2 offset);
native float2 Sample(Texture3D<float2>, sampler, float3 location);
native float2 Sample(Texture3D<float2>, sampler, float3 location, int3 offset);
native float2 Sample(TextureCube<float2>, sampler, float3 location);
native float3 Sample(Texture1D<float3>, sampler, float location);
native float3 Sample(Texture1DArray<float3>, sampler, float2 location);
native float3 Sample(Texture2D<float3>, sampler, float2 location);
native float3 Sample(Texture2D<float3>, sampler, float2 location, int2 offset);
native float3 Sample(Texture2DArray<float3>, sampler, float3 location);
native float3 Sample(Texture2DArray<float3>, sampler, float3 location, int2 offset);
native float3 Sample(Texture3D<float3>, sampler, float3 location);
native float3 Sample(Texture3D<float3>, sampler, float3 location, int3 offset);
native float3 Sample(TextureCube<float3>, sampler, float3 location);
native float4 Sample(Texture1D<float4>, sampler, float location);
native float4 Sample(Texture1DArray<float4>, sampler, float2 location);
native float4 Sample(Texture2D<float4>, sampler, float2 location);
native float4 Sample(Texture2D<float4>, sampler, float2 location, int2 offset);
native float4 Sample(Texture2DArray<float4>, sampler, float3 location);
native float4 Sample(Texture2DArray<float4>, sampler, float3 location, int2 offset);
native float4 Sample(Texture3D<float4>, sampler, float3 location);
native float4 Sample(Texture3D<float4>, sampler, float3 location, int3 offset);
native float4 Sample(TextureCube<float4>, sampler, float3 location);
native float Sample(TextureDepth2D<float>, sampler, float2 location);
native float Sample(TextureDepth2D<float>, sampler, float2 location, int2 offset);
native float Sample(TextureDepth2DArray<float>, sampler, float3 location);
native float Sample(TextureDepth2DArray<float>, sampler, float3 location, int2 offset);
native float Sample(TextureDepthCube<float>, sampler, float3 location);

/* Functions named operator.zwx= */
bool4 operator.zwx=(bool4 v, bool3 c) {
    bool4 result = v;
    result.z = c.x;
    result.w = c.y;
    result.x = c.z;
    return result;
}
uint4 operator.zwx=(uint4 v, uint3 c) {
    uint4 result = v;
    result.z = c.x;
    result.w = c.y;
    result.x = c.z;
    return result;
}
int4 operator.zwx=(int4 v, int3 c) {
    int4 result = v;
    result.z = c.x;
    result.w = c.y;
    result.x = c.z;
    return result;
}
float4 operator.zwx=(float4 v, float3 c) {
    float4 result = v;
    result.z = c.x;
    result.w = c.y;
    result.x = c.z;
    return result;
}

/* Functions named operator.zzy */
bool3 operator.zzy(bool3 v) {
    bool3 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    return result;
}
bool3 operator.zzy(bool4 v) {
    bool3 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    return result;
}
uint3 operator.zzy(uint3 v) {
    uint3 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    return result;
}
uint3 operator.zzy(uint4 v) {
    uint3 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    return result;
}
int3 operator.zzy(int3 v) {
    int3 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    return result;
}
int3 operator.zzy(int4 v) {
    int3 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    return result;
}
float3 operator.zzy(float3 v) {
    float3 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    return result;
}
float3 operator.zzy(float4 v) {
    float3 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    return result;
}

/* Functions named operator.wywy */
bool4 operator.wywy(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.w;
    result.w = v.y;
    return result;
}
uint4 operator.wywy(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.w;
    result.w = v.y;
    return result;
}
int4 operator.wywy(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.w;
    result.w = v.y;
    return result;
}
float4 operator.wywy(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.w;
    result.w = v.y;
    return result;
}

/* Functions named operator.wxxx */
bool4 operator.wxxx(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
uint4 operator.wxxx(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
int4 operator.wxxx(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
float4 operator.wxxx(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}

/* Functions named sinh */
native float sinh(float);
float2 sinh(float2 x) {
    float2 result;
    result[0] = sinh(x[0]);
    result[1] = sinh(x[1]);
    return result;
}
float3 sinh(float3 x) {
    float3 result;
    result[0] = sinh(x[0]);
    result[1] = sinh(x[1]);
    result[2] = sinh(x[2]);
    return result;
}
float4 sinh(float4 x) {
    float4 result;
    result[0] = sinh(x[0]);
    result[1] = sinh(x[1]);
    result[2] = sinh(x[2]);
    result[3] = sinh(x[3]);
    return result;
}
float2x2 sinh(float2x2 x) {
    float2x2 result;
    result[0][0] = sinh(x[0][0]);
    result[0][1] = sinh(x[0][1]);
    result[1][0] = sinh(x[1][0]);
    result[1][1] = sinh(x[1][1]);
    return result;
}
float2x3 sinh(float2x3 x) {
    float2x3 result;
    result[0][0] = sinh(x[0][0]);
    result[0][1] = sinh(x[0][1]);
    result[0][2] = sinh(x[0][2]);
    result[1][0] = sinh(x[1][0]);
    result[1][1] = sinh(x[1][1]);
    result[1][2] = sinh(x[1][2]);
    return result;
}
float2x4 sinh(float2x4 x) {
    float2x4 result;
    result[0][0] = sinh(x[0][0]);
    result[0][1] = sinh(x[0][1]);
    result[0][2] = sinh(x[0][2]);
    result[0][3] = sinh(x[0][3]);
    result[1][0] = sinh(x[1][0]);
    result[1][1] = sinh(x[1][1]);
    result[1][2] = sinh(x[1][2]);
    result[1][3] = sinh(x[1][3]);
    return result;
}
float3x2 sinh(float3x2 x) {
    float3x2 result;
    result[0][0] = sinh(x[0][0]);
    result[0][1] = sinh(x[0][1]);
    result[1][0] = sinh(x[1][0]);
    result[1][1] = sinh(x[1][1]);
    result[2][0] = sinh(x[2][0]);
    result[2][1] = sinh(x[2][1]);
    return result;
}
float3x3 sinh(float3x3 x) {
    float3x3 result;
    result[0][0] = sinh(x[0][0]);
    result[0][1] = sinh(x[0][1]);
    result[0][2] = sinh(x[0][2]);
    result[1][0] = sinh(x[1][0]);
    result[1][1] = sinh(x[1][1]);
    result[1][2] = sinh(x[1][2]);
    result[2][0] = sinh(x[2][0]);
    result[2][1] = sinh(x[2][1]);
    result[2][2] = sinh(x[2][2]);
    return result;
}
float3x4 sinh(float3x4 x) {
    float3x4 result;
    result[0][0] = sinh(x[0][0]);
    result[0][1] = sinh(x[0][1]);
    result[0][2] = sinh(x[0][2]);
    result[0][3] = sinh(x[0][3]);
    result[1][0] = sinh(x[1][0]);
    result[1][1] = sinh(x[1][1]);
    result[1][2] = sinh(x[1][2]);
    result[1][3] = sinh(x[1][3]);
    result[2][0] = sinh(x[2][0]);
    result[2][1] = sinh(x[2][1]);
    result[2][2] = sinh(x[2][2]);
    result[2][3] = sinh(x[2][3]);
    return result;
}
float4x2 sinh(float4x2 x) {
    float4x2 result;
    result[0][0] = sinh(x[0][0]);
    result[0][1] = sinh(x[0][1]);
    result[1][0] = sinh(x[1][0]);
    result[1][1] = sinh(x[1][1]);
    result[2][0] = sinh(x[2][0]);
    result[2][1] = sinh(x[2][1]);
    result[3][0] = sinh(x[3][0]);
    result[3][1] = sinh(x[3][1]);
    return result;
}
float4x3 sinh(float4x3 x) {
    float4x3 result;
    result[0][0] = sinh(x[0][0]);
    result[0][1] = sinh(x[0][1]);
    result[0][2] = sinh(x[0][2]);
    result[1][0] = sinh(x[1][0]);
    result[1][1] = sinh(x[1][1]);
    result[1][2] = sinh(x[1][2]);
    result[2][0] = sinh(x[2][0]);
    result[2][1] = sinh(x[2][1]);
    result[2][2] = sinh(x[2][2]);
    result[3][0] = sinh(x[3][0]);
    result[3][1] = sinh(x[3][1]);
    result[3][2] = sinh(x[3][2]);
    return result;
}
float4x4 sinh(float4x4 x) {
    float4x4 result;
    result[0][0] = sinh(x[0][0]);
    result[0][1] = sinh(x[0][1]);
    result[0][2] = sinh(x[0][2]);
    result[0][3] = sinh(x[0][3]);
    result[1][0] = sinh(x[1][0]);
    result[1][1] = sinh(x[1][1]);
    result[1][2] = sinh(x[1][2]);
    result[1][3] = sinh(x[1][3]);
    result[2][0] = sinh(x[2][0]);
    result[2][1] = sinh(x[2][1]);
    result[2][2] = sinh(x[2][2]);
    result[2][3] = sinh(x[2][3]);
    result[3][0] = sinh(x[3][0]);
    result[3][1] = sinh(x[3][1]);
    result[3][2] = sinh(x[3][2]);
    result[3][3] = sinh(x[3][3]);
    return result;
}

/* Functions named ddy */
native float ddy(float);
float2 ddy(float2 x) {
    float2 result;
    result[0] = ddy(x[0]);
    result[1] = ddy(x[1]);
    return result;
}
float3 ddy(float3 x) {
    float3 result;
    result[0] = ddy(x[0]);
    result[1] = ddy(x[1]);
    result[2] = ddy(x[2]);
    return result;
}
float4 ddy(float4 x) {
    float4 result;
    result[0] = ddy(x[0]);
    result[1] = ddy(x[1]);
    result[2] = ddy(x[2]);
    result[3] = ddy(x[3]);
    return result;
}
float2x2 ddy(float2x2 x) {
    float2x2 result;
    result[0][0] = ddy(x[0][0]);
    result[0][1] = ddy(x[0][1]);
    result[1][0] = ddy(x[1][0]);
    result[1][1] = ddy(x[1][1]);
    return result;
}
float2x3 ddy(float2x3 x) {
    float2x3 result;
    result[0][0] = ddy(x[0][0]);
    result[0][1] = ddy(x[0][1]);
    result[0][2] = ddy(x[0][2]);
    result[1][0] = ddy(x[1][0]);
    result[1][1] = ddy(x[1][1]);
    result[1][2] = ddy(x[1][2]);
    return result;
}
float2x4 ddy(float2x4 x) {
    float2x4 result;
    result[0][0] = ddy(x[0][0]);
    result[0][1] = ddy(x[0][1]);
    result[0][2] = ddy(x[0][2]);
    result[0][3] = ddy(x[0][3]);
    result[1][0] = ddy(x[1][0]);
    result[1][1] = ddy(x[1][1]);
    result[1][2] = ddy(x[1][2]);
    result[1][3] = ddy(x[1][3]);
    return result;
}
float3x2 ddy(float3x2 x) {
    float3x2 result;
    result[0][0] = ddy(x[0][0]);
    result[0][1] = ddy(x[0][1]);
    result[1][0] = ddy(x[1][0]);
    result[1][1] = ddy(x[1][1]);
    result[2][0] = ddy(x[2][0]);
    result[2][1] = ddy(x[2][1]);
    return result;
}
float3x3 ddy(float3x3 x) {
    float3x3 result;
    result[0][0] = ddy(x[0][0]);
    result[0][1] = ddy(x[0][1]);
    result[0][2] = ddy(x[0][2]);
    result[1][0] = ddy(x[1][0]);
    result[1][1] = ddy(x[1][1]);
    result[1][2] = ddy(x[1][2]);
    result[2][0] = ddy(x[2][0]);
    result[2][1] = ddy(x[2][1]);
    result[2][2] = ddy(x[2][2]);
    return result;
}
float3x4 ddy(float3x4 x) {
    float3x4 result;
    result[0][0] = ddy(x[0][0]);
    result[0][1] = ddy(x[0][1]);
    result[0][2] = ddy(x[0][2]);
    result[0][3] = ddy(x[0][3]);
    result[1][0] = ddy(x[1][0]);
    result[1][1] = ddy(x[1][1]);
    result[1][2] = ddy(x[1][2]);
    result[1][3] = ddy(x[1][3]);
    result[2][0] = ddy(x[2][0]);
    result[2][1] = ddy(x[2][1]);
    result[2][2] = ddy(x[2][2]);
    result[2][3] = ddy(x[2][3]);
    return result;
}
float4x2 ddy(float4x2 x) {
    float4x2 result;
    result[0][0] = ddy(x[0][0]);
    result[0][1] = ddy(x[0][1]);
    result[1][0] = ddy(x[1][0]);
    result[1][1] = ddy(x[1][1]);
    result[2][0] = ddy(x[2][0]);
    result[2][1] = ddy(x[2][1]);
    result[3][0] = ddy(x[3][0]);
    result[3][1] = ddy(x[3][1]);
    return result;
}
float4x3 ddy(float4x3 x) {
    float4x3 result;
    result[0][0] = ddy(x[0][0]);
    result[0][1] = ddy(x[0][1]);
    result[0][2] = ddy(x[0][2]);
    result[1][0] = ddy(x[1][0]);
    result[1][1] = ddy(x[1][1]);
    result[1][2] = ddy(x[1][2]);
    result[2][0] = ddy(x[2][0]);
    result[2][1] = ddy(x[2][1]);
    result[2][2] = ddy(x[2][2]);
    result[3][0] = ddy(x[3][0]);
    result[3][1] = ddy(x[3][1]);
    result[3][2] = ddy(x[3][2]);
    return result;
}
float4x4 ddy(float4x4 x) {
    float4x4 result;
    result[0][0] = ddy(x[0][0]);
    result[0][1] = ddy(x[0][1]);
    result[0][2] = ddy(x[0][2]);
    result[0][3] = ddy(x[0][3]);
    result[1][0] = ddy(x[1][0]);
    result[1][1] = ddy(x[1][1]);
    result[1][2] = ddy(x[1][2]);
    result[1][3] = ddy(x[1][3]);
    result[2][0] = ddy(x[2][0]);
    result[2][1] = ddy(x[2][1]);
    result[2][2] = ddy(x[2][2]);
    result[2][3] = ddy(x[2][3]);
    result[3][0] = ddy(x[3][0]);
    result[3][1] = ddy(x[3][1]);
    result[3][2] = ddy(x[3][2]);
    result[3][3] = ddy(x[3][3]);
    return result;
}

/* Functions named operator>= */
native bool operator>=(int, int);
native bool operator>=(uint, uint);
native bool operator>=(float, float);

/* Functions named dst */
uint4 dst(uint4 src0, uint4 src1) {
    uint4 result;
    result.x = 1;
    result.y = src0.y * src1.y;
    result.z = src0.z;
    result.w = src1.w;
    return result;
}
int4 dst(int4 src0, int4 src1) {
    int4 result;
    result.x = 1;
    result.y = src0.y * src1.y;
    result.z = src0.z;
    result.w = src1.w;
    return result;
}
float4 dst(float4 src0, float4 src1) {
    float4 result;
    result.x = 1;
    result.y = src0.y * src1.y;
    result.z = src0.z;
    result.w = src1.w;
    return result;
}


/* Functions named operator.xyz= */
bool3 operator.xyz=(bool3 v, bool3 c) {
    bool3 result = v;
    result.x = c.x;
    result.y = c.y;
    result.z = c.z;
    return result;
}
bool4 operator.xyz=(bool4 v, bool3 c) {
    bool4 result = v;
    result.x = c.x;
    result.y = c.y;
    result.z = c.z;
    return result;
}
uint3 operator.xyz=(uint3 v, uint3 c) {
    uint3 result = v;
    result.x = c.x;
    result.y = c.y;
    result.z = c.z;
    return result;
}
uint4 operator.xyz=(uint4 v, uint3 c) {
    uint4 result = v;
    result.x = c.x;
    result.y = c.y;
    result.z = c.z;
    return result;
}
int3 operator.xyz=(int3 v, int3 c) {
    int3 result = v;
    result.x = c.x;
    result.y = c.y;
    result.z = c.z;
    return result;
}
int4 operator.xyz=(int4 v, int3 c) {
    int4 result = v;
    result.x = c.x;
    result.y = c.y;
    result.z = c.z;
    return result;
}
float3 operator.xyz=(float3 v, float3 c) {
    float3 result = v;
    result.x = c.x;
    result.y = c.y;
    result.z = c.z;
    return result;
}
float4 operator.xyz=(float4 v, float3 c) {
    float4 result = v;
    result.x = c.x;
    result.y = c.y;
    result.z = c.z;
    return result;
}

/* Functions named operator.yxxw */
bool4 operator.yxxw(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.w;
    return result;
}
uint4 operator.yxxw(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.w;
    return result;
}
int4 operator.yxxw(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.w;
    return result;
}
float4 operator.yxxw(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.x;
    result.w = v.w;
    return result;
}

/* Functions named operator.wxy */
bool3 operator.wxy(bool4 v) {
    bool3 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.y;
    return result;
}
uint3 operator.wxy(uint4 v) {
    uint3 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.y;
    return result;
}
int3 operator.wxy(int4 v) {
    int3 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.y;
    return result;
}
float3 operator.wxy(float4 v) {
    float3 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.y;
    return result;
}

/* Functions named dot */
uint dot(uint a, uint b) {
    return a * b;
}
uint dot(uint2 a, uint2 b) {
    uint result = 0;
    result = result + a[0] * b[0];
    result = result + a[1] * b[1];
    return result;
}
uint dot(uint3 a, uint3 b) {
    uint result = 0;
    result = result + a[0] * b[0];
    result = result + a[1] * b[1];
    result = result + a[2] * b[2];
    return result;
}
uint dot(uint4 a, uint4 b) {
    uint result = 0;
    result = result + a[0] * b[0];
    result = result + a[1] * b[1];
    result = result + a[2] * b[2];
    result = result + a[3] * b[3];
    return result;
}
int dot(int a, int b) {
    return a * b;
}
int dot(int2 a, int2 b) {
    int result = 0;
    result = result + a[0] * b[0];
    result = result + a[1] * b[1];
    return result;
}
int dot(int3 a, int3 b) {
    int result = 0;
    result = result + a[0] * b[0];
    result = result + a[1] * b[1];
    result = result + a[2] * b[2];
    return result;
}
int dot(int4 a, int4 b) {
    int result = 0;
    result = result + a[0] * b[0];
    result = result + a[1] * b[1];
    result = result + a[2] * b[2];
    result = result + a[3] * b[3];
    return result;
}
float dot(float a, float b) {
    return a * b;
}
float dot(float2 a, float2 b) {
    float result = 0;
    result = result + a[0] * b[0];
    result = result + a[1] * b[1];
    return result;
}
float dot(float3 a, float3 b) {
    float result = 0;
    result = result + a[0] * b[0];
    result = result + a[1] * b[1];
    result = result + a[2] * b[2];
    return result;
}
float dot(float4 a, float4 b) {
    float result = 0;
    result = result + a[0] * b[0];
    result = result + a[1] * b[1];
    result = result + a[2] * b[2];
    result = result + a[3] * b[3];
    return result;
}


/* Functions named operator.zxyw= */
bool4 operator.zxyw=(bool4 v, bool4 c) {
    bool4 result = v;
    result.z = c.x;
    result.x = c.y;
    result.y = c.z;
    result.w = c.w;
    return result;
}
uint4 operator.zxyw=(uint4 v, uint4 c) {
    uint4 result = v;
    result.z = c.x;
    result.x = c.y;
    result.y = c.z;
    result.w = c.w;
    return result;
}
int4 operator.zxyw=(int4 v, int4 c) {
    int4 result = v;
    result.z = c.x;
    result.x = c.y;
    result.y = c.z;
    result.w = c.w;
    return result;
}
float4 operator.zxyw=(float4 v, float4 c) {
    float4 result = v;
    result.z = c.x;
    result.x = c.y;
    result.y = c.z;
    result.w = c.w;
    return result;
}

/* Functions named operator.yyw */
bool3 operator.yyw(bool4 v) {
    bool3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.w;
    return result;
}
uint3 operator.yyw(uint4 v) {
    uint3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.w;
    return result;
}
int3 operator.yyw(int4 v) {
    int3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.w;
    return result;
}
float3 operator.yyw(float4 v) {
    float3 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.w;
    return result;
}

/* Functions named operator.ywx= */
bool4 operator.ywx=(bool4 v, bool3 c) {
    bool4 result = v;
    result.y = c.x;
    result.w = c.y;
    result.x = c.z;
    return result;
}
uint4 operator.ywx=(uint4 v, uint3 c) {
    uint4 result = v;
    result.y = c.x;
    result.w = c.y;
    result.x = c.z;
    return result;
}
int4 operator.ywx=(int4 v, int3 c) {
    int4 result = v;
    result.y = c.x;
    result.w = c.y;
    result.x = c.z;
    return result;
}
float4 operator.ywx=(float4 v, float3 c) {
    float4 result = v;
    result.y = c.x;
    result.w = c.y;
    result.x = c.z;
    return result;
}

/* Functions named operator.xzxx */
bool4 operator.xzxx(bool3 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    result.w = v.x;
    return result;
}
bool4 operator.xzxx(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    result.w = v.x;
    return result;
}
uint4 operator.xzxx(uint3 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    result.w = v.x;
    return result;
}
uint4 operator.xzxx(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    result.w = v.x;
    return result;
}
int4 operator.xzxx(int3 v) {
    int4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    result.w = v.x;
    return result;
}
int4 operator.xzxx(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    result.w = v.x;
    return result;
}
float4 operator.xzxx(float3 v) {
    float4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    result.w = v.x;
    return result;
}
float4 operator.xzxx(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    result.w = v.x;
    return result;
}

/* Functions named operator.yxzw= */
bool4 operator.yxzw=(bool4 v, bool4 c) {
    bool4 result = v;
    result.y = c.x;
    result.x = c.y;
    result.z = c.z;
    result.w = c.w;
    return result;
}
uint4 operator.yxzw=(uint4 v, uint4 c) {
    uint4 result = v;
    result.y = c.x;
    result.x = c.y;
    result.z = c.z;
    result.w = c.w;
    return result;
}
int4 operator.yxzw=(int4 v, int4 c) {
    int4 result = v;
    result.y = c.x;
    result.x = c.y;
    result.z = c.z;
    result.w = c.w;
    return result;
}
float4 operator.yxzw=(float4 v, float4 c) {
    float4 result = v;
    result.y = c.x;
    result.x = c.y;
    result.z = c.z;
    result.w = c.w;
    return result;
}

/* Functions named operator.wxz */
bool3 operator.wxz(bool4 v) {
    bool3 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.z;
    return result;
}
uint3 operator.wxz(uint4 v) {
    uint3 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.z;
    return result;
}
int3 operator.wxz(int4 v) {
    int3 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.z;
    return result;
}
float3 operator.wxz(float4 v) {
    float3 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.z;
    return result;
}

/* Functions named operator.wwzy */
bool4 operator.wwzy(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.z;
    result.w = v.y;
    return result;
}
uint4 operator.wwzy(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.z;
    result.w = v.y;
    return result;
}
int4 operator.wwzy(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.z;
    result.w = v.y;
    return result;
}
float4 operator.wwzy(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.z;
    result.w = v.y;
    return result;
}

/* Functions named operator.xwxz */
bool4 operator.xwxz(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.x;
    result.w = v.z;
    return result;
}
uint4 operator.xwxz(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.x;
    result.w = v.z;
    return result;
}
int4 operator.xwxz(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.x;
    result.w = v.z;
    return result;
}
float4 operator.xwxz(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.x;
    result.w = v.z;
    return result;
}

/* Functions named operator.wwzz */
bool4 operator.wwzz(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.z;
    result.w = v.z;
    return result;
}
uint4 operator.wwzz(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.z;
    result.w = v.z;
    return result;
}
int4 operator.wwzz(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.z;
    result.w = v.z;
    return result;
}
float4 operator.wwzz(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.z;
    result.w = v.z;
    return result;
}

/* Functions named operator.zxxx */
bool4 operator.zxxx(bool3 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
bool4 operator.zxxx(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
uint4 operator.zxxx(uint3 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
uint4 operator.zxxx(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
int4 operator.zxxx(int3 v) {
    int4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
int4 operator.zxxx(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
float4 operator.zxxx(float3 v) {
    float4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}
float4 operator.zxxx(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    result.w = v.x;
    return result;
}

/* Functions named asfloat */
native float asfloat(int);
float2 asfloat(int2 x) {
    float2 result;
    result[0] = asfloat(x[0]);
    result[1] = asfloat(x[1]);
    return result;
}
float3 asfloat(int3 x) {
    float3 result;
    result[0] = asfloat(x[0]);
    result[1] = asfloat(x[1]);
    result[2] = asfloat(x[2]);
    return result;
}
float4 asfloat(int4 x) {
    float4 result;
    result[0] = asfloat(x[0]);
    result[1] = asfloat(x[1]);
    result[2] = asfloat(x[2]);
    result[3] = asfloat(x[3]);
    return result;
}
native float asfloat(uint);
float2 asfloat(uint2 x) {
    float2 result;
    result[0] = asfloat(x[0]);
    result[1] = asfloat(x[1]);
    return result;
}
float3 asfloat(uint3 x) {
    float3 result;
    result[0] = asfloat(x[0]);
    result[1] = asfloat(x[1]);
    result[2] = asfloat(x[2]);
    return result;
}
float4 asfloat(uint4 x) {
    float4 result;
    result[0] = asfloat(x[0]);
    result[1] = asfloat(x[1]);
    result[2] = asfloat(x[2]);
    result[3] = asfloat(x[3]);
    return result;
}
float asfloat(float x) {
    return x;
}
float2 asfloat(float2 x) {
    return x;
}
float3 asfloat(float3 x) {
    return x;
}
float4 asfloat(float4 x) {
    return x;
}
float2x2 asfloat(float2x2 x) {
    return x;
}
float2x3 asfloat(float2x3 x) {
    return x;
}
float2x4 asfloat(float2x4 x) {
    return x;
}
float3x2 asfloat(float3x2 x) {
    return x;
}
float3x3 asfloat(float3x3 x) {
    return x;
}
float3x4 asfloat(float3x4 x) {
    return x;
}
float4x2 asfloat(float4x2 x) {
    return x;
}
float4x3 asfloat(float4x3 x) {
    return x;
}
float4x4 asfloat(float4x4 x) {
    return x;
}


/* Functions named operator.zwyx */
bool4 operator.zwyx(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.y;
    result.w = v.x;
    return result;
}
uint4 operator.zwyx(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.y;
    result.w = v.x;
    return result;
}
int4 operator.zwyx(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.y;
    result.w = v.x;
    return result;
}
float4 operator.zwyx(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.y;
    result.w = v.x;
    return result;
}

/* Functions named isnormal */
native bool isnormal(float);

bool2 isnormal(float2 x) {
    bool2 result;
    result[0] = isnormal(x[0]);
    result[1] = isnormal(x[1]);
    return result;
}
bool3 isnormal(float3 x) {
    bool3 result;
    result[0] = isnormal(x[0]);
    result[1] = isnormal(x[1]);
    result[2] = isnormal(x[2]);
    return result;
}
bool4 isnormal(float4 x) {
    bool4 result;
    result[0] = isnormal(x[0]);
    result[1] = isnormal(x[1]);
    result[2] = isnormal(x[2]);
    result[3] = isnormal(x[3]);
    return result;
}


/* Functions named InterlockedExchange */
native void InterlockedExchange(device atomic_uint*, uint, thread uint*);
native void InterlockedExchange(device atomic_int*, int, thread int*);
native void InterlockedExchange(device atomic_uint*, uint, device uint*);
native void InterlockedExchange(device atomic_int*, int, device int*);
native void InterlockedExchange(device atomic_uint*, uint, threadgroup uint*);
native void InterlockedExchange(device atomic_int*, int, threadgroup int*);
native void InterlockedExchange(threadgroup atomic_uint*, uint, thread uint*);
native void InterlockedExchange(threadgroup atomic_int*, int, thread int*);
native void InterlockedExchange(threadgroup atomic_uint*, uint, device uint*);
native void InterlockedExchange(threadgroup atomic_int*, int, device int*);
native void InterlockedExchange(threadgroup atomic_uint*, uint, threadgroup uint*);
native void InterlockedExchange(threadgroup atomic_int*, int, threadgroup int*);

/* Functions named operator.xzx */
bool3 operator.xzx(bool3 v) {
    bool3 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    return result;
}
bool3 operator.xzx(bool4 v) {
    bool3 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    return result;
}
uint3 operator.xzx(uint3 v) {
    uint3 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    return result;
}
uint3 operator.xzx(uint4 v) {
    uint3 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    return result;
}
int3 operator.xzx(int3 v) {
    int3 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    return result;
}
int3 operator.xzx(int4 v) {
    int3 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    return result;
}
float3 operator.xzx(float3 v) {
    float3 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    return result;
}
float3 operator.xzx(float4 v) {
    float3 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.x;
    return result;
}

/* Functions named GetDimensions */












































native void GetDimensions(Texture1D<uint>, thread uint* Width);
native void GetDimensions(Texture1D<uint>, thread uint* Width);
native void GetDimensions(Texture1D<uint>, thread uint* Width);
native void GetDimensions(Texture1D<uint>, device uint* Width);
native void GetDimensions(Texture1D<uint>, device uint* Width);
native void GetDimensions(Texture1D<uint>, device uint* Width);
native void GetDimensions(Texture1D<uint>, threadgroup uint* Width);
native void GetDimensions(Texture1D<uint>, threadgroup uint* Width);
native void GetDimensions(Texture1D<uint>, threadgroup uint* Width);

native void GetDimensions(Texture1DArray<uint>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint>, threadgroup uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint>, threadgroup uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint>, threadgroup uint* Width, threadgroup uint* Elements);

native void GetDimensions(Texture2D<uint>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint>, uint MipLevel, thread uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint>, uint MipLevel, device uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint>, uint MipLevel, device uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint>, uint MipLevel, device uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);

native void GetDimensions(Texture2DArray<uint>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);

native void GetDimensions(Texture3D<uint>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);

native void GetDimensions(TextureCube<uint>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint>, uint MipLevel, thread uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint>, uint MipLevel, device uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint>, uint MipLevel, device uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint>, uint MipLevel, device uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);






native void GetDimensions(Texture1D<uint2>, thread uint* Width);
native void GetDimensions(Texture1D<uint2>, thread uint* Width);
native void GetDimensions(Texture1D<uint2>, thread uint* Width);
native void GetDimensions(Texture1D<uint2>, device uint* Width);
native void GetDimensions(Texture1D<uint2>, device uint* Width);
native void GetDimensions(Texture1D<uint2>, device uint* Width);
native void GetDimensions(Texture1D<uint2>, threadgroup uint* Width);
native void GetDimensions(Texture1D<uint2>, threadgroup uint* Width);
native void GetDimensions(Texture1D<uint2>, threadgroup uint* Width);

native void GetDimensions(Texture1DArray<uint2>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint2>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint2>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint2>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint2>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint2>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint2>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint2>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint2>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint2>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint2>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint2>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint2>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint2>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint2>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint2>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint2>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint2>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint2>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint2>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint2>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint2>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint2>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint2>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint2>, threadgroup uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint2>, threadgroup uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint2>, threadgroup uint* Width, threadgroup uint* Elements);

native void GetDimensions(Texture2D<uint2>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint2>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint2>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint2>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint2>, uint MipLevel, thread uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint2>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint2>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint2>, uint MipLevel, device uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint2>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint2>, uint MipLevel, device uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint2>, uint MipLevel, device uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint2>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint2>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint2>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint2>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint2>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint2>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint2>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);

native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);

native void GetDimensions(Texture3D<uint2>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);

native void GetDimensions(TextureCube<uint2>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint2>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint2>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint2>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint2>, uint MipLevel, thread uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint2>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint2>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint2>, uint MipLevel, device uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint2>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint2>, uint MipLevel, device uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint2>, uint MipLevel, device uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint2>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint2>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint2>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint2>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint2>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint2>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint2>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);






native void GetDimensions(Texture1D<uint3>, thread uint* Width);
native void GetDimensions(Texture1D<uint3>, thread uint* Width);
native void GetDimensions(Texture1D<uint3>, thread uint* Width);
native void GetDimensions(Texture1D<uint3>, device uint* Width);
native void GetDimensions(Texture1D<uint3>, device uint* Width);
native void GetDimensions(Texture1D<uint3>, device uint* Width);
native void GetDimensions(Texture1D<uint3>, threadgroup uint* Width);
native void GetDimensions(Texture1D<uint3>, threadgroup uint* Width);
native void GetDimensions(Texture1D<uint3>, threadgroup uint* Width);

native void GetDimensions(Texture1DArray<uint3>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint3>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint3>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint3>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint3>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint3>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint3>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint3>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint3>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint3>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint3>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint3>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint3>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint3>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint3>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint3>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint3>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint3>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint3>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint3>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint3>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint3>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint3>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint3>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint3>, threadgroup uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint3>, threadgroup uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint3>, threadgroup uint* Width, threadgroup uint* Elements);

native void GetDimensions(Texture2D<uint3>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint3>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint3>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint3>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint3>, uint MipLevel, thread uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint3>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint3>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint3>, uint MipLevel, device uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint3>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint3>, uint MipLevel, device uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint3>, uint MipLevel, device uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint3>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint3>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint3>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint3>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint3>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint3>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint3>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);

native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);

native void GetDimensions(Texture3D<uint3>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);

native void GetDimensions(TextureCube<uint3>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint3>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint3>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint3>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint3>, uint MipLevel, thread uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint3>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint3>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint3>, uint MipLevel, device uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint3>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint3>, uint MipLevel, device uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint3>, uint MipLevel, device uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint3>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint3>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint3>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint3>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint3>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint3>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint3>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);






native void GetDimensions(Texture1D<uint4>, thread uint* Width);
native void GetDimensions(Texture1D<uint4>, thread uint* Width);
native void GetDimensions(Texture1D<uint4>, thread uint* Width);
native void GetDimensions(Texture1D<uint4>, device uint* Width);
native void GetDimensions(Texture1D<uint4>, device uint* Width);
native void GetDimensions(Texture1D<uint4>, device uint* Width);
native void GetDimensions(Texture1D<uint4>, threadgroup uint* Width);
native void GetDimensions(Texture1D<uint4>, threadgroup uint* Width);
native void GetDimensions(Texture1D<uint4>, threadgroup uint* Width);

native void GetDimensions(Texture1DArray<uint4>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint4>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint4>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint4>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint4>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint4>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint4>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint4>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint4>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint4>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint4>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint4>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint4>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint4>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint4>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint4>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint4>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint4>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint4>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint4>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint4>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<uint4>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint4>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint4>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<uint4>, threadgroup uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint4>, threadgroup uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<uint4>, threadgroup uint* Width, threadgroup uint* Elements);

native void GetDimensions(Texture2D<uint4>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint4>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint4>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint4>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint4>, uint MipLevel, thread uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint4>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint4>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint4>, uint MipLevel, device uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint4>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint4>, uint MipLevel, device uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint4>, uint MipLevel, device uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint4>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint4>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint4>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint4>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint4>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint4>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint4>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<uint4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);

native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<uint4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);

native void GetDimensions(Texture3D<uint4>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<uint4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);

native void GetDimensions(TextureCube<uint4>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint4>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint4>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint4>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint4>, uint MipLevel, thread uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint4>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint4>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint4>, uint MipLevel, device uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint4>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint4>, uint MipLevel, device uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint4>, uint MipLevel, device uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint4>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint4>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint4>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint4>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint4>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint4>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint4>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<uint4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);


















































native void GetDimensions(Texture1D<int>, thread uint* Width);
native void GetDimensions(Texture1D<int>, thread uint* Width);
native void GetDimensions(Texture1D<int>, thread uint* Width);
native void GetDimensions(Texture1D<int>, device uint* Width);
native void GetDimensions(Texture1D<int>, device uint* Width);
native void GetDimensions(Texture1D<int>, device uint* Width);
native void GetDimensions(Texture1D<int>, threadgroup uint* Width);
native void GetDimensions(Texture1D<int>, threadgroup uint* Width);
native void GetDimensions(Texture1D<int>, threadgroup uint* Width);

native void GetDimensions(Texture1DArray<int>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int>, threadgroup uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int>, threadgroup uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int>, threadgroup uint* Width, threadgroup uint* Elements);

native void GetDimensions(Texture2D<int>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int>, uint MipLevel, thread uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int>, uint MipLevel, device uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int>, uint MipLevel, device uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int>, uint MipLevel, device uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);

native void GetDimensions(Texture2DArray<int>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);

native void GetDimensions(Texture3D<int>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);

native void GetDimensions(TextureCube<int>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int>, uint MipLevel, thread uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int>, uint MipLevel, device uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int>, uint MipLevel, device uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int>, uint MipLevel, device uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);






native void GetDimensions(Texture1D<int2>, thread uint* Width);
native void GetDimensions(Texture1D<int2>, thread uint* Width);
native void GetDimensions(Texture1D<int2>, thread uint* Width);
native void GetDimensions(Texture1D<int2>, device uint* Width);
native void GetDimensions(Texture1D<int2>, device uint* Width);
native void GetDimensions(Texture1D<int2>, device uint* Width);
native void GetDimensions(Texture1D<int2>, threadgroup uint* Width);
native void GetDimensions(Texture1D<int2>, threadgroup uint* Width);
native void GetDimensions(Texture1D<int2>, threadgroup uint* Width);

native void GetDimensions(Texture1DArray<int2>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int2>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int2>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int2>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int2>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int2>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int2>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int2>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int2>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int2>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int2>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int2>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int2>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int2>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int2>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int2>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int2>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int2>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int2>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int2>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int2>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int2>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int2>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int2>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int2>, threadgroup uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int2>, threadgroup uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int2>, threadgroup uint* Width, threadgroup uint* Elements);

native void GetDimensions(Texture2D<int2>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int2>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int2>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int2>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int2>, uint MipLevel, thread uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int2>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int2>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int2>, uint MipLevel, device uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int2>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int2>, uint MipLevel, device uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int2>, uint MipLevel, device uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int2>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int2>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int2>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int2>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int2>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int2>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int2>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);

native void GetDimensions(Texture2DArray<int2>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);

native void GetDimensions(Texture3D<int2>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);

native void GetDimensions(TextureCube<int2>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int2>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int2>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int2>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int2>, uint MipLevel, thread uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int2>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int2>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int2>, uint MipLevel, device uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int2>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int2>, uint MipLevel, device uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int2>, uint MipLevel, device uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int2>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int2>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int2>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int2>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int2>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int2>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int2>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);






native void GetDimensions(Texture1D<int3>, thread uint* Width);
native void GetDimensions(Texture1D<int3>, thread uint* Width);
native void GetDimensions(Texture1D<int3>, thread uint* Width);
native void GetDimensions(Texture1D<int3>, device uint* Width);
native void GetDimensions(Texture1D<int3>, device uint* Width);
native void GetDimensions(Texture1D<int3>, device uint* Width);
native void GetDimensions(Texture1D<int3>, threadgroup uint* Width);
native void GetDimensions(Texture1D<int3>, threadgroup uint* Width);
native void GetDimensions(Texture1D<int3>, threadgroup uint* Width);

native void GetDimensions(Texture1DArray<int3>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int3>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int3>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int3>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int3>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int3>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int3>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int3>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int3>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int3>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int3>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int3>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int3>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int3>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int3>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int3>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int3>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int3>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int3>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int3>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int3>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int3>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int3>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int3>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int3>, threadgroup uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int3>, threadgroup uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int3>, threadgroup uint* Width, threadgroup uint* Elements);

native void GetDimensions(Texture2D<int3>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int3>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int3>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int3>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int3>, uint MipLevel, thread uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int3>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int3>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int3>, uint MipLevel, device uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int3>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int3>, uint MipLevel, device uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int3>, uint MipLevel, device uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int3>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int3>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int3>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int3>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int3>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int3>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int3>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);

native void GetDimensions(Texture2DArray<int3>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);

native void GetDimensions(Texture3D<int3>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);

native void GetDimensions(TextureCube<int3>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int3>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int3>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int3>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int3>, uint MipLevel, thread uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int3>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int3>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int3>, uint MipLevel, device uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int3>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int3>, uint MipLevel, device uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int3>, uint MipLevel, device uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int3>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int3>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int3>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int3>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int3>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int3>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int3>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);






native void GetDimensions(Texture1D<int4>, thread uint* Width);
native void GetDimensions(Texture1D<int4>, thread uint* Width);
native void GetDimensions(Texture1D<int4>, thread uint* Width);
native void GetDimensions(Texture1D<int4>, device uint* Width);
native void GetDimensions(Texture1D<int4>, device uint* Width);
native void GetDimensions(Texture1D<int4>, device uint* Width);
native void GetDimensions(Texture1D<int4>, threadgroup uint* Width);
native void GetDimensions(Texture1D<int4>, threadgroup uint* Width);
native void GetDimensions(Texture1D<int4>, threadgroup uint* Width);

native void GetDimensions(Texture1DArray<int4>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int4>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int4>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int4>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int4>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int4>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int4>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int4>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int4>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int4>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int4>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int4>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int4>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int4>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int4>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int4>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int4>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int4>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int4>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int4>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int4>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<int4>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int4>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int4>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<int4>, threadgroup uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int4>, threadgroup uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<int4>, threadgroup uint* Width, threadgroup uint* Elements);

native void GetDimensions(Texture2D<int4>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int4>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int4>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int4>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int4>, uint MipLevel, thread uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int4>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int4>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int4>, uint MipLevel, device uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int4>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int4>, uint MipLevel, device uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int4>, uint MipLevel, device uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int4>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int4>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int4>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int4>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int4>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int4>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int4>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<int4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<int4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<int4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);

native void GetDimensions(Texture2DArray<int4>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<int4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);

native void GetDimensions(Texture3D<int4>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<int4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);

native void GetDimensions(TextureCube<int4>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int4>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int4>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int4>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int4>, uint MipLevel, thread uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int4>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int4>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int4>, uint MipLevel, device uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int4>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int4>, uint MipLevel, device uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int4>, uint MipLevel, device uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int4>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int4>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int4>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int4>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int4>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int4>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int4>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<int4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<int4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<int4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);


















































native void GetDimensions(Texture1D<float>, thread uint* Width);
native void GetDimensions(Texture1D<float>, thread uint* Width);
native void GetDimensions(Texture1D<float>, thread uint* Width);
native void GetDimensions(Texture1D<float>, device uint* Width);
native void GetDimensions(Texture1D<float>, device uint* Width);
native void GetDimensions(Texture1D<float>, device uint* Width);
native void GetDimensions(Texture1D<float>, threadgroup uint* Width);
native void GetDimensions(Texture1D<float>, threadgroup uint* Width);
native void GetDimensions(Texture1D<float>, threadgroup uint* Width);

native void GetDimensions(Texture1DArray<float>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float>, threadgroup uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float>, threadgroup uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float>, threadgroup uint* Width, threadgroup uint* Elements);

native void GetDimensions(Texture2D<float>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float>, uint MipLevel, thread uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float>, uint MipLevel, device uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float>, uint MipLevel, device uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float>, uint MipLevel, device uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);

native void GetDimensions(Texture2DArray<float>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);

native void GetDimensions(Texture3D<float>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);

native void GetDimensions(TextureCube<float>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float>, uint MipLevel, thread uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float>, uint MipLevel, device uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float>, uint MipLevel, device uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float>, uint MipLevel, device uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);






native void GetDimensions(Texture1D<float2>, thread uint* Width);
native void GetDimensions(Texture1D<float2>, thread uint* Width);
native void GetDimensions(Texture1D<float2>, thread uint* Width);
native void GetDimensions(Texture1D<float2>, device uint* Width);
native void GetDimensions(Texture1D<float2>, device uint* Width);
native void GetDimensions(Texture1D<float2>, device uint* Width);
native void GetDimensions(Texture1D<float2>, threadgroup uint* Width);
native void GetDimensions(Texture1D<float2>, threadgroup uint* Width);
native void GetDimensions(Texture1D<float2>, threadgroup uint* Width);

native void GetDimensions(Texture1DArray<float2>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float2>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float2>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float2>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float2>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float2>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float2>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float2>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float2>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float2>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float2>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float2>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float2>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float2>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float2>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float2>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float2>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float2>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float2>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float2>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float2>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float2>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float2>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float2>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float2>, threadgroup uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float2>, threadgroup uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float2>, threadgroup uint* Width, threadgroup uint* Elements);

native void GetDimensions(Texture2D<float2>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float2>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float2>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float2>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float2>, uint MipLevel, thread uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float2>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float2>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float2>, uint MipLevel, device uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float2>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float2>, uint MipLevel, device uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float2>, uint MipLevel, device uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float2>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float2>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float2>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float2>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float2>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float2>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float2>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);

native void GetDimensions(Texture2DArray<float2>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);

native void GetDimensions(Texture3D<float2>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);

native void GetDimensions(TextureCube<float2>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float2>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float2>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float2>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float2>, uint MipLevel, thread uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float2>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float2>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float2>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float2>, uint MipLevel, device uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float2>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float2>, uint MipLevel, device uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float2>, uint MipLevel, device uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float2>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float2>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float2>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float2>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float2>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float2>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float2>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float2>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float2>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);






native void GetDimensions(Texture1D<float3>, thread uint* Width);
native void GetDimensions(Texture1D<float3>, thread uint* Width);
native void GetDimensions(Texture1D<float3>, thread uint* Width);
native void GetDimensions(Texture1D<float3>, device uint* Width);
native void GetDimensions(Texture1D<float3>, device uint* Width);
native void GetDimensions(Texture1D<float3>, device uint* Width);
native void GetDimensions(Texture1D<float3>, threadgroup uint* Width);
native void GetDimensions(Texture1D<float3>, threadgroup uint* Width);
native void GetDimensions(Texture1D<float3>, threadgroup uint* Width);

native void GetDimensions(Texture1DArray<float3>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float3>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float3>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float3>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float3>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float3>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float3>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float3>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float3>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float3>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float3>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float3>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float3>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float3>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float3>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float3>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float3>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float3>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float3>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float3>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float3>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float3>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float3>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float3>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float3>, threadgroup uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float3>, threadgroup uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float3>, threadgroup uint* Width, threadgroup uint* Elements);

native void GetDimensions(Texture2D<float3>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float3>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float3>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float3>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float3>, uint MipLevel, thread uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float3>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float3>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float3>, uint MipLevel, device uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float3>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float3>, uint MipLevel, device uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float3>, uint MipLevel, device uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float3>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float3>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float3>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float3>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float3>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float3>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float3>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);

native void GetDimensions(Texture2DArray<float3>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);

native void GetDimensions(Texture3D<float3>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);

native void GetDimensions(TextureCube<float3>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float3>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float3>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float3>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float3>, uint MipLevel, thread uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float3>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float3>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float3>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float3>, uint MipLevel, device uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float3>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float3>, uint MipLevel, device uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float3>, uint MipLevel, device uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float3>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float3>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float3>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float3>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float3>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float3>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float3>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float3>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float3>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);






native void GetDimensions(Texture1D<float4>, thread uint* Width);
native void GetDimensions(Texture1D<float4>, thread uint* Width);
native void GetDimensions(Texture1D<float4>, thread uint* Width);
native void GetDimensions(Texture1D<float4>, device uint* Width);
native void GetDimensions(Texture1D<float4>, device uint* Width);
native void GetDimensions(Texture1D<float4>, device uint* Width);
native void GetDimensions(Texture1D<float4>, threadgroup uint* Width);
native void GetDimensions(Texture1D<float4>, threadgroup uint* Width);
native void GetDimensions(Texture1D<float4>, threadgroup uint* Width);

native void GetDimensions(Texture1DArray<float4>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float4>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float4>, thread uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float4>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float4>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float4>, thread uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float4>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float4>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float4>, thread uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float4>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float4>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float4>, device uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float4>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float4>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float4>, device uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float4>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float4>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float4>, device uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float4>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float4>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float4>, threadgroup uint* Width, thread uint* Elements);
native void GetDimensions(Texture1DArray<float4>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float4>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float4>, threadgroup uint* Width, device uint* Elements);
native void GetDimensions(Texture1DArray<float4>, threadgroup uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float4>, threadgroup uint* Width, threadgroup uint* Elements);
native void GetDimensions(Texture1DArray<float4>, threadgroup uint* Width, threadgroup uint* Elements);

native void GetDimensions(Texture2D<float4>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float4>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float4>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float4>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float4>, uint MipLevel, thread uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float4>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float4>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float4>, uint MipLevel, device uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float4>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float4>, uint MipLevel, device uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float4>, uint MipLevel, device uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float4>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float4>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float4>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float4>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float4>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float4>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float4>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2D<float4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(Texture2D<float4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(Texture2D<float4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);

native void GetDimensions(Texture2DArray<float4>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(Texture2DArray<float4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);

native void GetDimensions(Texture3D<float4>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, device uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Depth, threadgroup uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, thread uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, device uint* NumberOfLevels);
native void GetDimensions(Texture3D<float4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Depth, threadgroup uint* NumberOfLevels);

native void GetDimensions(TextureCube<float4>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float4>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float4>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float4>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float4>, uint MipLevel, thread uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float4>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float4>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float4>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float4>, uint MipLevel, device uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float4>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float4>, uint MipLevel, device uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float4>, uint MipLevel, device uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float4>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float4>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float4>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float4>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float4>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float4>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float4>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float4>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureCube<float4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureCube<float4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureCube<float4>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);






native void GetDimensions(TextureDepth2D<float>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2D<float>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2D<float>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2D<float>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2D<float>, uint MipLevel, thread uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2D<float>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2D<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2D<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2D<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2D<float>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2D<float>, uint MipLevel, device uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2D<float>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2D<float>, uint MipLevel, device uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2D<float>, uint MipLevel, device uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2D<float>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2D<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2D<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2D<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2D<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2D<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2D<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2D<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2D<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2D<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2D<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2D<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2D<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);

native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, thread uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, device uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, device uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, device uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* Elements, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, device uint* NumberOfLevels);
native void GetDimensions(TextureDepth2DArray<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* Elements, threadgroup uint* NumberOfLevels);

native void GetDimensions(TextureDepthCube<float>, uint MipLevel, thread uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepthCube<float>, uint MipLevel, thread uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureDepthCube<float>, uint MipLevel, thread uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepthCube<float>, uint MipLevel, thread uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepthCube<float>, uint MipLevel, thread uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureDepthCube<float>, uint MipLevel, thread uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepthCube<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepthCube<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureDepthCube<float>, uint MipLevel, thread uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepthCube<float>, uint MipLevel, device uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepthCube<float>, uint MipLevel, device uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureDepthCube<float>, uint MipLevel, device uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepthCube<float>, uint MipLevel, device uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepthCube<float>, uint MipLevel, device uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureDepthCube<float>, uint MipLevel, device uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepthCube<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepthCube<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureDepthCube<float>, uint MipLevel, device uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepthCube<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepthCube<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureDepthCube<float>, uint MipLevel, threadgroup uint* Width, thread uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepthCube<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepthCube<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureDepthCube<float>, uint MipLevel, threadgroup uint* Width, device uint* Height, threadgroup uint* NumberOfLevels);
native void GetDimensions(TextureDepthCube<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, thread uint* NumberOfLevels);
native void GetDimensions(TextureDepthCube<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, device uint* NumberOfLevels);
native void GetDimensions(TextureDepthCube<float>, uint MipLevel, threadgroup uint* Width, threadgroup uint* Height, threadgroup uint* NumberOfLevels);


/* Functions named operator.xwyw */
bool4 operator.xwyw(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.y;
    result.w = v.w;
    return result;
}
uint4 operator.xwyw(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.y;
    result.w = v.w;
    return result;
}
int4 operator.xwyw(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.y;
    result.w = v.w;
    return result;
}
float4 operator.xwyw(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.y;
    result.w = v.w;
    return result;
}

/* Functions named operator+ */
native int operator+(int, int);
native uint operator+(uint, uint);
native float operator+(float, float);
uint2 operator+(uint2 a, uint2 b) {
    uint2 result;
    result[0] = a[0] + b[0];
    result[1] = a[1] + b[1];
    return result;
}
uint3 operator+(uint3 a, uint3 b) {
    uint3 result;
    result[0] = a[0] + b[0];
    result[1] = a[1] + b[1];
    result[2] = a[2] + b[2];
    return result;
}
uint4 operator+(uint4 a, uint4 b) {
    uint4 result;
    result[0] = a[0] + b[0];
    result[1] = a[1] + b[1];
    result[2] = a[2] + b[2];
    result[3] = a[3] + b[3];
    return result;
}
int2 operator+(int2 a, int2 b) {
    int2 result;
    result[0] = a[0] + b[0];
    result[1] = a[1] + b[1];
    return result;
}
int3 operator+(int3 a, int3 b) {
    int3 result;
    result[0] = a[0] + b[0];
    result[1] = a[1] + b[1];
    result[2] = a[2] + b[2];
    return result;
}
int4 operator+(int4 a, int4 b) {
    int4 result;
    result[0] = a[0] + b[0];
    result[1] = a[1] + b[1];
    result[2] = a[2] + b[2];
    result[3] = a[3] + b[3];
    return result;
}
float2 operator+(float2 a, float2 b) {
    float2 result;
    result[0] = a[0] + b[0];
    result[1] = a[1] + b[1];
    return result;
}
float3 operator+(float3 a, float3 b) {
    float3 result;
    result[0] = a[0] + b[0];
    result[1] = a[1] + b[1];
    result[2] = a[2] + b[2];
    return result;
}
float4 operator+(float4 a, float4 b) {
    float4 result;
    result[0] = a[0] + b[0];
    result[1] = a[1] + b[1];
    result[2] = a[2] + b[2];
    result[3] = a[3] + b[3];
    return result;
}
float2x2 operator+(float2x2 a, float2x2 b) {
    float2x2 result;
    result[0][0] = a[0][0] + b[0][0];
    result[0][1] = a[0][1] + b[0][1];
    result[1][0] = a[1][0] + b[1][0];
    result[1][1] = a[1][1] + b[1][1];
    return result;
}
float2x3 operator+(float2x3 a, float2x3 b) {
    float2x3 result;
    result[0][0] = a[0][0] + b[0][0];
    result[0][1] = a[0][1] + b[0][1];
    result[0][2] = a[0][2] + b[0][2];
    result[1][0] = a[1][0] + b[1][0];
    result[1][1] = a[1][1] + b[1][1];
    result[1][2] = a[1][2] + b[1][2];
    return result;
}
float2x4 operator+(float2x4 a, float2x4 b) {
    float2x4 result;
    result[0][0] = a[0][0] + b[0][0];
    result[0][1] = a[0][1] + b[0][1];
    result[0][2] = a[0][2] + b[0][2];
    result[0][3] = a[0][3] + b[0][3];
    result[1][0] = a[1][0] + b[1][0];
    result[1][1] = a[1][1] + b[1][1];
    result[1][2] = a[1][2] + b[1][2];
    result[1][3] = a[1][3] + b[1][3];
    return result;
}
float3x2 operator+(float3x2 a, float3x2 b) {
    float3x2 result;
    result[0][0] = a[0][0] + b[0][0];
    result[0][1] = a[0][1] + b[0][1];
    result[1][0] = a[1][0] + b[1][0];
    result[1][1] = a[1][1] + b[1][1];
    result[2][0] = a[2][0] + b[2][0];
    result[2][1] = a[2][1] + b[2][1];
    return result;
}
float3x3 operator+(float3x3 a, float3x3 b) {
    float3x3 result;
    result[0][0] = a[0][0] + b[0][0];
    result[0][1] = a[0][1] + b[0][1];
    result[0][2] = a[0][2] + b[0][2];
    result[1][0] = a[1][0] + b[1][0];
    result[1][1] = a[1][1] + b[1][1];
    result[1][2] = a[1][2] + b[1][2];
    result[2][0] = a[2][0] + b[2][0];
    result[2][1] = a[2][1] + b[2][1];
    result[2][2] = a[2][2] + b[2][2];
    return result;
}
float3x4 operator+(float3x4 a, float3x4 b) {
    float3x4 result;
    result[0][0] = a[0][0] + b[0][0];
    result[0][1] = a[0][1] + b[0][1];
    result[0][2] = a[0][2] + b[0][2];
    result[0][3] = a[0][3] + b[0][3];
    result[1][0] = a[1][0] + b[1][0];
    result[1][1] = a[1][1] + b[1][1];
    result[1][2] = a[1][2] + b[1][2];
    result[1][3] = a[1][3] + b[1][3];
    result[2][0] = a[2][0] + b[2][0];
    result[2][1] = a[2][1] + b[2][1];
    result[2][2] = a[2][2] + b[2][2];
    result[2][3] = a[2][3] + b[2][3];
    return result;
}
float4x2 operator+(float4x2 a, float4x2 b) {
    float4x2 result;
    result[0][0] = a[0][0] + b[0][0];
    result[0][1] = a[0][1] + b[0][1];
    result[1][0] = a[1][0] + b[1][0];
    result[1][1] = a[1][1] + b[1][1];
    result[2][0] = a[2][0] + b[2][0];
    result[2][1] = a[2][1] + b[2][1];
    result[3][0] = a[3][0] + b[3][0];
    result[3][1] = a[3][1] + b[3][1];
    return result;
}
float4x3 operator+(float4x3 a, float4x3 b) {
    float4x3 result;
    result[0][0] = a[0][0] + b[0][0];
    result[0][1] = a[0][1] + b[0][1];
    result[0][2] = a[0][2] + b[0][2];
    result[1][0] = a[1][0] + b[1][0];
    result[1][1] = a[1][1] + b[1][1];
    result[1][2] = a[1][2] + b[1][2];
    result[2][0] = a[2][0] + b[2][0];
    result[2][1] = a[2][1] + b[2][1];
    result[2][2] = a[2][2] + b[2][2];
    result[3][0] = a[3][0] + b[3][0];
    result[3][1] = a[3][1] + b[3][1];
    result[3][2] = a[3][2] + b[3][2];
    return result;
}
float4x4 operator+(float4x4 a, float4x4 b) {
    float4x4 result;
    result[0][0] = a[0][0] + b[0][0];
    result[0][1] = a[0][1] + b[0][1];
    result[0][2] = a[0][2] + b[0][2];
    result[0][3] = a[0][3] + b[0][3];
    result[1][0] = a[1][0] + b[1][0];
    result[1][1] = a[1][1] + b[1][1];
    result[1][2] = a[1][2] + b[1][2];
    result[1][3] = a[1][3] + b[1][3];
    result[2][0] = a[2][0] + b[2][0];
    result[2][1] = a[2][1] + b[2][1];
    result[2][2] = a[2][2] + b[2][2];
    result[2][3] = a[2][3] + b[2][3];
    result[3][0] = a[3][0] + b[3][0];
    result[3][1] = a[3][1] + b[3][1];
    result[3][2] = a[3][2] + b[3][2];
    result[3][3] = a[3][3] + b[3][3];
    return result;
}

/* Functions named operator.zxx */
bool3 operator.zxx(bool3 v) {
    bool3 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    return result;
}
bool3 operator.zxx(bool4 v) {
    bool3 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    return result;
}
uint3 operator.zxx(uint3 v) {
    uint3 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    return result;
}
uint3 operator.zxx(uint4 v) {
    uint3 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    return result;
}
int3 operator.zxx(int3 v) {
    int3 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    return result;
}
int3 operator.zxx(int4 v) {
    int3 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    return result;
}
float3 operator.zxx(float3 v) {
    float3 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    return result;
}
float3 operator.zxx(float4 v) {
    float3 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.x;
    return result;
}

/* Functions named operator.xxyx */
bool4 operator.xxyx(bool2 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
bool4 operator.xxyx(bool3 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
bool4 operator.xxyx(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
uint4 operator.xxyx(uint2 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
uint4 operator.xxyx(uint3 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
uint4 operator.xxyx(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
int4 operator.xxyx(int2 v) {
    int4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
int4 operator.xxyx(int3 v) {
    int4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
int4 operator.xxyx(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
float4 operator.xxyx(float2 v) {
    float4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
float4 operator.xxyx(float3 v) {
    float4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}
float4 operator.xxyx(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.y;
    result.w = v.x;
    return result;
}

/* Functions named operator.xzzw */
bool4 operator.xzzw(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    result.w = v.w;
    return result;
}
uint4 operator.xzzw(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    result.w = v.w;
    return result;
}
int4 operator.xzzw(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    result.w = v.w;
    return result;
}
float4 operator.xzzw(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    result.w = v.w;
    return result;
}

/* Functions named operator.xywz= */
bool4 operator.xywz=(bool4 v, bool4 c) {
    bool4 result = v;
    result.x = c.x;
    result.y = c.y;
    result.w = c.z;
    result.z = c.w;
    return result;
}
uint4 operator.xywz=(uint4 v, uint4 c) {
    uint4 result = v;
    result.x = c.x;
    result.y = c.y;
    result.w = c.z;
    result.z = c.w;
    return result;
}
int4 operator.xywz=(int4 v, int4 c) {
    int4 result = v;
    result.x = c.x;
    result.y = c.y;
    result.w = c.z;
    result.z = c.w;
    return result;
}
float4 operator.xywz=(float4 v, float4 c) {
    float4 result = v;
    result.x = c.x;
    result.y = c.y;
    result.w = c.z;
    result.z = c.w;
    return result;
}

/* Functions named operator.wxxw */
bool4 operator.wxxw(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.x;
    result.w = v.w;
    return result;
}
uint4 operator.wxxw(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.x;
    result.w = v.w;
    return result;
}
int4 operator.wxxw(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.x;
    result.w = v.w;
    return result;
}
float4 operator.wxxw(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.x;
    result.w = v.w;
    return result;
}

/* Functions named operator.wzyx */
bool4 operator.wzyx(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.y;
    result.w = v.x;
    return result;
}
uint4 operator.wzyx(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.y;
    result.w = v.x;
    return result;
}
int4 operator.wzyx(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.y;
    result.w = v.x;
    return result;
}
float4 operator.wzyx(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.y;
    result.w = v.x;
    return result;
}

/* Functions named frac */
float frac(float x) {
    return x - floor(x);
}
float2 frac(float2 x) {
    float2 result;
    result[0] = frac(x[0]);
    result[1] = frac(x[1]);
    return result;
}
float3 frac(float3 x) {
    float3 result;
    result[0] = frac(x[0]);
    result[1] = frac(x[1]);
    result[2] = frac(x[2]);
    return result;
}
float4 frac(float4 x) {
    float4 result;
    result[0] = frac(x[0]);
    result[1] = frac(x[1]);
    result[2] = frac(x[2]);
    result[3] = frac(x[3]);
    return result;
}
float2x2 frac(float2x2 x) {
    float2x2 result;
    result[0][0] = frac(x[0][0]);
    result[0][1] = frac(x[0][1]);
    result[1][0] = frac(x[1][0]);
    result[1][1] = frac(x[1][1]);
    return result;
}
float2x3 frac(float2x3 x) {
    float2x3 result;
    result[0][0] = frac(x[0][0]);
    result[0][1] = frac(x[0][1]);
    result[0][2] = frac(x[0][2]);
    result[1][0] = frac(x[1][0]);
    result[1][1] = frac(x[1][1]);
    result[1][2] = frac(x[1][2]);
    return result;
}
float2x4 frac(float2x4 x) {
    float2x4 result;
    result[0][0] = frac(x[0][0]);
    result[0][1] = frac(x[0][1]);
    result[0][2] = frac(x[0][2]);
    result[0][3] = frac(x[0][3]);
    result[1][0] = frac(x[1][0]);
    result[1][1] = frac(x[1][1]);
    result[1][2] = frac(x[1][2]);
    result[1][3] = frac(x[1][3]);
    return result;
}
float3x2 frac(float3x2 x) {
    float3x2 result;
    result[0][0] = frac(x[0][0]);
    result[0][1] = frac(x[0][1]);
    result[1][0] = frac(x[1][0]);
    result[1][1] = frac(x[1][1]);
    result[2][0] = frac(x[2][0]);
    result[2][1] = frac(x[2][1]);
    return result;
}
float3x3 frac(float3x3 x) {
    float3x3 result;
    result[0][0] = frac(x[0][0]);
    result[0][1] = frac(x[0][1]);
    result[0][2] = frac(x[0][2]);
    result[1][0] = frac(x[1][0]);
    result[1][1] = frac(x[1][1]);
    result[1][2] = frac(x[1][2]);
    result[2][0] = frac(x[2][0]);
    result[2][1] = frac(x[2][1]);
    result[2][2] = frac(x[2][2]);
    return result;
}
float3x4 frac(float3x4 x) {
    float3x4 result;
    result[0][0] = frac(x[0][0]);
    result[0][1] = frac(x[0][1]);
    result[0][2] = frac(x[0][2]);
    result[0][3] = frac(x[0][3]);
    result[1][0] = frac(x[1][0]);
    result[1][1] = frac(x[1][1]);
    result[1][2] = frac(x[1][2]);
    result[1][3] = frac(x[1][3]);
    result[2][0] = frac(x[2][0]);
    result[2][1] = frac(x[2][1]);
    result[2][2] = frac(x[2][2]);
    result[2][3] = frac(x[2][3]);
    return result;
}
float4x2 frac(float4x2 x) {
    float4x2 result;
    result[0][0] = frac(x[0][0]);
    result[0][1] = frac(x[0][1]);
    result[1][0] = frac(x[1][0]);
    result[1][1] = frac(x[1][1]);
    result[2][0] = frac(x[2][0]);
    result[2][1] = frac(x[2][1]);
    result[3][0] = frac(x[3][0]);
    result[3][1] = frac(x[3][1]);
    return result;
}
float4x3 frac(float4x3 x) {
    float4x3 result;
    result[0][0] = frac(x[0][0]);
    result[0][1] = frac(x[0][1]);
    result[0][2] = frac(x[0][2]);
    result[1][0] = frac(x[1][0]);
    result[1][1] = frac(x[1][1]);
    result[1][2] = frac(x[1][2]);
    result[2][0] = frac(x[2][0]);
    result[2][1] = frac(x[2][1]);
    result[2][2] = frac(x[2][2]);
    result[3][0] = frac(x[3][0]);
    result[3][1] = frac(x[3][1]);
    result[3][2] = frac(x[3][2]);
    return result;
}
float4x4 frac(float4x4 x) {
    float4x4 result;
    result[0][0] = frac(x[0][0]);
    result[0][1] = frac(x[0][1]);
    result[0][2] = frac(x[0][2]);
    result[0][3] = frac(x[0][3]);
    result[1][0] = frac(x[1][0]);
    result[1][1] = frac(x[1][1]);
    result[1][2] = frac(x[1][2]);
    result[1][3] = frac(x[1][3]);
    result[2][0] = frac(x[2][0]);
    result[2][1] = frac(x[2][1]);
    result[2][2] = frac(x[2][2]);
    result[2][3] = frac(x[2][3]);
    result[3][0] = frac(x[3][0]);
    result[3][1] = frac(x[3][1]);
    result[3][2] = frac(x[3][2]);
    result[3][3] = frac(x[3][3]);
    return result;
}

/* Functions named store */
native void store(device atomic_int*, int);
native void store(device atomic_uint*, uint);
native void store(threadgroup atomic_int*, int);
native void store(threadgroup atomic_uint*, uint);


/* Functions named operator.zww */
bool3 operator.zww(bool4 v) {
    bool3 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.w;
    return result;
}
uint3 operator.zww(uint4 v) {
    uint3 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.w;
    return result;
}
int3 operator.zww(int4 v) {
    int3 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.w;
    return result;
}
float3 operator.zww(float4 v) {
    float3 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.w;
    return result;
}

/* Functions named operator.yzzz */
bool4 operator.yzzz(bool3 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    result.w = v.z;
    return result;
}
bool4 operator.yzzz(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    result.w = v.z;
    return result;
}
uint4 operator.yzzz(uint3 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    result.w = v.z;
    return result;
}
uint4 operator.yzzz(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    result.w = v.z;
    return result;
}
int4 operator.yzzz(int3 v) {
    int4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    result.w = v.z;
    return result;
}
int4 operator.yzzz(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    result.w = v.z;
    return result;
}
float4 operator.yzzz(float3 v) {
    float4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    result.w = v.z;
    return result;
}
float4 operator.yzzz(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.z;
    result.w = v.z;
    return result;
}

/* Functions named refract */
float refract(float i, float n, float eta) {
    float result;
    float k = 1 - eta * eta * (1 - dot(n, i) * dot(n, i));
    if (k < 0)
        return result;
    return eta * i - (eta * dot(n, i) + sqrt(k)) * n;
}
float2 refract(float2 i, float2 n, float eta) {
    float2 result;
    float k = 1 - eta * eta * (1 - dot(n, i) * dot(n, i));
    if (k < 0)
        return result;
    return eta * i - (eta * dot(n, i) + sqrt(k)) * n;
}
float3 refract(float3 i, float3 n, float eta) {
    float3 result;
    float k = 1 - eta * eta * (1 - dot(n, i) * dot(n, i));
    if (k < 0)
        return result;
    return eta * i - (eta * dot(n, i) + sqrt(k)) * n;
}
float4 refract(float4 i, float4 n, float eta) {
    float4 result;
    float k = 1 - eta * eta * (1 - dot(n, i) * dot(n, i));
    if (k < 0)
        return result;
    return eta * i - (eta * dot(n, i) + sqrt(k)) * n;
}


/* Functions named operator.zxyw */
bool4 operator.zxyw(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    result.w = v.w;
    return result;
}
uint4 operator.zxyw(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    result.w = v.w;
    return result;
}
int4 operator.zxyw(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    result.w = v.w;
    return result;
}
float4 operator.zxyw(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    result.w = v.w;
    return result;
}

/* Functions named operator.wzw */
bool3 operator.wzw(bool4 v) {
    bool3 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.w;
    return result;
}
uint3 operator.wzw(uint4 v) {
    uint3 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.w;
    return result;
}
int3 operator.wzw(int4 v) {
    int3 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.w;
    return result;
}
float3 operator.wzw(float4 v) {
    float3 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.w;
    return result;
}

/* Functions named operator.zwzz */
bool4 operator.zwzz(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.z;
    result.w = v.z;
    return result;
}
uint4 operator.zwzz(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.z;
    result.w = v.z;
    return result;
}
int4 operator.zwzz(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.z;
    result.w = v.z;
    return result;
}
float4 operator.zwzz(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.z;
    result.w = v.z;
    return result;
}

/* Functions named log10 */
float log10(float x) {
    return log(x) / log(float(10));
}
float2 log10(float2 x) {
    float2 result;
    result[0] = log10(x[0]);
    result[1] = log10(x[1]);
    return result;
}
float3 log10(float3 x) {
    float3 result;
    result[0] = log10(x[0]);
    result[1] = log10(x[1]);
    result[2] = log10(x[2]);
    return result;
}
float4 log10(float4 x) {
    float4 result;
    result[0] = log10(x[0]);
    result[1] = log10(x[1]);
    result[2] = log10(x[2]);
    result[3] = log10(x[3]);
    return result;
}
float2x2 log10(float2x2 x) {
    float2x2 result;
    result[0][0] = log10(x[0][0]);
    result[0][1] = log10(x[0][1]);
    result[1][0] = log10(x[1][0]);
    result[1][1] = log10(x[1][1]);
    return result;
}
float2x3 log10(float2x3 x) {
    float2x3 result;
    result[0][0] = log10(x[0][0]);
    result[0][1] = log10(x[0][1]);
    result[0][2] = log10(x[0][2]);
    result[1][0] = log10(x[1][0]);
    result[1][1] = log10(x[1][1]);
    result[1][2] = log10(x[1][2]);
    return result;
}
float2x4 log10(float2x4 x) {
    float2x4 result;
    result[0][0] = log10(x[0][0]);
    result[0][1] = log10(x[0][1]);
    result[0][2] = log10(x[0][2]);
    result[0][3] = log10(x[0][3]);
    result[1][0] = log10(x[1][0]);
    result[1][1] = log10(x[1][1]);
    result[1][2] = log10(x[1][2]);
    result[1][3] = log10(x[1][3]);
    return result;
}
float3x2 log10(float3x2 x) {
    float3x2 result;
    result[0][0] = log10(x[0][0]);
    result[0][1] = log10(x[0][1]);
    result[1][0] = log10(x[1][0]);
    result[1][1] = log10(x[1][1]);
    result[2][0] = log10(x[2][0]);
    result[2][1] = log10(x[2][1]);
    return result;
}
float3x3 log10(float3x3 x) {
    float3x3 result;
    result[0][0] = log10(x[0][0]);
    result[0][1] = log10(x[0][1]);
    result[0][2] = log10(x[0][2]);
    result[1][0] = log10(x[1][0]);
    result[1][1] = log10(x[1][1]);
    result[1][2] = log10(x[1][2]);
    result[2][0] = log10(x[2][0]);
    result[2][1] = log10(x[2][1]);
    result[2][2] = log10(x[2][2]);
    return result;
}
float3x4 log10(float3x4 x) {
    float3x4 result;
    result[0][0] = log10(x[0][0]);
    result[0][1] = log10(x[0][1]);
    result[0][2] = log10(x[0][2]);
    result[0][3] = log10(x[0][3]);
    result[1][0] = log10(x[1][0]);
    result[1][1] = log10(x[1][1]);
    result[1][2] = log10(x[1][2]);
    result[1][3] = log10(x[1][3]);
    result[2][0] = log10(x[2][0]);
    result[2][1] = log10(x[2][1]);
    result[2][2] = log10(x[2][2]);
    result[2][3] = log10(x[2][3]);
    return result;
}
float4x2 log10(float4x2 x) {
    float4x2 result;
    result[0][0] = log10(x[0][0]);
    result[0][1] = log10(x[0][1]);
    result[1][0] = log10(x[1][0]);
    result[1][1] = log10(x[1][1]);
    result[2][0] = log10(x[2][0]);
    result[2][1] = log10(x[2][1]);
    result[3][0] = log10(x[3][0]);
    result[3][1] = log10(x[3][1]);
    return result;
}
float4x3 log10(float4x3 x) {
    float4x3 result;
    result[0][0] = log10(x[0][0]);
    result[0][1] = log10(x[0][1]);
    result[0][2] = log10(x[0][2]);
    result[1][0] = log10(x[1][0]);
    result[1][1] = log10(x[1][1]);
    result[1][2] = log10(x[1][2]);
    result[2][0] = log10(x[2][0]);
    result[2][1] = log10(x[2][1]);
    result[2][2] = log10(x[2][2]);
    result[3][0] = log10(x[3][0]);
    result[3][1] = log10(x[3][1]);
    result[3][2] = log10(x[3][2]);
    return result;
}
float4x4 log10(float4x4 x) {
    float4x4 result;
    result[0][0] = log10(x[0][0]);
    result[0][1] = log10(x[0][1]);
    result[0][2] = log10(x[0][2]);
    result[0][3] = log10(x[0][3]);
    result[1][0] = log10(x[1][0]);
    result[1][1] = log10(x[1][1]);
    result[1][2] = log10(x[1][2]);
    result[1][3] = log10(x[1][3]);
    result[2][0] = log10(x[2][0]);
    result[2][1] = log10(x[2][1]);
    result[2][2] = log10(x[2][2]);
    result[2][3] = log10(x[2][3]);
    result[3][0] = log10(x[3][0]);
    result[3][1] = log10(x[3][1]);
    result[3][2] = log10(x[3][2]);
    result[3][3] = log10(x[3][3]);
    return result;
}

/* Functions named operator/ */
native int operator/(int, int);
native uint operator/(uint, uint);
native float operator/(float, float);
uint2 operator/(uint2 a, uint2 b) {
    uint2 result;
    result[0] = a[0] / b[0];
    result[1] = a[1] / b[1];
    return result;
}
uint2 operator/(uint2 a, uint b) {
    uint2 result;
    result[0] = a[0] / b;
    result[1] = a[1] / b;
    return result;
}
uint2 operator/(uint a, uint2 b) {
    uint2 result;
    result[0] = a / b[0];
    result[1] = a / b[1];
    return result;
}
uint3 operator/(uint3 a, uint3 b) {
    uint3 result;
    result[0] = a[0] / b[0];
    result[1] = a[1] / b[1];
    result[2] = a[2] / b[2];
    return result;
}
uint3 operator/(uint3 a, uint b) {
    uint3 result;
    result[0] = a[0] / b;
    result[1] = a[1] / b;
    result[2] = a[2] / b;
    return result;
}
uint3 operator/(uint a, uint3 b) {
    uint3 result;
    result[0] = a / b[0];
    result[1] = a / b[1];
    result[2] = a / b[2];
    return result;
}
uint4 operator/(uint4 a, uint4 b) {
    uint4 result;
    result[0] = a[0] / b[0];
    result[1] = a[1] / b[1];
    result[2] = a[2] / b[2];
    result[3] = a[3] / b[3];
    return result;
}
uint4 operator/(uint4 a, uint b) {
    uint4 result;
    result[0] = a[0] / b;
    result[1] = a[1] / b;
    result[2] = a[2] / b;
    result[3] = a[3] / b;
    return result;
}
uint4 operator/(uint a, uint4 b) {
    uint4 result;
    result[0] = a / b[0];
    result[1] = a / b[1];
    result[2] = a / b[2];
    result[3] = a / b[3];
    return result;
}
int2 operator/(int2 a, int2 b) {
    int2 result;
    result[0] = a[0] / b[0];
    result[1] = a[1] / b[1];
    return result;
}
int2 operator/(int2 a, int b) {
    int2 result;
    result[0] = a[0] / b;
    result[1] = a[1] / b;
    return result;
}
int2 operator/(int a, int2 b) {
    int2 result;
    result[0] = a / b[0];
    result[1] = a / b[1];
    return result;
}
int3 operator/(int3 a, int3 b) {
    int3 result;
    result[0] = a[0] / b[0];
    result[1] = a[1] / b[1];
    result[2] = a[2] / b[2];
    return result;
}
int3 operator/(int3 a, int b) {
    int3 result;
    result[0] = a[0] / b;
    result[1] = a[1] / b;
    result[2] = a[2] / b;
    return result;
}
int3 operator/(int a, int3 b) {
    int3 result;
    result[0] = a / b[0];
    result[1] = a / b[1];
    result[2] = a / b[2];
    return result;
}
int4 operator/(int4 a, int4 b) {
    int4 result;
    result[0] = a[0] / b[0];
    result[1] = a[1] / b[1];
    result[2] = a[2] / b[2];
    result[3] = a[3] / b[3];
    return result;
}
int4 operator/(int4 a, int b) {
    int4 result;
    result[0] = a[0] / b;
    result[1] = a[1] / b;
    result[2] = a[2] / b;
    result[3] = a[3] / b;
    return result;
}
int4 operator/(int a, int4 b) {
    int4 result;
    result[0] = a / b[0];
    result[1] = a / b[1];
    result[2] = a / b[2];
    result[3] = a / b[3];
    return result;
}
float2 operator/(float2 a, float2 b) {
    float2 result;
    result[0] = a[0] / b[0];
    result[1] = a[1] / b[1];
    return result;
}
float2 operator/(float2 a, float b) {
    float2 result;
    result[0] = a[0] / b;
    result[1] = a[1] / b;
    return result;
}
float2 operator/(float a, float2 b) {
    float2 result;
    result[0] = a / b[0];
    result[1] = a / b[1];
    return result;
}
float3 operator/(float3 a, float3 b) {
    float3 result;
    result[0] = a[0] / b[0];
    result[1] = a[1] / b[1];
    result[2] = a[2] / b[2];
    return result;
}
float3 operator/(float3 a, float b) {
    float3 result;
    result[0] = a[0] / b;
    result[1] = a[1] / b;
    result[2] = a[2] / b;
    return result;
}
float3 operator/(float a, float3 b) {
    float3 result;
    result[0] = a / b[0];
    result[1] = a / b[1];
    result[2] = a / b[2];
    return result;
}
float4 operator/(float4 a, float4 b) {
    float4 result;
    result[0] = a[0] / b[0];
    result[1] = a[1] / b[1];
    result[2] = a[2] / b[2];
    result[3] = a[3] / b[3];
    return result;
}
float4 operator/(float4 a, float b) {
    float4 result;
    result[0] = a[0] / b;
    result[1] = a[1] / b;
    result[2] = a[2] / b;
    result[3] = a[3] / b;
    return result;
}
float4 operator/(float a, float4 b) {
    float4 result;
    result[0] = a / b[0];
    result[1] = a / b[1];
    result[2] = a / b[2];
    result[3] = a / b[3];
    return result;
}
float2x2 operator/(float2x2 a, float2x2 b) {
    float2x2 result;
    result[0][0] = a[0][0] / b[0][0];
    result[0][1] = a[0][1] / b[0][1];
    result[1][0] = a[1][0] / b[1][0];
    result[1][1] = a[1][1] / b[1][1];
    return result;
}
float2x2 operator/(float2x2 a, float b) {
    float2x2 result;
    result[0][0] = a[0][0] / b;
    result[0][1] = a[0][1] / b;
    result[1][0] = a[1][0] / b;
    result[1][1] = a[1][1] / b;
    return result;
}
float2x2 operator/(float a, float2x2 b) {
    float2x2 result;
    result[0][0] = a / b[0][0];
    result[0][1] = a / b[0][1];
    result[1][0] = a / b[1][0];
    result[1][1] = a / b[1][1];
    return result;
}
float2x3 operator/(float2x3 a, float2x3 b) {
    float2x3 result;
    result[0][0] = a[0][0] / b[0][0];
    result[0][1] = a[0][1] / b[0][1];
    result[0][2] = a[0][2] / b[0][2];
    result[1][0] = a[1][0] / b[1][0];
    result[1][1] = a[1][1] / b[1][1];
    result[1][2] = a[1][2] / b[1][2];
    return result;
}
float2x3 operator/(float2x3 a, float b) {
    float2x3 result;
    result[0][0] = a[0][0] / b;
    result[0][1] = a[0][1] / b;
    result[0][2] = a[0][2] / b;
    result[1][0] = a[1][0] / b;
    result[1][1] = a[1][1] / b;
    result[1][2] = a[1][2] / b;
    return result;
}
float2x3 operator/(float a, float2x3 b) {
    float2x3 result;
    result[0][0] = a / b[0][0];
    result[0][1] = a / b[0][1];
    result[0][2] = a / b[0][2];
    result[1][0] = a / b[1][0];
    result[1][1] = a / b[1][1];
    result[1][2] = a / b[1][2];
    return result;
}
float2x4 operator/(float2x4 a, float2x4 b) {
    float2x4 result;
    result[0][0] = a[0][0] / b[0][0];
    result[0][1] = a[0][1] / b[0][1];
    result[0][2] = a[0][2] / b[0][2];
    result[0][3] = a[0][3] / b[0][3];
    result[1][0] = a[1][0] / b[1][0];
    result[1][1] = a[1][1] / b[1][1];
    result[1][2] = a[1][2] / b[1][2];
    result[1][3] = a[1][3] / b[1][3];
    return result;
}
float2x4 operator/(float2x4 a, float b) {
    float2x4 result;
    result[0][0] = a[0][0] / b;
    result[0][1] = a[0][1] / b;
    result[0][2] = a[0][2] / b;
    result[0][3] = a[0][3] / b;
    result[1][0] = a[1][0] / b;
    result[1][1] = a[1][1] / b;
    result[1][2] = a[1][2] / b;
    result[1][3] = a[1][3] / b;
    return result;
}
float2x4 operator/(float a, float2x4 b) {
    float2x4 result;
    result[0][0] = a / b[0][0];
    result[0][1] = a / b[0][1];
    result[0][2] = a / b[0][2];
    result[0][3] = a / b[0][3];
    result[1][0] = a / b[1][0];
    result[1][1] = a / b[1][1];
    result[1][2] = a / b[1][2];
    result[1][3] = a / b[1][3];
    return result;
}
float3x2 operator/(float3x2 a, float3x2 b) {
    float3x2 result;
    result[0][0] = a[0][0] / b[0][0];
    result[0][1] = a[0][1] / b[0][1];
    result[1][0] = a[1][0] / b[1][0];
    result[1][1] = a[1][1] / b[1][1];
    result[2][0] = a[2][0] / b[2][0];
    result[2][1] = a[2][1] / b[2][1];
    return result;
}
float3x2 operator/(float3x2 a, float b) {
    float3x2 result;
    result[0][0] = a[0][0] / b;
    result[0][1] = a[0][1] / b;
    result[1][0] = a[1][0] / b;
    result[1][1] = a[1][1] / b;
    result[2][0] = a[2][0] / b;
    result[2][1] = a[2][1] / b;
    return result;
}
float3x2 operator/(float a, float3x2 b) {
    float3x2 result;
    result[0][0] = a / b[0][0];
    result[0][1] = a / b[0][1];
    result[1][0] = a / b[1][0];
    result[1][1] = a / b[1][1];
    result[2][0] = a / b[2][0];
    result[2][1] = a / b[2][1];
    return result;
}
float3x3 operator/(float3x3 a, float3x3 b) {
    float3x3 result;
    result[0][0] = a[0][0] / b[0][0];
    result[0][1] = a[0][1] / b[0][1];
    result[0][2] = a[0][2] / b[0][2];
    result[1][0] = a[1][0] / b[1][0];
    result[1][1] = a[1][1] / b[1][1];
    result[1][2] = a[1][2] / b[1][2];
    result[2][0] = a[2][0] / b[2][0];
    result[2][1] = a[2][1] / b[2][1];
    result[2][2] = a[2][2] / b[2][2];
    return result;
}
float3x3 operator/(float3x3 a, float b) {
    float3x3 result;
    result[0][0] = a[0][0] / b;
    result[0][1] = a[0][1] / b;
    result[0][2] = a[0][2] / b;
    result[1][0] = a[1][0] / b;
    result[1][1] = a[1][1] / b;
    result[1][2] = a[1][2] / b;
    result[2][0] = a[2][0] / b;
    result[2][1] = a[2][1] / b;
    result[2][2] = a[2][2] / b;
    return result;
}
float3x3 operator/(float a, float3x3 b) {
    float3x3 result;
    result[0][0] = a / b[0][0];
    result[0][1] = a / b[0][1];
    result[0][2] = a / b[0][2];
    result[1][0] = a / b[1][0];
    result[1][1] = a / b[1][1];
    result[1][2] = a / b[1][2];
    result[2][0] = a / b[2][0];
    result[2][1] = a / b[2][1];
    result[2][2] = a / b[2][2];
    return result;
}
float3x4 operator/(float3x4 a, float3x4 b) {
    float3x4 result;
    result[0][0] = a[0][0] / b[0][0];
    result[0][1] = a[0][1] / b[0][1];
    result[0][2] = a[0][2] / b[0][2];
    result[0][3] = a[0][3] / b[0][3];
    result[1][0] = a[1][0] / b[1][0];
    result[1][1] = a[1][1] / b[1][1];
    result[1][2] = a[1][2] / b[1][2];
    result[1][3] = a[1][3] / b[1][3];
    result[2][0] = a[2][0] / b[2][0];
    result[2][1] = a[2][1] / b[2][1];
    result[2][2] = a[2][2] / b[2][2];
    result[2][3] = a[2][3] / b[2][3];
    return result;
}
float3x4 operator/(float3x4 a, float b) {
    float3x4 result;
    result[0][0] = a[0][0] / b;
    result[0][1] = a[0][1] / b;
    result[0][2] = a[0][2] / b;
    result[0][3] = a[0][3] / b;
    result[1][0] = a[1][0] / b;
    result[1][1] = a[1][1] / b;
    result[1][2] = a[1][2] / b;
    result[1][3] = a[1][3] / b;
    result[2][0] = a[2][0] / b;
    result[2][1] = a[2][1] / b;
    result[2][2] = a[2][2] / b;
    result[2][3] = a[2][3] / b;
    return result;
}
float3x4 operator/(float a, float3x4 b) {
    float3x4 result;
    result[0][0] = a / b[0][0];
    result[0][1] = a / b[0][1];
    result[0][2] = a / b[0][2];
    result[0][3] = a / b[0][3];
    result[1][0] = a / b[1][0];
    result[1][1] = a / b[1][1];
    result[1][2] = a / b[1][2];
    result[1][3] = a / b[1][3];
    result[2][0] = a / b[2][0];
    result[2][1] = a / b[2][1];
    result[2][2] = a / b[2][2];
    result[2][3] = a / b[2][3];
    return result;
}
float4x2 operator/(float4x2 a, float4x2 b) {
    float4x2 result;
    result[0][0] = a[0][0] / b[0][0];
    result[0][1] = a[0][1] / b[0][1];
    result[1][0] = a[1][0] / b[1][0];
    result[1][1] = a[1][1] / b[1][1];
    result[2][0] = a[2][0] / b[2][0];
    result[2][1] = a[2][1] / b[2][1];
    result[3][0] = a[3][0] / b[3][0];
    result[3][1] = a[3][1] / b[3][1];
    return result;
}
float4x2 operator/(float4x2 a, float b) {
    float4x2 result;
    result[0][0] = a[0][0] / b;
    result[0][1] = a[0][1] / b;
    result[1][0] = a[1][0] / b;
    result[1][1] = a[1][1] / b;
    result[2][0] = a[2][0] / b;
    result[2][1] = a[2][1] / b;
    result[3][0] = a[3][0] / b;
    result[3][1] = a[3][1] / b;
    return result;
}
float4x2 operator/(float a, float4x2 b) {
    float4x2 result;
    result[0][0] = a / b[0][0];
    result[0][1] = a / b[0][1];
    result[1][0] = a / b[1][0];
    result[1][1] = a / b[1][1];
    result[2][0] = a / b[2][0];
    result[2][1] = a / b[2][1];
    result[3][0] = a / b[3][0];
    result[3][1] = a / b[3][1];
    return result;
}
float4x3 operator/(float4x3 a, float4x3 b) {
    float4x3 result;
    result[0][0] = a[0][0] / b[0][0];
    result[0][1] = a[0][1] / b[0][1];
    result[0][2] = a[0][2] / b[0][2];
    result[1][0] = a[1][0] / b[1][0];
    result[1][1] = a[1][1] / b[1][1];
    result[1][2] = a[1][2] / b[1][2];
    result[2][0] = a[2][0] / b[2][0];
    result[2][1] = a[2][1] / b[2][1];
    result[2][2] = a[2][2] / b[2][2];
    result[3][0] = a[3][0] / b[3][0];
    result[3][1] = a[3][1] / b[3][1];
    result[3][2] = a[3][2] / b[3][2];
    return result;
}
float4x3 operator/(float4x3 a, float b) {
    float4x3 result;
    result[0][0] = a[0][0] / b;
    result[0][1] = a[0][1] / b;
    result[0][2] = a[0][2] / b;
    result[1][0] = a[1][0] / b;
    result[1][1] = a[1][1] / b;
    result[1][2] = a[1][2] / b;
    result[2][0] = a[2][0] / b;
    result[2][1] = a[2][1] / b;
    result[2][2] = a[2][2] / b;
    result[3][0] = a[3][0] / b;
    result[3][1] = a[3][1] / b;
    result[3][2] = a[3][2] / b;
    return result;
}
float4x3 operator/(float a, float4x3 b) {
    float4x3 result;
    result[0][0] = a / b[0][0];
    result[0][1] = a / b[0][1];
    result[0][2] = a / b[0][2];
    result[1][0] = a / b[1][0];
    result[1][1] = a / b[1][1];
    result[1][2] = a / b[1][2];
    result[2][0] = a / b[2][0];
    result[2][1] = a / b[2][1];
    result[2][2] = a / b[2][2];
    result[3][0] = a / b[3][0];
    result[3][1] = a / b[3][1];
    result[3][2] = a / b[3][2];
    return result;
}
float4x4 operator/(float4x4 a, float4x4 b) {
    float4x4 result;
    result[0][0] = a[0][0] / b[0][0];
    result[0][1] = a[0][1] / b[0][1];
    result[0][2] = a[0][2] / b[0][2];
    result[0][3] = a[0][3] / b[0][3];
    result[1][0] = a[1][0] / b[1][0];
    result[1][1] = a[1][1] / b[1][1];
    result[1][2] = a[1][2] / b[1][2];
    result[1][3] = a[1][3] / b[1][3];
    result[2][0] = a[2][0] / b[2][0];
    result[2][1] = a[2][1] / b[2][1];
    result[2][2] = a[2][2] / b[2][2];
    result[2][3] = a[2][3] / b[2][3];
    result[3][0] = a[3][0] / b[3][0];
    result[3][1] = a[3][1] / b[3][1];
    result[3][2] = a[3][2] / b[3][2];
    result[3][3] = a[3][3] / b[3][3];
    return result;
}
float4x4 operator/(float4x4 a, float b) {
    float4x4 result;
    result[0][0] = a[0][0] / b;
    result[0][1] = a[0][1] / b;
    result[0][2] = a[0][2] / b;
    result[0][3] = a[0][3] / b;
    result[1][0] = a[1][0] / b;
    result[1][1] = a[1][1] / b;
    result[1][2] = a[1][2] / b;
    result[1][3] = a[1][3] / b;
    result[2][0] = a[2][0] / b;
    result[2][1] = a[2][1] / b;
    result[2][2] = a[2][2] / b;
    result[2][3] = a[2][3] / b;
    result[3][0] = a[3][0] / b;
    result[3][1] = a[3][1] / b;
    result[3][2] = a[3][2] / b;
    result[3][3] = a[3][3] / b;
    return result;
}
float4x4 operator/(float a, float4x4 b) {
    float4x4 result;
    result[0][0] = a / b[0][0];
    result[0][1] = a / b[0][1];
    result[0][2] = a / b[0][2];
    result[0][3] = a / b[0][3];
    result[1][0] = a / b[1][0];
    result[1][1] = a / b[1][1];
    result[1][2] = a / b[1][2];
    result[1][3] = a / b[1][3];
    result[2][0] = a / b[2][0];
    result[2][1] = a / b[2][1];
    result[2][2] = a / b[2][2];
    result[2][3] = a / b[2][3];
    result[3][0] = a / b[3][0];
    result[3][1] = a / b[3][1];
    result[3][2] = a / b[3][2];
    result[3][3] = a / b[3][3];
    return result;
}

/* Functions named operator.xwzx */
bool4 operator.xwzx(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.z;
    result.w = v.x;
    return result;
}
uint4 operator.xwzx(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.z;
    result.w = v.x;
    return result;
}
int4 operator.xwzx(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.z;
    result.w = v.x;
    return result;
}
float4 operator.xwzx(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.z;
    result.w = v.x;
    return result;
}

/* Functions named operator.zxww */
bool4 operator.zxww(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.w;
    result.w = v.w;
    return result;
}
uint4 operator.zxww(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.w;
    result.w = v.w;
    return result;
}
int4 operator.zxww(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.w;
    result.w = v.w;
    return result;
}
float4 operator.zxww(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.w;
    result.w = v.w;
    return result;
}

/* Functions named operator.wyzx */
bool4 operator.wyzx(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.z;
    result.w = v.x;
    return result;
}
uint4 operator.wyzx(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.z;
    result.w = v.x;
    return result;
}
int4 operator.wyzx(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.z;
    result.w = v.x;
    return result;
}
float4 operator.wyzx(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.z;
    result.w = v.x;
    return result;
}

/* Functions named operator.wy */
bool2 operator.wy(bool4 v) {
    bool2 result;
    result.x = v.w;
    result.y = v.y;
    return result;
}
uint2 operator.wy(uint4 v) {
    uint2 result;
    result.x = v.w;
    result.y = v.y;
    return result;
}
int2 operator.wy(int4 v) {
    int2 result;
    result.x = v.w;
    result.y = v.y;
    return result;
}
float2 operator.wy(float4 v) {
    float2 result;
    result.x = v.w;
    result.y = v.y;
    return result;
}

/* Functions named operator.wzyz */
bool4 operator.wzyz(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.y;
    result.w = v.z;
    return result;
}
uint4 operator.wzyz(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.y;
    result.w = v.z;
    return result;
}
int4 operator.wzyz(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.y;
    result.w = v.z;
    return result;
}
float4 operator.wzyz(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.y;
    result.w = v.z;
    return result;
}

/* Functions named ddy_fine */
float ddy_fine(float x) {
    return ddy(x);
}
float2 ddy_fine(float2 x) {
    float2 result;
    result[0] = ddy_fine(x[0]);
    result[1] = ddy_fine(x[1]);
    return result;
}
float3 ddy_fine(float3 x) {
    float3 result;
    result[0] = ddy_fine(x[0]);
    result[1] = ddy_fine(x[1]);
    result[2] = ddy_fine(x[2]);
    return result;
}
float4 ddy_fine(float4 x) {
    float4 result;
    result[0] = ddy_fine(x[0]);
    result[1] = ddy_fine(x[1]);
    result[2] = ddy_fine(x[2]);
    result[3] = ddy_fine(x[3]);
    return result;
}
float2x2 ddy_fine(float2x2 x) {
    float2x2 result;
    result[0][0] = ddy_fine(x[0][0]);
    result[0][1] = ddy_fine(x[0][1]);
    result[1][0] = ddy_fine(x[1][0]);
    result[1][1] = ddy_fine(x[1][1]);
    return result;
}
float2x3 ddy_fine(float2x3 x) {
    float2x3 result;
    result[0][0] = ddy_fine(x[0][0]);
    result[0][1] = ddy_fine(x[0][1]);
    result[0][2] = ddy_fine(x[0][2]);
    result[1][0] = ddy_fine(x[1][0]);
    result[1][1] = ddy_fine(x[1][1]);
    result[1][2] = ddy_fine(x[1][2]);
    return result;
}
float2x4 ddy_fine(float2x4 x) {
    float2x4 result;
    result[0][0] = ddy_fine(x[0][0]);
    result[0][1] = ddy_fine(x[0][1]);
    result[0][2] = ddy_fine(x[0][2]);
    result[0][3] = ddy_fine(x[0][3]);
    result[1][0] = ddy_fine(x[1][0]);
    result[1][1] = ddy_fine(x[1][1]);
    result[1][2] = ddy_fine(x[1][2]);
    result[1][3] = ddy_fine(x[1][3]);
    return result;
}
float3x2 ddy_fine(float3x2 x) {
    float3x2 result;
    result[0][0] = ddy_fine(x[0][0]);
    result[0][1] = ddy_fine(x[0][1]);
    result[1][0] = ddy_fine(x[1][0]);
    result[1][1] = ddy_fine(x[1][1]);
    result[2][0] = ddy_fine(x[2][0]);
    result[2][1] = ddy_fine(x[2][1]);
    return result;
}
float3x3 ddy_fine(float3x3 x) {
    float3x3 result;
    result[0][0] = ddy_fine(x[0][0]);
    result[0][1] = ddy_fine(x[0][1]);
    result[0][2] = ddy_fine(x[0][2]);
    result[1][0] = ddy_fine(x[1][0]);
    result[1][1] = ddy_fine(x[1][1]);
    result[1][2] = ddy_fine(x[1][2]);
    result[2][0] = ddy_fine(x[2][0]);
    result[2][1] = ddy_fine(x[2][1]);
    result[2][2] = ddy_fine(x[2][2]);
    return result;
}
float3x4 ddy_fine(float3x4 x) {
    float3x4 result;
    result[0][0] = ddy_fine(x[0][0]);
    result[0][1] = ddy_fine(x[0][1]);
    result[0][2] = ddy_fine(x[0][2]);
    result[0][3] = ddy_fine(x[0][3]);
    result[1][0] = ddy_fine(x[1][0]);
    result[1][1] = ddy_fine(x[1][1]);
    result[1][2] = ddy_fine(x[1][2]);
    result[1][3] = ddy_fine(x[1][3]);
    result[2][0] = ddy_fine(x[2][0]);
    result[2][1] = ddy_fine(x[2][1]);
    result[2][2] = ddy_fine(x[2][2]);
    result[2][3] = ddy_fine(x[2][3]);
    return result;
}
float4x2 ddy_fine(float4x2 x) {
    float4x2 result;
    result[0][0] = ddy_fine(x[0][0]);
    result[0][1] = ddy_fine(x[0][1]);
    result[1][0] = ddy_fine(x[1][0]);
    result[1][1] = ddy_fine(x[1][1]);
    result[2][0] = ddy_fine(x[2][0]);
    result[2][1] = ddy_fine(x[2][1]);
    result[3][0] = ddy_fine(x[3][0]);
    result[3][1] = ddy_fine(x[3][1]);
    return result;
}
float4x3 ddy_fine(float4x3 x) {
    float4x3 result;
    result[0][0] = ddy_fine(x[0][0]);
    result[0][1] = ddy_fine(x[0][1]);
    result[0][2] = ddy_fine(x[0][2]);
    result[1][0] = ddy_fine(x[1][0]);
    result[1][1] = ddy_fine(x[1][1]);
    result[1][2] = ddy_fine(x[1][2]);
    result[2][0] = ddy_fine(x[2][0]);
    result[2][1] = ddy_fine(x[2][1]);
    result[2][2] = ddy_fine(x[2][2]);
    result[3][0] = ddy_fine(x[3][0]);
    result[3][1] = ddy_fine(x[3][1]);
    result[3][2] = ddy_fine(x[3][2]);
    return result;
}
float4x4 ddy_fine(float4x4 x) {
    float4x4 result;
    result[0][0] = ddy_fine(x[0][0]);
    result[0][1] = ddy_fine(x[0][1]);
    result[0][2] = ddy_fine(x[0][2]);
    result[0][3] = ddy_fine(x[0][3]);
    result[1][0] = ddy_fine(x[1][0]);
    result[1][1] = ddy_fine(x[1][1]);
    result[1][2] = ddy_fine(x[1][2]);
    result[1][3] = ddy_fine(x[1][3]);
    result[2][0] = ddy_fine(x[2][0]);
    result[2][1] = ddy_fine(x[2][1]);
    result[2][2] = ddy_fine(x[2][2]);
    result[2][3] = ddy_fine(x[2][3]);
    result[3][0] = ddy_fine(x[3][0]);
    result[3][1] = ddy_fine(x[3][1]);
    result[3][2] = ddy_fine(x[3][2]);
    result[3][3] = ddy_fine(x[3][3]);
    return result;
}

/* Functions named operator.xyzx */
bool4 operator.xyzx(bool3 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    result.w = v.x;
    return result;
}
bool4 operator.xyzx(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    result.w = v.x;
    return result;
}
uint4 operator.xyzx(uint3 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    result.w = v.x;
    return result;
}
uint4 operator.xyzx(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    result.w = v.x;
    return result;
}
int4 operator.xyzx(int3 v) {
    int4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    result.w = v.x;
    return result;
}
int4 operator.xyzx(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    result.w = v.x;
    return result;
}
float4 operator.xyzx(float3 v) {
    float4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    result.w = v.x;
    return result;
}
float4 operator.xyzx(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    result.w = v.x;
    return result;
}

/* Functions named operator.wyx= */
bool4 operator.wyx=(bool4 v, bool3 c) {
    bool4 result = v;
    result.w = c.x;
    result.y = c.y;
    result.x = c.z;
    return result;
}
uint4 operator.wyx=(uint4 v, uint3 c) {
    uint4 result = v;
    result.w = c.x;
    result.y = c.y;
    result.x = c.z;
    return result;
}
int4 operator.wyx=(int4 v, int3 c) {
    int4 result = v;
    result.w = c.x;
    result.y = c.y;
    result.x = c.z;
    return result;
}
float4 operator.wyx=(float4 v, float3 c) {
    float4 result = v;
    result.w = c.x;
    result.y = c.y;
    result.x = c.z;
    return result;
}

/* Functions named operator.wzyy */
bool4 operator.wzyy(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.y;
    result.w = v.y;
    return result;
}
uint4 operator.wzyy(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.y;
    result.w = v.y;
    return result;
}
int4 operator.wzyy(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.y;
    result.w = v.y;
    return result;
}
float4 operator.wzyy(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.y;
    result.w = v.y;
    return result;
}

/* Functions named operator.ywz */
bool3 operator.ywz(bool4 v) {
    bool3 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.z;
    return result;
}
uint3 operator.ywz(uint4 v) {
    uint3 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.z;
    return result;
}
int3 operator.ywz(int4 v) {
    int3 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.z;
    return result;
}
float3 operator.ywz(float4 v) {
    float3 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.z;
    return result;
}

/* Functions named any */
bool any(bool x) {
    return x;
}
bool any(bool2 x) {
    bool result = false;
    result = result || (x[0]);
    result = result || (x[1]);
    return result;
}
bool any(bool3 x) {
    bool result = false;
    result = result || (x[0]);
    result = result || (x[1]);
    result = result || (x[2]);
    return result;
}
bool any(bool4 x) {
    bool result = false;
    result = result || (x[0]);
    result = result || (x[1]);
    result = result || (x[2]);
    result = result || (x[3]);
    return result;
}
bool any(uint x) {
    return x != 0;
}
bool any(uint2 x) {
    bool result = false;
    result = result || (x[0] != 0);
    result = result || (x[1] != 0);
    return result;
}
bool any(uint3 x) {
    bool result = false;
    result = result || (x[0] != 0);
    result = result || (x[1] != 0);
    result = result || (x[2] != 0);
    return result;
}
bool any(uint4 x) {
    bool result = false;
    result = result || (x[0] != 0);
    result = result || (x[1] != 0);
    result = result || (x[2] != 0);
    result = result || (x[3] != 0);
    return result;
}
bool any(int x) {
    return x != 0;
}
bool any(int2 x) {
    bool result = false;
    result = result || (x[0] != 0);
    result = result || (x[1] != 0);
    return result;
}
bool any(int3 x) {
    bool result = false;
    result = result || (x[0] != 0);
    result = result || (x[1] != 0);
    result = result || (x[2] != 0);
    return result;
}
bool any(int4 x) {
    bool result = false;
    result = result || (x[0] != 0);
    result = result || (x[1] != 0);
    result = result || (x[2] != 0);
    result = result || (x[3] != 0);
    return result;
}
bool any(float x) {
    return x != 0;
}
bool any(float2 x) {
    bool result = false;
    result = result || (x[0] != 0);
    result = result || (x[1] != 0);
    return result;
}
bool any(float3 x) {
    bool result = false;
    result = result || (x[0] != 0);
    result = result || (x[1] != 0);
    result = result || (x[2] != 0);
    return result;
}
bool any(float4 x) {
    bool result = false;
    result = result || (x[0] != 0);
    result = result || (x[1] != 0);
    result = result || (x[2] != 0);
    result = result || (x[3] != 0);
    return result;
}
bool any(float2x2 x) {
    bool result = false;
    result = result || (x[0][0] != 0);
    result = result || (x[0][1] != 0);
    result = result || (x[1][0] != 0);
    result = result || (x[1][1] != 0);
    return result;
}
bool any(float2x3 x) {
    bool result = false;
    result = result || (x[0][0] != 0);
    result = result || (x[0][1] != 0);
    result = result || (x[0][2] != 0);
    result = result || (x[1][0] != 0);
    result = result || (x[1][1] != 0);
    result = result || (x[1][2] != 0);
    return result;
}
bool any(float2x4 x) {
    bool result = false;
    result = result || (x[0][0] != 0);
    result = result || (x[0][1] != 0);
    result = result || (x[0][2] != 0);
    result = result || (x[0][3] != 0);
    result = result || (x[1][0] != 0);
    result = result || (x[1][1] != 0);
    result = result || (x[1][2] != 0);
    result = result || (x[1][3] != 0);
    return result;
}
bool any(float3x2 x) {
    bool result = false;
    result = result || (x[0][0] != 0);
    result = result || (x[0][1] != 0);
    result = result || (x[1][0] != 0);
    result = result || (x[1][1] != 0);
    result = result || (x[2][0] != 0);
    result = result || (x[2][1] != 0);
    return result;
}
bool any(float3x3 x) {
    bool result = false;
    result = result || (x[0][0] != 0);
    result = result || (x[0][1] != 0);
    result = result || (x[0][2] != 0);
    result = result || (x[1][0] != 0);
    result = result || (x[1][1] != 0);
    result = result || (x[1][2] != 0);
    result = result || (x[2][0] != 0);
    result = result || (x[2][1] != 0);
    result = result || (x[2][2] != 0);
    return result;
}
bool any(float3x4 x) {
    bool result = false;
    result = result || (x[0][0] != 0);
    result = result || (x[0][1] != 0);
    result = result || (x[0][2] != 0);
    result = result || (x[0][3] != 0);
    result = result || (x[1][0] != 0);
    result = result || (x[1][1] != 0);
    result = result || (x[1][2] != 0);
    result = result || (x[1][3] != 0);
    result = result || (x[2][0] != 0);
    result = result || (x[2][1] != 0);
    result = result || (x[2][2] != 0);
    result = result || (x[2][3] != 0);
    return result;
}
bool any(float4x2 x) {
    bool result = false;
    result = result || (x[0][0] != 0);
    result = result || (x[0][1] != 0);
    result = result || (x[1][0] != 0);
    result = result || (x[1][1] != 0);
    result = result || (x[2][0] != 0);
    result = result || (x[2][1] != 0);
    result = result || (x[3][0] != 0);
    result = result || (x[3][1] != 0);
    return result;
}
bool any(float4x3 x) {
    bool result = false;
    result = result || (x[0][0] != 0);
    result = result || (x[0][1] != 0);
    result = result || (x[0][2] != 0);
    result = result || (x[1][0] != 0);
    result = result || (x[1][1] != 0);
    result = result || (x[1][2] != 0);
    result = result || (x[2][0] != 0);
    result = result || (x[2][1] != 0);
    result = result || (x[2][2] != 0);
    result = result || (x[3][0] != 0);
    result = result || (x[3][1] != 0);
    result = result || (x[3][2] != 0);
    return result;
}
bool any(float4x4 x) {
    bool result = false;
    result = result || (x[0][0] != 0);
    result = result || (x[0][1] != 0);
    result = result || (x[0][2] != 0);
    result = result || (x[0][3] != 0);
    result = result || (x[1][0] != 0);
    result = result || (x[1][1] != 0);
    result = result || (x[1][2] != 0);
    result = result || (x[1][3] != 0);
    result = result || (x[2][0] != 0);
    result = result || (x[2][1] != 0);
    result = result || (x[2][2] != 0);
    result = result || (x[2][3] != 0);
    result = result || (x[3][0] != 0);
    result = result || (x[3][1] != 0);
    result = result || (x[3][2] != 0);
    result = result || (x[3][3] != 0);
    return result;
}


/* Functions named operator.yxww */
bool4 operator.yxww(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.w;
    result.w = v.w;
    return result;
}
uint4 operator.yxww(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.w;
    result.w = v.w;
    return result;
}
int4 operator.yxww(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.w;
    result.w = v.w;
    return result;
}
float4 operator.yxww(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.w;
    result.w = v.w;
    return result;
}

/* Functions named operator.zy= */
bool3 operator.zy=(bool3 v, bool2 c) {
    bool3 result = v;
    result.z = c.x;
    result.y = c.y;
    return result;
}
bool4 operator.zy=(bool4 v, bool2 c) {
    bool4 result = v;
    result.z = c.x;
    result.y = c.y;
    return result;
}
uint3 operator.zy=(uint3 v, uint2 c) {
    uint3 result = v;
    result.z = c.x;
    result.y = c.y;
    return result;
}
uint4 operator.zy=(uint4 v, uint2 c) {
    uint4 result = v;
    result.z = c.x;
    result.y = c.y;
    return result;
}
int3 operator.zy=(int3 v, int2 c) {
    int3 result = v;
    result.z = c.x;
    result.y = c.y;
    return result;
}
int4 operator.zy=(int4 v, int2 c) {
    int4 result = v;
    result.z = c.x;
    result.y = c.y;
    return result;
}
float3 operator.zy=(float3 v, float2 c) {
    float3 result = v;
    result.z = c.x;
    result.y = c.y;
    return result;
}
float4 operator.zy=(float4 v, float2 c) {
    float4 result = v;
    result.z = c.x;
    result.y = c.y;
    return result;
}

/* Functions named operator.wyz */
bool3 operator.wyz(bool4 v) {
    bool3 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.z;
    return result;
}
uint3 operator.wyz(uint4 v) {
    uint3 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.z;
    return result;
}
int3 operator.wyz(int4 v) {
    int3 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.z;
    return result;
}
float3 operator.wyz(float4 v) {
    float3 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.z;
    return result;
}

/* Functions named operator.yxw= */
bool4 operator.yxw=(bool4 v, bool3 c) {
    bool4 result = v;
    result.y = c.x;
    result.x = c.y;
    result.w = c.z;
    return result;
}
uint4 operator.yxw=(uint4 v, uint3 c) {
    uint4 result = v;
    result.y = c.x;
    result.x = c.y;
    result.w = c.z;
    return result;
}
int4 operator.yxw=(int4 v, int3 c) {
    int4 result = v;
    result.y = c.x;
    result.x = c.y;
    result.w = c.z;
    return result;
}
float4 operator.yxw=(float4 v, float3 c) {
    float4 result = v;
    result.y = c.x;
    result.x = c.y;
    result.w = c.z;
    return result;
}

/* Functions named operator.wyxz */
bool4 operator.wyxz(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.x;
    result.w = v.z;
    return result;
}
uint4 operator.wyxz(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.x;
    result.w = v.z;
    return result;
}
int4 operator.wyxz(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.x;
    result.w = v.z;
    return result;
}
float4 operator.wyxz(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.x;
    result.w = v.z;
    return result;
}

/* Functions named ddy_coarse */
float ddy_coarse(float x) {
    return ddy(x);
}
float2 ddy_coarse(float2 x) {
    float2 result;
    result[0] = ddy_coarse(x[0]);
    result[1] = ddy_coarse(x[1]);
    return result;
}
float3 ddy_coarse(float3 x) {
    float3 result;
    result[0] = ddy_coarse(x[0]);
    result[1] = ddy_coarse(x[1]);
    result[2] = ddy_coarse(x[2]);
    return result;
}
float4 ddy_coarse(float4 x) {
    float4 result;
    result[0] = ddy_coarse(x[0]);
    result[1] = ddy_coarse(x[1]);
    result[2] = ddy_coarse(x[2]);
    result[3] = ddy_coarse(x[3]);
    return result;
}
float2x2 ddy_coarse(float2x2 x) {
    float2x2 result;
    result[0][0] = ddy_coarse(x[0][0]);
    result[0][1] = ddy_coarse(x[0][1]);
    result[1][0] = ddy_coarse(x[1][0]);
    result[1][1] = ddy_coarse(x[1][1]);
    return result;
}
float2x3 ddy_coarse(float2x3 x) {
    float2x3 result;
    result[0][0] = ddy_coarse(x[0][0]);
    result[0][1] = ddy_coarse(x[0][1]);
    result[0][2] = ddy_coarse(x[0][2]);
    result[1][0] = ddy_coarse(x[1][0]);
    result[1][1] = ddy_coarse(x[1][1]);
    result[1][2] = ddy_coarse(x[1][2]);
    return result;
}
float2x4 ddy_coarse(float2x4 x) {
    float2x4 result;
    result[0][0] = ddy_coarse(x[0][0]);
    result[0][1] = ddy_coarse(x[0][1]);
    result[0][2] = ddy_coarse(x[0][2]);
    result[0][3] = ddy_coarse(x[0][3]);
    result[1][0] = ddy_coarse(x[1][0]);
    result[1][1] = ddy_coarse(x[1][1]);
    result[1][2] = ddy_coarse(x[1][2]);
    result[1][3] = ddy_coarse(x[1][3]);
    return result;
}
float3x2 ddy_coarse(float3x2 x) {
    float3x2 result;
    result[0][0] = ddy_coarse(x[0][0]);
    result[0][1] = ddy_coarse(x[0][1]);
    result[1][0] = ddy_coarse(x[1][0]);
    result[1][1] = ddy_coarse(x[1][1]);
    result[2][0] = ddy_coarse(x[2][0]);
    result[2][1] = ddy_coarse(x[2][1]);
    return result;
}
float3x3 ddy_coarse(float3x3 x) {
    float3x3 result;
    result[0][0] = ddy_coarse(x[0][0]);
    result[0][1] = ddy_coarse(x[0][1]);
    result[0][2] = ddy_coarse(x[0][2]);
    result[1][0] = ddy_coarse(x[1][0]);
    result[1][1] = ddy_coarse(x[1][1]);
    result[1][2] = ddy_coarse(x[1][2]);
    result[2][0] = ddy_coarse(x[2][0]);
    result[2][1] = ddy_coarse(x[2][1]);
    result[2][2] = ddy_coarse(x[2][2]);
    return result;
}
float3x4 ddy_coarse(float3x4 x) {
    float3x4 result;
    result[0][0] = ddy_coarse(x[0][0]);
    result[0][1] = ddy_coarse(x[0][1]);
    result[0][2] = ddy_coarse(x[0][2]);
    result[0][3] = ddy_coarse(x[0][3]);
    result[1][0] = ddy_coarse(x[1][0]);
    result[1][1] = ddy_coarse(x[1][1]);
    result[1][2] = ddy_coarse(x[1][2]);
    result[1][3] = ddy_coarse(x[1][3]);
    result[2][0] = ddy_coarse(x[2][0]);
    result[2][1] = ddy_coarse(x[2][1]);
    result[2][2] = ddy_coarse(x[2][2]);
    result[2][3] = ddy_coarse(x[2][3]);
    return result;
}
float4x2 ddy_coarse(float4x2 x) {
    float4x2 result;
    result[0][0] = ddy_coarse(x[0][0]);
    result[0][1] = ddy_coarse(x[0][1]);
    result[1][0] = ddy_coarse(x[1][0]);
    result[1][1] = ddy_coarse(x[1][1]);
    result[2][0] = ddy_coarse(x[2][0]);
    result[2][1] = ddy_coarse(x[2][1]);
    result[3][0] = ddy_coarse(x[3][0]);
    result[3][1] = ddy_coarse(x[3][1]);
    return result;
}
float4x3 ddy_coarse(float4x3 x) {
    float4x3 result;
    result[0][0] = ddy_coarse(x[0][0]);
    result[0][1] = ddy_coarse(x[0][1]);
    result[0][2] = ddy_coarse(x[0][2]);
    result[1][0] = ddy_coarse(x[1][0]);
    result[1][1] = ddy_coarse(x[1][1]);
    result[1][2] = ddy_coarse(x[1][2]);
    result[2][0] = ddy_coarse(x[2][0]);
    result[2][1] = ddy_coarse(x[2][1]);
    result[2][2] = ddy_coarse(x[2][2]);
    result[3][0] = ddy_coarse(x[3][0]);
    result[3][1] = ddy_coarse(x[3][1]);
    result[3][2] = ddy_coarse(x[3][2]);
    return result;
}
float4x4 ddy_coarse(float4x4 x) {
    float4x4 result;
    result[0][0] = ddy_coarse(x[0][0]);
    result[0][1] = ddy_coarse(x[0][1]);
    result[0][2] = ddy_coarse(x[0][2]);
    result[0][3] = ddy_coarse(x[0][3]);
    result[1][0] = ddy_coarse(x[1][0]);
    result[1][1] = ddy_coarse(x[1][1]);
    result[1][2] = ddy_coarse(x[1][2]);
    result[1][3] = ddy_coarse(x[1][3]);
    result[2][0] = ddy_coarse(x[2][0]);
    result[2][1] = ddy_coarse(x[2][1]);
    result[2][2] = ddy_coarse(x[2][2]);
    result[2][3] = ddy_coarse(x[2][3]);
    result[3][0] = ddy_coarse(x[3][0]);
    result[3][1] = ddy_coarse(x[3][1]);
    result[3][2] = ddy_coarse(x[3][2]);
    result[3][3] = ddy_coarse(x[3][3]);
    return result;
}

/* Functions named operator.xyzz */
bool4 operator.xyzz(bool3 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    result.w = v.z;
    return result;
}
bool4 operator.xyzz(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    result.w = v.z;
    return result;
}
uint4 operator.xyzz(uint3 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    result.w = v.z;
    return result;
}
uint4 operator.xyzz(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    result.w = v.z;
    return result;
}
int4 operator.xyzz(int3 v) {
    int4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    result.w = v.z;
    return result;
}
int4 operator.xyzz(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    result.w = v.z;
    return result;
}
float4 operator.xyzz(float3 v) {
    float4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    result.w = v.z;
    return result;
}
float4 operator.xyzz(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.z;
    result.w = v.z;
    return result;
}

/* Functions named operator++ */
uint operator++(uint value) {
    return value + 1;
}
int operator++(int value) {
    return value + 1;
}
float operator++(float value) {
    return value + 1;
}

/* Functions named InterlockedAnd */
native void InterlockedAnd(device atomic_uint*, uint, thread uint*);
native void InterlockedAnd(device atomic_int*, int, thread int*);
native void InterlockedAnd(device atomic_uint*, uint, device uint*);
native void InterlockedAnd(device atomic_int*, int, device int*);
native void InterlockedAnd(device atomic_uint*, uint, threadgroup uint*);
native void InterlockedAnd(device atomic_int*, int, threadgroup int*);
native void InterlockedAnd(threadgroup atomic_uint*, uint, thread uint*);
native void InterlockedAnd(threadgroup atomic_int*, int, thread int*);
native void InterlockedAnd(threadgroup atomic_uint*, uint, device uint*);
native void InterlockedAnd(threadgroup atomic_int*, int, device int*);
native void InterlockedAnd(threadgroup atomic_uint*, uint, threadgroup uint*);
native void InterlockedAnd(threadgroup atomic_int*, int, threadgroup int*);

/* Functions named operator.wyzx= */
bool4 operator.wyzx=(bool4 v, bool4 c) {
    bool4 result = v;
    result.w = c.x;
    result.y = c.y;
    result.z = c.z;
    result.x = c.w;
    return result;
}
uint4 operator.wyzx=(uint4 v, uint4 c) {
    uint4 result = v;
    result.w = c.x;
    result.y = c.y;
    result.z = c.z;
    result.x = c.w;
    return result;
}
int4 operator.wyzx=(int4 v, int4 c) {
    int4 result = v;
    result.w = c.x;
    result.y = c.y;
    result.z = c.z;
    result.x = c.w;
    return result;
}
float4 operator.wyzx=(float4 v, float4 c) {
    float4 result = v;
    result.w = c.x;
    result.y = c.y;
    result.z = c.z;
    result.x = c.w;
    return result;
}

/* Functions named operator.xxwx */
bool4 operator.xxwx(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.w;
    result.w = v.x;
    return result;
}
uint4 operator.xxwx(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.w;
    result.w = v.x;
    return result;
}
int4 operator.xxwx(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.w;
    result.w = v.x;
    return result;
}
float4 operator.xxwx(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.w;
    result.w = v.x;
    return result;
}

/* Functions named operator.xwwx */
bool4 operator.xwwx(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.w;
    result.w = v.x;
    return result;
}
uint4 operator.xwwx(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.w;
    result.w = v.x;
    return result;
}
int4 operator.xwwx(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.w;
    result.w = v.x;
    return result;
}
float4 operator.xwwx(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.w;
    result.w = v.x;
    return result;
}

/* Functions named operator.zy */
bool2 operator.zy(bool3 v) {
    bool2 result;
    result.x = v.z;
    result.y = v.y;
    return result;
}
bool2 operator.zy(bool4 v) {
    bool2 result;
    result.x = v.z;
    result.y = v.y;
    return result;
}
uint2 operator.zy(uint3 v) {
    uint2 result;
    result.x = v.z;
    result.y = v.y;
    return result;
}
uint2 operator.zy(uint4 v) {
    uint2 result;
    result.x = v.z;
    result.y = v.y;
    return result;
}
int2 operator.zy(int3 v) {
    int2 result;
    result.x = v.z;
    result.y = v.y;
    return result;
}
int2 operator.zy(int4 v) {
    int2 result;
    result.x = v.z;
    result.y = v.y;
    return result;
}
float2 operator.zy(float3 v) {
    float2 result;
    result.x = v.z;
    result.y = v.y;
    return result;
}
float2 operator.zy(float4 v) {
    float2 result;
    result.x = v.z;
    result.y = v.y;
    return result;
}

/* Functions named operator.zyyw */
bool4 operator.zyyw(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    result.w = v.w;
    return result;
}
uint4 operator.zyyw(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    result.w = v.w;
    return result;
}
int4 operator.zyyw(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    result.w = v.w;
    return result;
}
float4 operator.zyyw(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.y;
    result.w = v.w;
    return result;
}

/* Functions named operator.xwzy= */
bool4 operator.xwzy=(bool4 v, bool4 c) {
    bool4 result = v;
    result.x = c.x;
    result.w = c.y;
    result.z = c.z;
    result.y = c.w;
    return result;
}
uint4 operator.xwzy=(uint4 v, uint4 c) {
    uint4 result = v;
    result.x = c.x;
    result.w = c.y;
    result.z = c.z;
    result.y = c.w;
    return result;
}
int4 operator.xwzy=(int4 v, int4 c) {
    int4 result = v;
    result.x = c.x;
    result.w = c.y;
    result.z = c.z;
    result.y = c.w;
    return result;
}
float4 operator.xwzy=(float4 v, float4 c) {
    float4 result = v;
    result.x = c.x;
    result.w = c.y;
    result.z = c.z;
    result.y = c.w;
    return result;
}

/* Functions named operator~ */
bool operator~(bool value) {
    return !value;
}
native int operator~(int);
native uint operator~(uint);

/* Functions named ddx */
native float ddx(float);
float2 ddx(float2 x) {
    float2 result;
    result[0] = ddx(x[0]);
    result[1] = ddx(x[1]);
    return result;
}
float3 ddx(float3 x) {
    float3 result;
    result[0] = ddx(x[0]);
    result[1] = ddx(x[1]);
    result[2] = ddx(x[2]);
    return result;
}
float4 ddx(float4 x) {
    float4 result;
    result[0] = ddx(x[0]);
    result[1] = ddx(x[1]);
    result[2] = ddx(x[2]);
    result[3] = ddx(x[3]);
    return result;
}
float2x2 ddx(float2x2 x) {
    float2x2 result;
    result[0][0] = ddx(x[0][0]);
    result[0][1] = ddx(x[0][1]);
    result[1][0] = ddx(x[1][0]);
    result[1][1] = ddx(x[1][1]);
    return result;
}
float2x3 ddx(float2x3 x) {
    float2x3 result;
    result[0][0] = ddx(x[0][0]);
    result[0][1] = ddx(x[0][1]);
    result[0][2] = ddx(x[0][2]);
    result[1][0] = ddx(x[1][0]);
    result[1][1] = ddx(x[1][1]);
    result[1][2] = ddx(x[1][2]);
    return result;
}
float2x4 ddx(float2x4 x) {
    float2x4 result;
    result[0][0] = ddx(x[0][0]);
    result[0][1] = ddx(x[0][1]);
    result[0][2] = ddx(x[0][2]);
    result[0][3] = ddx(x[0][3]);
    result[1][0] = ddx(x[1][0]);
    result[1][1] = ddx(x[1][1]);
    result[1][2] = ddx(x[1][2]);
    result[1][3] = ddx(x[1][3]);
    return result;
}
float3x2 ddx(float3x2 x) {
    float3x2 result;
    result[0][0] = ddx(x[0][0]);
    result[0][1] = ddx(x[0][1]);
    result[1][0] = ddx(x[1][0]);
    result[1][1] = ddx(x[1][1]);
    result[2][0] = ddx(x[2][0]);
    result[2][1] = ddx(x[2][1]);
    return result;
}
float3x3 ddx(float3x3 x) {
    float3x3 result;
    result[0][0] = ddx(x[0][0]);
    result[0][1] = ddx(x[0][1]);
    result[0][2] = ddx(x[0][2]);
    result[1][0] = ddx(x[1][0]);
    result[1][1] = ddx(x[1][1]);
    result[1][2] = ddx(x[1][2]);
    result[2][0] = ddx(x[2][0]);
    result[2][1] = ddx(x[2][1]);
    result[2][2] = ddx(x[2][2]);
    return result;
}
float3x4 ddx(float3x4 x) {
    float3x4 result;
    result[0][0] = ddx(x[0][0]);
    result[0][1] = ddx(x[0][1]);
    result[0][2] = ddx(x[0][2]);
    result[0][3] = ddx(x[0][3]);
    result[1][0] = ddx(x[1][0]);
    result[1][1] = ddx(x[1][1]);
    result[1][2] = ddx(x[1][2]);
    result[1][3] = ddx(x[1][3]);
    result[2][0] = ddx(x[2][0]);
    result[2][1] = ddx(x[2][1]);
    result[2][2] = ddx(x[2][2]);
    result[2][3] = ddx(x[2][3]);
    return result;
}
float4x2 ddx(float4x2 x) {
    float4x2 result;
    result[0][0] = ddx(x[0][0]);
    result[0][1] = ddx(x[0][1]);
    result[1][0] = ddx(x[1][0]);
    result[1][1] = ddx(x[1][1]);
    result[2][0] = ddx(x[2][0]);
    result[2][1] = ddx(x[2][1]);
    result[3][0] = ddx(x[3][0]);
    result[3][1] = ddx(x[3][1]);
    return result;
}
float4x3 ddx(float4x3 x) {
    float4x3 result;
    result[0][0] = ddx(x[0][0]);
    result[0][1] = ddx(x[0][1]);
    result[0][2] = ddx(x[0][2]);
    result[1][0] = ddx(x[1][0]);
    result[1][1] = ddx(x[1][1]);
    result[1][2] = ddx(x[1][2]);
    result[2][0] = ddx(x[2][0]);
    result[2][1] = ddx(x[2][1]);
    result[2][2] = ddx(x[2][2]);
    result[3][0] = ddx(x[3][0]);
    result[3][1] = ddx(x[3][1]);
    result[3][2] = ddx(x[3][2]);
    return result;
}
float4x4 ddx(float4x4 x) {
    float4x4 result;
    result[0][0] = ddx(x[0][0]);
    result[0][1] = ddx(x[0][1]);
    result[0][2] = ddx(x[0][2]);
    result[0][3] = ddx(x[0][3]);
    result[1][0] = ddx(x[1][0]);
    result[1][1] = ddx(x[1][1]);
    result[1][2] = ddx(x[1][2]);
    result[1][3] = ddx(x[1][3]);
    result[2][0] = ddx(x[2][0]);
    result[2][1] = ddx(x[2][1]);
    result[2][2] = ddx(x[2][2]);
    result[2][3] = ddx(x[2][3]);
    result[3][0] = ddx(x[3][0]);
    result[3][1] = ddx(x[3][1]);
    result[3][2] = ddx(x[3][2]);
    result[3][3] = ddx(x[3][3]);
    return result;
}

/* Functions named operator.zzyx */
bool4 operator.zzyx(bool3 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    result.w = v.x;
    return result;
}
bool4 operator.zzyx(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    result.w = v.x;
    return result;
}
uint4 operator.zzyx(uint3 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    result.w = v.x;
    return result;
}
uint4 operator.zzyx(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    result.w = v.x;
    return result;
}
int4 operator.zzyx(int3 v) {
    int4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    result.w = v.x;
    return result;
}
int4 operator.zzyx(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    result.w = v.x;
    return result;
}
float4 operator.zzyx(float3 v) {
    float4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    result.w = v.x;
    return result;
}
float4 operator.zzyx(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.y;
    result.w = v.x;
    return result;
}

/* Functions named operator.xwzz */
bool4 operator.xwzz(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.z;
    result.w = v.z;
    return result;
}
uint4 operator.xwzz(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.z;
    result.w = v.z;
    return result;
}
int4 operator.xwzz(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.z;
    result.w = v.z;
    return result;
}
float4 operator.xwzz(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.z;
    result.w = v.z;
    return result;
}

/* Functions named operator.wywx */
bool4 operator.wywx(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.w;
    result.w = v.x;
    return result;
}
uint4 operator.wywx(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.w;
    result.w = v.x;
    return result;
}
int4 operator.wywx(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.w;
    result.w = v.x;
    return result;
}
float4 operator.wywx(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.y;
    result.z = v.w;
    result.w = v.x;
    return result;
}

/* Functions named InterlockedMax */
native void InterlockedMax(device atomic_uint*, uint, thread uint*);
native void InterlockedMax(device atomic_int*, int, thread int*);
native void InterlockedMax(device atomic_uint*, uint, device uint*);
native void InterlockedMax(device atomic_int*, int, device int*);
native void InterlockedMax(device atomic_uint*, uint, threadgroup uint*);
native void InterlockedMax(device atomic_int*, int, threadgroup int*);
native void InterlockedMax(threadgroup atomic_uint*, uint, thread uint*);
native void InterlockedMax(threadgroup atomic_int*, int, thread int*);
native void InterlockedMax(threadgroup atomic_uint*, uint, device uint*);
native void InterlockedMax(threadgroup atomic_int*, int, device int*);
native void InterlockedMax(threadgroup atomic_uint*, uint, threadgroup uint*);
native void InterlockedMax(threadgroup atomic_int*, int, threadgroup int*);

/* Functions named cosh */
native float cosh(float);
float2 cosh(float2 x) {
    float2 result;
    result[0] = cosh(x[0]);
    result[1] = cosh(x[1]);
    return result;
}
float3 cosh(float3 x) {
    float3 result;
    result[0] = cosh(x[0]);
    result[1] = cosh(x[1]);
    result[2] = cosh(x[2]);
    return result;
}
float4 cosh(float4 x) {
    float4 result;
    result[0] = cosh(x[0]);
    result[1] = cosh(x[1]);
    result[2] = cosh(x[2]);
    result[3] = cosh(x[3]);
    return result;
}
float2x2 cosh(float2x2 x) {
    float2x2 result;
    result[0][0] = cosh(x[0][0]);
    result[0][1] = cosh(x[0][1]);
    result[1][0] = cosh(x[1][0]);
    result[1][1] = cosh(x[1][1]);
    return result;
}
float2x3 cosh(float2x3 x) {
    float2x3 result;
    result[0][0] = cosh(x[0][0]);
    result[0][1] = cosh(x[0][1]);
    result[0][2] = cosh(x[0][2]);
    result[1][0] = cosh(x[1][0]);
    result[1][1] = cosh(x[1][1]);
    result[1][2] = cosh(x[1][2]);
    return result;
}
float2x4 cosh(float2x4 x) {
    float2x4 result;
    result[0][0] = cosh(x[0][0]);
    result[0][1] = cosh(x[0][1]);
    result[0][2] = cosh(x[0][2]);
    result[0][3] = cosh(x[0][3]);
    result[1][0] = cosh(x[1][0]);
    result[1][1] = cosh(x[1][1]);
    result[1][2] = cosh(x[1][2]);
    result[1][3] = cosh(x[1][3]);
    return result;
}
float3x2 cosh(float3x2 x) {
    float3x2 result;
    result[0][0] = cosh(x[0][0]);
    result[0][1] = cosh(x[0][1]);
    result[1][0] = cosh(x[1][0]);
    result[1][1] = cosh(x[1][1]);
    result[2][0] = cosh(x[2][0]);
    result[2][1] = cosh(x[2][1]);
    return result;
}
float3x3 cosh(float3x3 x) {
    float3x3 result;
    result[0][0] = cosh(x[0][0]);
    result[0][1] = cosh(x[0][1]);
    result[0][2] = cosh(x[0][2]);
    result[1][0] = cosh(x[1][0]);
    result[1][1] = cosh(x[1][1]);
    result[1][2] = cosh(x[1][2]);
    result[2][0] = cosh(x[2][0]);
    result[2][1] = cosh(x[2][1]);
    result[2][2] = cosh(x[2][2]);
    return result;
}
float3x4 cosh(float3x4 x) {
    float3x4 result;
    result[0][0] = cosh(x[0][0]);
    result[0][1] = cosh(x[0][1]);
    result[0][2] = cosh(x[0][2]);
    result[0][3] = cosh(x[0][3]);
    result[1][0] = cosh(x[1][0]);
    result[1][1] = cosh(x[1][1]);
    result[1][2] = cosh(x[1][2]);
    result[1][3] = cosh(x[1][3]);
    result[2][0] = cosh(x[2][0]);
    result[2][1] = cosh(x[2][1]);
    result[2][2] = cosh(x[2][2]);
    result[2][3] = cosh(x[2][3]);
    return result;
}
float4x2 cosh(float4x2 x) {
    float4x2 result;
    result[0][0] = cosh(x[0][0]);
    result[0][1] = cosh(x[0][1]);
    result[1][0] = cosh(x[1][0]);
    result[1][1] = cosh(x[1][1]);
    result[2][0] = cosh(x[2][0]);
    result[2][1] = cosh(x[2][1]);
    result[3][0] = cosh(x[3][0]);
    result[3][1] = cosh(x[3][1]);
    return result;
}
float4x3 cosh(float4x3 x) {
    float4x3 result;
    result[0][0] = cosh(x[0][0]);
    result[0][1] = cosh(x[0][1]);
    result[0][2] = cosh(x[0][2]);
    result[1][0] = cosh(x[1][0]);
    result[1][1] = cosh(x[1][1]);
    result[1][2] = cosh(x[1][2]);
    result[2][0] = cosh(x[2][0]);
    result[2][1] = cosh(x[2][1]);
    result[2][2] = cosh(x[2][2]);
    result[3][0] = cosh(x[3][0]);
    result[3][1] = cosh(x[3][1]);
    result[3][2] = cosh(x[3][2]);
    return result;
}
float4x4 cosh(float4x4 x) {
    float4x4 result;
    result[0][0] = cosh(x[0][0]);
    result[0][1] = cosh(x[0][1]);
    result[0][2] = cosh(x[0][2]);
    result[0][3] = cosh(x[0][3]);
    result[1][0] = cosh(x[1][0]);
    result[1][1] = cosh(x[1][1]);
    result[1][2] = cosh(x[1][2]);
    result[1][3] = cosh(x[1][3]);
    result[2][0] = cosh(x[2][0]);
    result[2][1] = cosh(x[2][1]);
    result[2][2] = cosh(x[2][2]);
    result[2][3] = cosh(x[2][3]);
    result[3][0] = cosh(x[3][0]);
    result[3][1] = cosh(x[3][1]);
    result[3][2] = cosh(x[3][2]);
    result[3][3] = cosh(x[3][3]);
    return result;
}

/* Functions named ddx_coarse */
float ddx_coarse(float x) {
    return ddx(x);
}
float2 ddx_coarse(float2 x) {
    float2 result;
    result[0] = ddx_coarse(x[0]);
    result[1] = ddx_coarse(x[1]);
    return result;
}
float3 ddx_coarse(float3 x) {
    float3 result;
    result[0] = ddx_coarse(x[0]);
    result[1] = ddx_coarse(x[1]);
    result[2] = ddx_coarse(x[2]);
    return result;
}
float4 ddx_coarse(float4 x) {
    float4 result;
    result[0] = ddx_coarse(x[0]);
    result[1] = ddx_coarse(x[1]);
    result[2] = ddx_coarse(x[2]);
    result[3] = ddx_coarse(x[3]);
    return result;
}
float2x2 ddx_coarse(float2x2 x) {
    float2x2 result;
    result[0][0] = ddx_coarse(x[0][0]);
    result[0][1] = ddx_coarse(x[0][1]);
    result[1][0] = ddx_coarse(x[1][0]);
    result[1][1] = ddx_coarse(x[1][1]);
    return result;
}
float2x3 ddx_coarse(float2x3 x) {
    float2x3 result;
    result[0][0] = ddx_coarse(x[0][0]);
    result[0][1] = ddx_coarse(x[0][1]);
    result[0][2] = ddx_coarse(x[0][2]);
    result[1][0] = ddx_coarse(x[1][0]);
    result[1][1] = ddx_coarse(x[1][1]);
    result[1][2] = ddx_coarse(x[1][2]);
    return result;
}
float2x4 ddx_coarse(float2x4 x) {
    float2x4 result;
    result[0][0] = ddx_coarse(x[0][0]);
    result[0][1] = ddx_coarse(x[0][1]);
    result[0][2] = ddx_coarse(x[0][2]);
    result[0][3] = ddx_coarse(x[0][3]);
    result[1][0] = ddx_coarse(x[1][0]);
    result[1][1] = ddx_coarse(x[1][1]);
    result[1][2] = ddx_coarse(x[1][2]);
    result[1][3] = ddx_coarse(x[1][3]);
    return result;
}
float3x2 ddx_coarse(float3x2 x) {
    float3x2 result;
    result[0][0] = ddx_coarse(x[0][0]);
    result[0][1] = ddx_coarse(x[0][1]);
    result[1][0] = ddx_coarse(x[1][0]);
    result[1][1] = ddx_coarse(x[1][1]);
    result[2][0] = ddx_coarse(x[2][0]);
    result[2][1] = ddx_coarse(x[2][1]);
    return result;
}
float3x3 ddx_coarse(float3x3 x) {
    float3x3 result;
    result[0][0] = ddx_coarse(x[0][0]);
    result[0][1] = ddx_coarse(x[0][1]);
    result[0][2] = ddx_coarse(x[0][2]);
    result[1][0] = ddx_coarse(x[1][0]);
    result[1][1] = ddx_coarse(x[1][1]);
    result[1][2] = ddx_coarse(x[1][2]);
    result[2][0] = ddx_coarse(x[2][0]);
    result[2][1] = ddx_coarse(x[2][1]);
    result[2][2] = ddx_coarse(x[2][2]);
    return result;
}
float3x4 ddx_coarse(float3x4 x) {
    float3x4 result;
    result[0][0] = ddx_coarse(x[0][0]);
    result[0][1] = ddx_coarse(x[0][1]);
    result[0][2] = ddx_coarse(x[0][2]);
    result[0][3] = ddx_coarse(x[0][3]);
    result[1][0] = ddx_coarse(x[1][0]);
    result[1][1] = ddx_coarse(x[1][1]);
    result[1][2] = ddx_coarse(x[1][2]);
    result[1][3] = ddx_coarse(x[1][3]);
    result[2][0] = ddx_coarse(x[2][0]);
    result[2][1] = ddx_coarse(x[2][1]);
    result[2][2] = ddx_coarse(x[2][2]);
    result[2][3] = ddx_coarse(x[2][3]);
    return result;
}
float4x2 ddx_coarse(float4x2 x) {
    float4x2 result;
    result[0][0] = ddx_coarse(x[0][0]);
    result[0][1] = ddx_coarse(x[0][1]);
    result[1][0] = ddx_coarse(x[1][0]);
    result[1][1] = ddx_coarse(x[1][1]);
    result[2][0] = ddx_coarse(x[2][0]);
    result[2][1] = ddx_coarse(x[2][1]);
    result[3][0] = ddx_coarse(x[3][0]);
    result[3][1] = ddx_coarse(x[3][1]);
    return result;
}
float4x3 ddx_coarse(float4x3 x) {
    float4x3 result;
    result[0][0] = ddx_coarse(x[0][0]);
    result[0][1] = ddx_coarse(x[0][1]);
    result[0][2] = ddx_coarse(x[0][2]);
    result[1][0] = ddx_coarse(x[1][0]);
    result[1][1] = ddx_coarse(x[1][1]);
    result[1][2] = ddx_coarse(x[1][2]);
    result[2][0] = ddx_coarse(x[2][0]);
    result[2][1] = ddx_coarse(x[2][1]);
    result[2][2] = ddx_coarse(x[2][2]);
    result[3][0] = ddx_coarse(x[3][0]);
    result[3][1] = ddx_coarse(x[3][1]);
    result[3][2] = ddx_coarse(x[3][2]);
    return result;
}
float4x4 ddx_coarse(float4x4 x) {
    float4x4 result;
    result[0][0] = ddx_coarse(x[0][0]);
    result[0][1] = ddx_coarse(x[0][1]);
    result[0][2] = ddx_coarse(x[0][2]);
    result[0][3] = ddx_coarse(x[0][3]);
    result[1][0] = ddx_coarse(x[1][0]);
    result[1][1] = ddx_coarse(x[1][1]);
    result[1][2] = ddx_coarse(x[1][2]);
    result[1][3] = ddx_coarse(x[1][3]);
    result[2][0] = ddx_coarse(x[2][0]);
    result[2][1] = ddx_coarse(x[2][1]);
    result[2][2] = ddx_coarse(x[2][2]);
    result[2][3] = ddx_coarse(x[2][3]);
    result[3][0] = ddx_coarse(x[3][0]);
    result[3][1] = ddx_coarse(x[3][1]);
    result[3][2] = ddx_coarse(x[3][2]);
    result[3][3] = ddx_coarse(x[3][3]);
    return result;
}

/* Functions named operator.wxz= */
bool4 operator.wxz=(bool4 v, bool3 c) {
    bool4 result = v;
    result.w = c.x;
    result.x = c.y;
    result.z = c.z;
    return result;
}
uint4 operator.wxz=(uint4 v, uint3 c) {
    uint4 result = v;
    result.w = c.x;
    result.x = c.y;
    result.z = c.z;
    return result;
}
int4 operator.wxz=(int4 v, int3 c) {
    int4 result = v;
    result.w = c.x;
    result.x = c.y;
    result.z = c.z;
    return result;
}
float4 operator.wxz=(float4 v, float3 c) {
    float4 result = v;
    result.w = c.x;
    result.x = c.y;
    result.z = c.z;
    return result;
}

/* Functions named firstbithigh */
uint firstbithigh(uint x) {
    if ((x & uint(1 << 31)) != 0)
        return 0;
    if ((x & uint(1 << 30)) != 0)
        return 1;
    if ((x & uint(1 << 29)) != 0)
        return 2;
    if ((x & uint(1 << 28)) != 0)
        return 3;
    if ((x & uint(1 << 27)) != 0)
        return 4;
    if ((x & uint(1 << 26)) != 0)
        return 5;
    if ((x & uint(1 << 25)) != 0)
        return 6;
    if ((x & uint(1 << 24)) != 0)
        return 7;
    if ((x & uint(1 << 23)) != 0)
        return 8;
    if ((x & uint(1 << 22)) != 0)
        return 9;
    if ((x & uint(1 << 21)) != 0)
        return 10;
    if ((x & uint(1 << 20)) != 0)
        return 11;
    if ((x & uint(1 << 19)) != 0)
        return 12;
    if ((x & uint(1 << 18)) != 0)
        return 13;
    if ((x & uint(1 << 17)) != 0)
        return 14;
    if ((x & uint(1 << 16)) != 0)
        return 15;
    if ((x & uint(1 << 15)) != 0)
        return 16;
    if ((x & uint(1 << 14)) != 0)
        return 17;
    if ((x & uint(1 << 13)) != 0)
        return 18;
    if ((x & uint(1 << 12)) != 0)
        return 19;
    if ((x & uint(1 << 11)) != 0)
        return 20;
    if ((x & uint(1 << 10)) != 0)
        return 21;
    if ((x & uint(1 << 9)) != 0)
        return 22;
    if ((x & uint(1 << 8)) != 0)
        return 23;
    if ((x & uint(1 << 7)) != 0)
        return 24;
    if ((x & uint(1 << 6)) != 0)
        return 25;
    if ((x & uint(1 << 5)) != 0)
        return 26;
    if ((x & uint(1 << 4)) != 0)
        return 27;
    if ((x & uint(1 << 3)) != 0)
        return 28;
    if ((x & uint(1 << 2)) != 0)
        return 29;
    if ((x & uint(1 << 1)) != 0)
        return 30;
    if ((x & uint(1 << 0)) != 0)
        return 31;
    return 32;
}
uint firstbithigh(int x) {
    return firstbithigh(uint(x));
}
uint2 firstbithigh(uint2 x) {
    uint2 result;
    result[0] = firstbithigh(x[0]);
    result[1] = firstbithigh(x[1]);
    return result;
}
uint3 firstbithigh(uint3 x) {
    uint3 result;
    result[0] = firstbithigh(x[0]);
    result[1] = firstbithigh(x[1]);
    result[2] = firstbithigh(x[2]);
    return result;
}
uint4 firstbithigh(uint4 x) {
    uint4 result;
    result[0] = firstbithigh(x[0]);
    result[1] = firstbithigh(x[1]);
    result[2] = firstbithigh(x[2]);
    result[3] = firstbithigh(x[3]);
    return result;
}
uint2 firstbithigh(int2 x) {
    uint2 result;
    result[0] = firstbithigh(x[0]);
    result[1] = firstbithigh(x[1]);
    return result;
}
uint3 firstbithigh(int3 x) {
    uint3 result;
    result[0] = firstbithigh(x[0]);
    result[1] = firstbithigh(x[1]);
    result[2] = firstbithigh(x[2]);
    return result;
}
uint4 firstbithigh(int4 x) {
    uint4 result;
    result[0] = firstbithigh(x[0]);
    result[1] = firstbithigh(x[1]);
    result[2] = firstbithigh(x[2]);
    result[3] = firstbithigh(x[3]);
    return result;
}

/* Functions named operator.xzzy */
bool4 operator.xzzy(bool3 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    result.w = v.y;
    return result;
}
bool4 operator.xzzy(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    result.w = v.y;
    return result;
}
uint4 operator.xzzy(uint3 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    result.w = v.y;
    return result;
}
uint4 operator.xzzy(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    result.w = v.y;
    return result;
}
int4 operator.xzzy(int3 v) {
    int4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    result.w = v.y;
    return result;
}
int4 operator.xzzy(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    result.w = v.y;
    return result;
}
float4 operator.xzzy(float3 v) {
    float4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    result.w = v.y;
    return result;
}
float4 operator.xzzy(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.z;
    result.z = v.z;
    result.w = v.y;
    return result;
}

/* Functions named operator.zwzx */
bool4 operator.zwzx(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.z;
    result.w = v.x;
    return result;
}
uint4 operator.zwzx(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.z;
    result.w = v.x;
    return result;
}
int4 operator.zwzx(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.z;
    result.w = v.x;
    return result;
}
float4 operator.zwzx(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.w;
    result.z = v.z;
    result.w = v.x;
    return result;
}

/* Functions named operator.yyzw */
bool4 operator.yyzw(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    result.w = v.w;
    return result;
}
uint4 operator.yyzw(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    result.w = v.w;
    return result;
}
int4 operator.yyzw(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    result.w = v.w;
    return result;
}
float4 operator.yyzw(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.z;
    result.w = v.w;
    return result;
}

/* Functions named operator.xwxw */
bool4 operator.xwxw(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.x;
    result.w = v.w;
    return result;
}
uint4 operator.xwxw(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.x;
    result.w = v.w;
    return result;
}
int4 operator.xwxw(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.x;
    result.w = v.w;
    return result;
}
float4 operator.xwxw(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.x;
    result.w = v.w;
    return result;
}

/* Functions named rcp */
float rcp(float x) {
    return 1 / x;
}
float2 rcp(float2 x) {
    float2 result;
    result[0] = rcp(x[0]);
    result[1] = rcp(x[1]);
    return result;
}
float3 rcp(float3 x) {
    float3 result;
    result[0] = rcp(x[0]);
    result[1] = rcp(x[1]);
    result[2] = rcp(x[2]);
    return result;
}
float4 rcp(float4 x) {
    float4 result;
    result[0] = rcp(x[0]);
    result[1] = rcp(x[1]);
    result[2] = rcp(x[2]);
    result[3] = rcp(x[3]);
    return result;
}
float2x2 rcp(float2x2 x) {
    float2x2 result;
    result[0][0] = rcp(x[0][0]);
    result[0][1] = rcp(x[0][1]);
    result[1][0] = rcp(x[1][0]);
    result[1][1] = rcp(x[1][1]);
    return result;
}
float2x3 rcp(float2x3 x) {
    float2x3 result;
    result[0][0] = rcp(x[0][0]);
    result[0][1] = rcp(x[0][1]);
    result[0][2] = rcp(x[0][2]);
    result[1][0] = rcp(x[1][0]);
    result[1][1] = rcp(x[1][1]);
    result[1][2] = rcp(x[1][2]);
    return result;
}
float2x4 rcp(float2x4 x) {
    float2x4 result;
    result[0][0] = rcp(x[0][0]);
    result[0][1] = rcp(x[0][1]);
    result[0][2] = rcp(x[0][2]);
    result[0][3] = rcp(x[0][3]);
    result[1][0] = rcp(x[1][0]);
    result[1][1] = rcp(x[1][1]);
    result[1][2] = rcp(x[1][2]);
    result[1][3] = rcp(x[1][3]);
    return result;
}
float3x2 rcp(float3x2 x) {
    float3x2 result;
    result[0][0] = rcp(x[0][0]);
    result[0][1] = rcp(x[0][1]);
    result[1][0] = rcp(x[1][0]);
    result[1][1] = rcp(x[1][1]);
    result[2][0] = rcp(x[2][0]);
    result[2][1] = rcp(x[2][1]);
    return result;
}
float3x3 rcp(float3x3 x) {
    float3x3 result;
    result[0][0] = rcp(x[0][0]);
    result[0][1] = rcp(x[0][1]);
    result[0][2] = rcp(x[0][2]);
    result[1][0] = rcp(x[1][0]);
    result[1][1] = rcp(x[1][1]);
    result[1][2] = rcp(x[1][2]);
    result[2][0] = rcp(x[2][0]);
    result[2][1] = rcp(x[2][1]);
    result[2][2] = rcp(x[2][2]);
    return result;
}
float3x4 rcp(float3x4 x) {
    float3x4 result;
    result[0][0] = rcp(x[0][0]);
    result[0][1] = rcp(x[0][1]);
    result[0][2] = rcp(x[0][2]);
    result[0][3] = rcp(x[0][3]);
    result[1][0] = rcp(x[1][0]);
    result[1][1] = rcp(x[1][1]);
    result[1][2] = rcp(x[1][2]);
    result[1][3] = rcp(x[1][3]);
    result[2][0] = rcp(x[2][0]);
    result[2][1] = rcp(x[2][1]);
    result[2][2] = rcp(x[2][2]);
    result[2][3] = rcp(x[2][3]);
    return result;
}
float4x2 rcp(float4x2 x) {
    float4x2 result;
    result[0][0] = rcp(x[0][0]);
    result[0][1] = rcp(x[0][1]);
    result[1][0] = rcp(x[1][0]);
    result[1][1] = rcp(x[1][1]);
    result[2][0] = rcp(x[2][0]);
    result[2][1] = rcp(x[2][1]);
    result[3][0] = rcp(x[3][0]);
    result[3][1] = rcp(x[3][1]);
    return result;
}
float4x3 rcp(float4x3 x) {
    float4x3 result;
    result[0][0] = rcp(x[0][0]);
    result[0][1] = rcp(x[0][1]);
    result[0][2] = rcp(x[0][2]);
    result[1][0] = rcp(x[1][0]);
    result[1][1] = rcp(x[1][1]);
    result[1][2] = rcp(x[1][2]);
    result[2][0] = rcp(x[2][0]);
    result[2][1] = rcp(x[2][1]);
    result[2][2] = rcp(x[2][2]);
    result[3][0] = rcp(x[3][0]);
    result[3][1] = rcp(x[3][1]);
    result[3][2] = rcp(x[3][2]);
    return result;
}
float4x4 rcp(float4x4 x) {
    float4x4 result;
    result[0][0] = rcp(x[0][0]);
    result[0][1] = rcp(x[0][1]);
    result[0][2] = rcp(x[0][2]);
    result[0][3] = rcp(x[0][3]);
    result[1][0] = rcp(x[1][0]);
    result[1][1] = rcp(x[1][1]);
    result[1][2] = rcp(x[1][2]);
    result[1][3] = rcp(x[1][3]);
    result[2][0] = rcp(x[2][0]);
    result[2][1] = rcp(x[2][1]);
    result[2][2] = rcp(x[2][2]);
    result[2][3] = rcp(x[2][3]);
    result[3][0] = rcp(x[3][0]);
    result[3][1] = rcp(x[3][1]);
    result[3][2] = rcp(x[3][2]);
    result[3][3] = rcp(x[3][3]);
    return result;
}

/* Functions named operator.wxzx */
bool4 operator.wxzx(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.z;
    result.w = v.x;
    return result;
}
uint4 operator.wxzx(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.z;
    result.w = v.x;
    return result;
}
int4 operator.wxzx(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.z;
    result.w = v.x;
    return result;
}
float4 operator.wxzx(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.z;
    result.w = v.x;
    return result;
}

/* Functions named operator.wzy */
bool3 operator.wzy(bool4 v) {
    bool3 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.y;
    return result;
}
uint3 operator.wzy(uint4 v) {
    uint3 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.y;
    return result;
}
int3 operator.wzy(int4 v) {
    int3 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.y;
    return result;
}
float3 operator.wzy(float4 v) {
    float3 result;
    result.x = v.w;
    result.y = v.z;
    result.z = v.y;
    return result;
}

/* Functions named operator.zxw */
bool3 operator.zxw(bool4 v) {
    bool3 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.w;
    return result;
}
uint3 operator.zxw(uint4 v) {
    uint3 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.w;
    return result;
}
int3 operator.zxw(int4 v) {
    int3 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.w;
    return result;
}
float3 operator.zxw(float4 v) {
    float3 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.w;
    return result;
}

/* Functions named operator.zxyy */
bool4 operator.zxyy(bool3 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
bool4 operator.zxyy(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
uint4 operator.zxyy(uint3 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
uint4 operator.zxyy(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
int4 operator.zxyy(int3 v) {
    int4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
int4 operator.zxyy(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
float4 operator.zxyy(float3 v) {
    float4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}
float4 operator.zxyy(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.y;
    result.w = v.y;
    return result;
}

/* Functions named operator.yyyy */
bool4 operator.yyyy(bool2 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
bool4 operator.yyyy(bool3 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
bool4 operator.yyyy(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
uint4 operator.yyyy(uint2 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
uint4 operator.yyyy(uint3 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
uint4 operator.yyyy(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
int4 operator.yyyy(int2 v) {
    int4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
int4 operator.yyyy(int3 v) {
    int4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
int4 operator.yyyy(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
float4 operator.yyyy(float2 v) {
    float4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
float4 operator.yyyy(float3 v) {
    float4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}
float4 operator.yyyy(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.y;
    result.z = v.y;
    result.w = v.y;
    return result;
}

/* Functions named operator.yzwx= */
bool4 operator.yzwx=(bool4 v, bool4 c) {
    bool4 result = v;
    result.y = c.x;
    result.z = c.y;
    result.w = c.z;
    result.x = c.w;
    return result;
}
uint4 operator.yzwx=(uint4 v, uint4 c) {
    uint4 result = v;
    result.y = c.x;
    result.z = c.y;
    result.w = c.z;
    result.x = c.w;
    return result;
}
int4 operator.yzwx=(int4 v, int4 c) {
    int4 result = v;
    result.y = c.x;
    result.z = c.y;
    result.w = c.z;
    result.x = c.w;
    return result;
}
float4 operator.yzwx=(float4 v, float4 c) {
    float4 result = v;
    result.y = c.x;
    result.z = c.y;
    result.w = c.z;
    result.x = c.w;
    return result;
}

/* Functions named operator.zzxy */
bool4 operator.zzxy(bool3 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    result.w = v.y;
    return result;
}
bool4 operator.zzxy(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    result.w = v.y;
    return result;
}
uint4 operator.zzxy(uint3 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    result.w = v.y;
    return result;
}
uint4 operator.zzxy(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    result.w = v.y;
    return result;
}
int4 operator.zzxy(int3 v) {
    int4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    result.w = v.y;
    return result;
}
int4 operator.zzxy(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    result.w = v.y;
    return result;
}
float4 operator.zzxy(float3 v) {
    float4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    result.w = v.y;
    return result;
}
float4 operator.zzxy(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.z;
    result.z = v.x;
    result.w = v.y;
    return result;
}

/* Functions named fwidth */

float fwidth(float x) {
    return abs(ddx(x)) + abs(ddy(x));
}
float2 fwidth(float2 x) {
    float2 result;
    result[0] = fwidth(x[0]);
    result[1] = fwidth(x[1]);
    return result;
}
float3 fwidth(float3 x) {
    float3 result;
    result[0] = fwidth(x[0]);
    result[1] = fwidth(x[1]);
    result[2] = fwidth(x[2]);
    return result;
}
float4 fwidth(float4 x) {
    float4 result;
    result[0] = fwidth(x[0]);
    result[1] = fwidth(x[1]);
    result[2] = fwidth(x[2]);
    result[3] = fwidth(x[3]);
    return result;
}
float2x2 fwidth(float2x2 x) {
    float2x2 result;
    result[0][0] = fwidth(x[0][0]);
    result[0][1] = fwidth(x[0][1]);
    result[1][0] = fwidth(x[1][0]);
    result[1][1] = fwidth(x[1][1]);
    return result;
}
float2x3 fwidth(float2x3 x) {
    float2x3 result;
    result[0][0] = fwidth(x[0][0]);
    result[0][1] = fwidth(x[0][1]);
    result[0][2] = fwidth(x[0][2]);
    result[1][0] = fwidth(x[1][0]);
    result[1][1] = fwidth(x[1][1]);
    result[1][2] = fwidth(x[1][2]);
    return result;
}
float2x4 fwidth(float2x4 x) {
    float2x4 result;
    result[0][0] = fwidth(x[0][0]);
    result[0][1] = fwidth(x[0][1]);
    result[0][2] = fwidth(x[0][2]);
    result[0][3] = fwidth(x[0][3]);
    result[1][0] = fwidth(x[1][0]);
    result[1][1] = fwidth(x[1][1]);
    result[1][2] = fwidth(x[1][2]);
    result[1][3] = fwidth(x[1][3]);
    return result;
}
float3x2 fwidth(float3x2 x) {
    float3x2 result;
    result[0][0] = fwidth(x[0][0]);
    result[0][1] = fwidth(x[0][1]);
    result[1][0] = fwidth(x[1][0]);
    result[1][1] = fwidth(x[1][1]);
    result[2][0] = fwidth(x[2][0]);
    result[2][1] = fwidth(x[2][1]);
    return result;
}
float3x3 fwidth(float3x3 x) {
    float3x3 result;
    result[0][0] = fwidth(x[0][0]);
    result[0][1] = fwidth(x[0][1]);
    result[0][2] = fwidth(x[0][2]);
    result[1][0] = fwidth(x[1][0]);
    result[1][1] = fwidth(x[1][1]);
    result[1][2] = fwidth(x[1][2]);
    result[2][0] = fwidth(x[2][0]);
    result[2][1] = fwidth(x[2][1]);
    result[2][2] = fwidth(x[2][2]);
    return result;
}
float3x4 fwidth(float3x4 x) {
    float3x4 result;
    result[0][0] = fwidth(x[0][0]);
    result[0][1] = fwidth(x[0][1]);
    result[0][2] = fwidth(x[0][2]);
    result[0][3] = fwidth(x[0][3]);
    result[1][0] = fwidth(x[1][0]);
    result[1][1] = fwidth(x[1][1]);
    result[1][2] = fwidth(x[1][2]);
    result[1][3] = fwidth(x[1][3]);
    result[2][0] = fwidth(x[2][0]);
    result[2][1] = fwidth(x[2][1]);
    result[2][2] = fwidth(x[2][2]);
    result[2][3] = fwidth(x[2][3]);
    return result;
}
float4x2 fwidth(float4x2 x) {
    float4x2 result;
    result[0][0] = fwidth(x[0][0]);
    result[0][1] = fwidth(x[0][1]);
    result[1][0] = fwidth(x[1][0]);
    result[1][1] = fwidth(x[1][1]);
    result[2][0] = fwidth(x[2][0]);
    result[2][1] = fwidth(x[2][1]);
    result[3][0] = fwidth(x[3][0]);
    result[3][1] = fwidth(x[3][1]);
    return result;
}
float4x3 fwidth(float4x3 x) {
    float4x3 result;
    result[0][0] = fwidth(x[0][0]);
    result[0][1] = fwidth(x[0][1]);
    result[0][2] = fwidth(x[0][2]);
    result[1][0] = fwidth(x[1][0]);
    result[1][1] = fwidth(x[1][1]);
    result[1][2] = fwidth(x[1][2]);
    result[2][0] = fwidth(x[2][0]);
    result[2][1] = fwidth(x[2][1]);
    result[2][2] = fwidth(x[2][2]);
    result[3][0] = fwidth(x[3][0]);
    result[3][1] = fwidth(x[3][1]);
    result[3][2] = fwidth(x[3][2]);
    return result;
}
float4x4 fwidth(float4x4 x) {
    float4x4 result;
    result[0][0] = fwidth(x[0][0]);
    result[0][1] = fwidth(x[0][1]);
    result[0][2] = fwidth(x[0][2]);
    result[0][3] = fwidth(x[0][3]);
    result[1][0] = fwidth(x[1][0]);
    result[1][1] = fwidth(x[1][1]);
    result[1][2] = fwidth(x[1][2]);
    result[1][3] = fwidth(x[1][3]);
    result[2][0] = fwidth(x[2][0]);
    result[2][1] = fwidth(x[2][1]);
    result[2][2] = fwidth(x[2][2]);
    result[2][3] = fwidth(x[2][3]);
    result[3][0] = fwidth(x[3][0]);
    result[3][1] = fwidth(x[3][1]);
    result[3][2] = fwidth(x[3][2]);
    result[3][3] = fwidth(x[3][3]);
    return result;
}


/* Functions named operator.z= */
native bool3 operator.z=(bool3, bool);
native bool4 operator.z=(bool4, bool);
native uint3 operator.z=(uint3, uint);
native uint4 operator.z=(uint4, uint);
native int3 operator.z=(int3, int);
native int4 operator.z=(int4, int);
native float3 operator.z=(float3, float);
native float4 operator.z=(float4, float);

/* Functions named operator.x= */
native bool2 operator.x=(bool2, bool);
native bool3 operator.x=(bool3, bool);
native bool4 operator.x=(bool4, bool);
native uint2 operator.x=(uint2, uint);
native uint3 operator.x=(uint3, uint);
native uint4 operator.x=(uint4, uint);
native int2 operator.x=(int2, int);
native int3 operator.x=(int3, int);
native int4 operator.x=(int4, int);
native float2 operator.x=(float2, float);
native float3 operator.x=(float3, float);
native float4 operator.x=(float4, float);

/* Functions named operator.xy= */
bool2 operator.xy=(bool2 v, bool2 c) {
    bool2 result = v;
    result.x = c.x;
    result.y = c.y;
    return result;
}
bool3 operator.xy=(bool3 v, bool2 c) {
    bool3 result = v;
    result.x = c.x;
    result.y = c.y;
    return result;
}
bool4 operator.xy=(bool4 v, bool2 c) {
    bool4 result = v;
    result.x = c.x;
    result.y = c.y;
    return result;
}
uint2 operator.xy=(uint2 v, uint2 c) {
    uint2 result = v;
    result.x = c.x;
    result.y = c.y;
    return result;
}
uint3 operator.xy=(uint3 v, uint2 c) {
    uint3 result = v;
    result.x = c.x;
    result.y = c.y;
    return result;
}
uint4 operator.xy=(uint4 v, uint2 c) {
    uint4 result = v;
    result.x = c.x;
    result.y = c.y;
    return result;
}
int2 operator.xy=(int2 v, int2 c) {
    int2 result = v;
    result.x = c.x;
    result.y = c.y;
    return result;
}
int3 operator.xy=(int3 v, int2 c) {
    int3 result = v;
    result.x = c.x;
    result.y = c.y;
    return result;
}
int4 operator.xy=(int4 v, int2 c) {
    int4 result = v;
    result.x = c.x;
    result.y = c.y;
    return result;
}
float2 operator.xy=(float2 v, float2 c) {
    float2 result = v;
    result.x = c.x;
    result.y = c.y;
    return result;
}
float3 operator.xy=(float3 v, float2 c) {
    float3 result = v;
    result.x = c.x;
    result.y = c.y;
    return result;
}
float4 operator.xy=(float4 v, float2 c) {
    float4 result = v;
    result.x = c.x;
    result.y = c.y;
    return result;
}

/* Functions named operator.yxw */
bool3 operator.yxw(bool4 v) {
    bool3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.w;
    return result;
}
uint3 operator.yxw(uint4 v) {
    uint3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.w;
    return result;
}
int3 operator.yxw(int4 v) {
    int3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.w;
    return result;
}
float3 operator.yxw(float4 v) {
    float3 result;
    result.x = v.y;
    result.y = v.x;
    result.z = v.w;
    return result;
}

/* Functions named operator.xxwy */
bool4 operator.xxwy(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.w;
    result.w = v.y;
    return result;
}
uint4 operator.xxwy(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.w;
    result.w = v.y;
    return result;
}
int4 operator.xxwy(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.w;
    result.w = v.y;
    return result;
}
float4 operator.xxwy(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.x;
    result.z = v.w;
    result.w = v.y;
    return result;
}

/* Functions named operator.yw */
bool2 operator.yw(bool4 v) {
    bool2 result;
    result.x = v.y;
    result.y = v.w;
    return result;
}
uint2 operator.yw(uint4 v) {
    uint2 result;
    result.x = v.y;
    result.y = v.w;
    return result;
}
int2 operator.yw(int4 v) {
    int2 result;
    result.x = v.y;
    result.y = v.w;
    return result;
}
float2 operator.yw(float4 v) {
    float2 result;
    result.x = v.y;
    result.y = v.w;
    return result;
}

/* Functions named operator.zxwx */
bool4 operator.zxwx(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.w;
    result.w = v.x;
    return result;
}
uint4 operator.zxwx(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.w;
    result.w = v.x;
    return result;
}
int4 operator.zxwx(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.w;
    result.w = v.x;
    return result;
}
float4 operator.zxwx(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.x;
    result.z = v.w;
    result.w = v.x;
    return result;
}

/* Functions named operator.yzyy */
bool4 operator.yzyy(bool3 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    result.w = v.y;
    return result;
}
bool4 operator.yzyy(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    result.w = v.y;
    return result;
}
uint4 operator.yzyy(uint3 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    result.w = v.y;
    return result;
}
uint4 operator.yzyy(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    result.w = v.y;
    return result;
}
int4 operator.yzyy(int3 v) {
    int4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    result.w = v.y;
    return result;
}
int4 operator.yzyy(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    result.w = v.y;
    return result;
}
float4 operator.yzyy(float3 v) {
    float4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    result.w = v.y;
    return result;
}
float4 operator.yzyy(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.z;
    result.z = v.y;
    result.w = v.y;
    return result;
}

/* Functions named operator.wwx */
bool3 operator.wwx(bool4 v) {
    bool3 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.x;
    return result;
}
uint3 operator.wwx(uint4 v) {
    uint3 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.x;
    return result;
}
int3 operator.wwx(int4 v) {
    int3 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.x;
    return result;
}
float3 operator.wwx(float4 v) {
    float3 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.x;
    return result;
}

/* Functions named operator.xwyx */
bool4 operator.xwyx(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.y;
    result.w = v.x;
    return result;
}
uint4 operator.xwyx(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.y;
    result.w = v.x;
    return result;
}
int4 operator.xwyx(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.y;
    result.w = v.x;
    return result;
}
float4 operator.xwyx(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.w;
    result.z = v.y;
    result.w = v.x;
    return result;
}

/* Functions named operator.wxx */
bool3 operator.wxx(bool4 v) {
    bool3 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.x;
    return result;
}
uint3 operator.wxx(uint4 v) {
    uint3 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.x;
    return result;
}
int3 operator.wxx(int4 v) {
    int3 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.x;
    return result;
}
float3 operator.wxx(float4 v) {
    float3 result;
    result.x = v.w;
    result.y = v.x;
    result.z = v.x;
    return result;
}

/* Functions named operator.xyyx */
bool4 operator.xyyx(bool2 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
bool4 operator.xyyx(bool3 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
bool4 operator.xyyx(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
uint4 operator.xyyx(uint2 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
uint4 operator.xyyx(uint3 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
uint4 operator.xyyx(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
int4 operator.xyyx(int2 v) {
    int4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
int4 operator.xyyx(int3 v) {
    int4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
int4 operator.xyyx(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
float4 operator.xyyx(float2 v) {
    float4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
float4 operator.xyyx(float3 v) {
    float4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}
float4 operator.xyyx(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.x;
    return result;
}

/* Functions named operator.ywxx */
bool4 operator.ywxx(bool4 v) {
    bool4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.x;
    result.w = v.x;
    return result;
}
uint4 operator.ywxx(uint4 v) {
    uint4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.x;
    result.w = v.x;
    return result;
}
int4 operator.ywxx(int4 v) {
    int4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.x;
    result.w = v.x;
    return result;
}
float4 operator.ywxx(float4 v) {
    float4 result;
    result.x = v.y;
    result.y = v.w;
    result.z = v.x;
    result.w = v.x;
    return result;
}

/* Functions named operator.wwyw */
bool4 operator.wwyw(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.y;
    result.w = v.w;
    return result;
}
uint4 operator.wwyw(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.y;
    result.w = v.w;
    return result;
}
int4 operator.wwyw(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.y;
    result.w = v.w;
    return result;
}
float4 operator.wwyw(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.y;
    result.w = v.w;
    return result;
}

/* Functions named operator.zwyx= */
bool4 operator.zwyx=(bool4 v, bool4 c) {
    bool4 result = v;
    result.z = c.x;
    result.w = c.y;
    result.y = c.z;
    result.x = c.w;
    return result;
}
uint4 operator.zwyx=(uint4 v, uint4 c) {
    uint4 result = v;
    result.z = c.x;
    result.w = c.y;
    result.y = c.z;
    result.x = c.w;
    return result;
}
int4 operator.zwyx=(int4 v, int4 c) {
    int4 result = v;
    result.z = c.x;
    result.w = c.y;
    result.y = c.z;
    result.x = c.w;
    return result;
}
float4 operator.zwyx=(float4 v, float4 c) {
    float4 result = v;
    result.z = c.x;
    result.w = c.y;
    result.y = c.z;
    result.x = c.w;
    return result;
}

/* Functions named operator.xzy= */
bool3 operator.xzy=(bool3 v, bool3 c) {
    bool3 result = v;
    result.x = c.x;
    result.z = c.y;
    result.y = c.z;
    return result;
}
bool4 operator.xzy=(bool4 v, bool3 c) {
    bool4 result = v;
    result.x = c.x;
    result.z = c.y;
    result.y = c.z;
    return result;
}
uint3 operator.xzy=(uint3 v, uint3 c) {
    uint3 result = v;
    result.x = c.x;
    result.z = c.y;
    result.y = c.z;
    return result;
}
uint4 operator.xzy=(uint4 v, uint3 c) {
    uint4 result = v;
    result.x = c.x;
    result.z = c.y;
    result.y = c.z;
    return result;
}
int3 operator.xzy=(int3 v, int3 c) {
    int3 result = v;
    result.x = c.x;
    result.z = c.y;
    result.y = c.z;
    return result;
}
int4 operator.xzy=(int4 v, int3 c) {
    int4 result = v;
    result.x = c.x;
    result.z = c.y;
    result.y = c.z;
    return result;
}
float3 operator.xzy=(float3 v, float3 c) {
    float3 result = v;
    result.x = c.x;
    result.z = c.y;
    result.y = c.z;
    return result;
}
float4 operator.xzy=(float4 v, float3 c) {
    float4 result = v;
    result.x = c.x;
    result.z = c.y;
    result.y = c.z;
    return result;
}

/* Functions named operator.xyyw */
bool4 operator.xyyw(bool4 v) {
    bool4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.w;
    return result;
}
uint4 operator.xyyw(uint4 v) {
    uint4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.w;
    return result;
}
int4 operator.xyyw(int4 v) {
    int4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.w;
    return result;
}
float4 operator.xyyw(float4 v) {
    float4 result;
    result.x = v.x;
    result.y = v.y;
    result.z = v.y;
    result.w = v.w;
    return result;
}

/* Functions named lerp */
float lerp(float x, float y, float s) {
    return x * (1 - s) + y * s;
}
float2 lerp(float2 x, float2 y, float2 z) {
    float2 result;
    result[0] = lerp(x[0], y[0], z[0]);
    result[1] = lerp(x[1], y[1], z[1]);
    return result;
}
float3 lerp(float3 x, float3 y, float3 z) {
    float3 result;
    result[0] = lerp(x[0], y[0], z[0]);
    result[1] = lerp(x[1], y[1], z[1]);
    result[2] = lerp(x[2], y[2], z[2]);
    return result;
}
float4 lerp(float4 x, float4 y, float4 z) {
    float4 result;
    result[0] = lerp(x[0], y[0], z[0]);
    result[1] = lerp(x[1], y[1], z[1]);
    result[2] = lerp(x[2], y[2], z[2]);
    result[3] = lerp(x[3], y[3], z[3]);
    return result;
}
float2x2 lerp(float2x2 x, float2x2 y, float2x2 z) {
    float2x2 result;
    result[0][0] = lerp(x[0][0], y[0][0], z[0][0]);
    result[0][1] = lerp(x[0][1], y[0][1], z[0][1]);
    result[1][0] = lerp(x[1][0], y[1][0], z[1][0]);
    result[1][1] = lerp(x[1][1], y[1][1], z[1][1]);
    return result;
}
float2x3 lerp(float2x3 x, float2x3 y, float2x3 z) {
    float2x3 result;
    result[0][0] = lerp(x[0][0], y[0][0], z[0][0]);
    result[0][1] = lerp(x[0][1], y[0][1], z[0][1]);
    result[0][2] = lerp(x[0][2], y[0][2], z[0][2]);
    result[1][0] = lerp(x[1][0], y[1][0], z[1][0]);
    result[1][1] = lerp(x[1][1], y[1][1], z[1][1]);
    result[1][2] = lerp(x[1][2], y[1][2], z[1][2]);
    return result;
}
float2x4 lerp(float2x4 x, float2x4 y, float2x4 z) {
    float2x4 result;
    result[0][0] = lerp(x[0][0], y[0][0], z[0][0]);
    result[0][1] = lerp(x[0][1], y[0][1], z[0][1]);
    result[0][2] = lerp(x[0][2], y[0][2], z[0][2]);
    result[0][3] = lerp(x[0][3], y[0][3], z[0][3]);
    result[1][0] = lerp(x[1][0], y[1][0], z[1][0]);
    result[1][1] = lerp(x[1][1], y[1][1], z[1][1]);
    result[1][2] = lerp(x[1][2], y[1][2], z[1][2]);
    result[1][3] = lerp(x[1][3], y[1][3], z[1][3]);
    return result;
}
float3x2 lerp(float3x2 x, float3x2 y, float3x2 z) {
    float3x2 result;
    result[0][0] = lerp(x[0][0], y[0][0], z[0][0]);
    result[0][1] = lerp(x[0][1], y[0][1], z[0][1]);
    result[1][0] = lerp(x[1][0], y[1][0], z[1][0]);
    result[1][1] = lerp(x[1][1], y[1][1], z[1][1]);
    result[2][0] = lerp(x[2][0], y[2][0], z[2][0]);
    result[2][1] = lerp(x[2][1], y[2][1], z[2][1]);
    return result;
}
float3x3 lerp(float3x3 x, float3x3 y, float3x3 z) {
    float3x3 result;
    result[0][0] = lerp(x[0][0], y[0][0], z[0][0]);
    result[0][1] = lerp(x[0][1], y[0][1], z[0][1]);
    result[0][2] = lerp(x[0][2], y[0][2], z[0][2]);
    result[1][0] = lerp(x[1][0], y[1][0], z[1][0]);
    result[1][1] = lerp(x[1][1], y[1][1], z[1][1]);
    result[1][2] = lerp(x[1][2], y[1][2], z[1][2]);
    result[2][0] = lerp(x[2][0], y[2][0], z[2][0]);
    result[2][1] = lerp(x[2][1], y[2][1], z[2][1]);
    result[2][2] = lerp(x[2][2], y[2][2], z[2][2]);
    return result;
}
float3x4 lerp(float3x4 x, float3x4 y, float3x4 z) {
    float3x4 result;
    result[0][0] = lerp(x[0][0], y[0][0], z[0][0]);
    result[0][1] = lerp(x[0][1], y[0][1], z[0][1]);
    result[0][2] = lerp(x[0][2], y[0][2], z[0][2]);
    result[0][3] = lerp(x[0][3], y[0][3], z[0][3]);
    result[1][0] = lerp(x[1][0], y[1][0], z[1][0]);
    result[1][1] = lerp(x[1][1], y[1][1], z[1][1]);
    result[1][2] = lerp(x[1][2], y[1][2], z[1][2]);
    result[1][3] = lerp(x[1][3], y[1][3], z[1][3]);
    result[2][0] = lerp(x[2][0], y[2][0], z[2][0]);
    result[2][1] = lerp(x[2][1], y[2][1], z[2][1]);
    result[2][2] = lerp(x[2][2], y[2][2], z[2][2]);
    result[2][3] = lerp(x[2][3], y[2][3], z[2][3]);
    return result;
}
float4x2 lerp(float4x2 x, float4x2 y, float4x2 z) {
    float4x2 result;
    result[0][0] = lerp(x[0][0], y[0][0], z[0][0]);
    result[0][1] = lerp(x[0][1], y[0][1], z[0][1]);
    result[1][0] = lerp(x[1][0], y[1][0], z[1][0]);
    result[1][1] = lerp(x[1][1], y[1][1], z[1][1]);
    result[2][0] = lerp(x[2][0], y[2][0], z[2][0]);
    result[2][1] = lerp(x[2][1], y[2][1], z[2][1]);
    result[3][0] = lerp(x[3][0], y[3][0], z[3][0]);
    result[3][1] = lerp(x[3][1], y[3][1], z[3][1]);
    return result;
}
float4x3 lerp(float4x3 x, float4x3 y, float4x3 z) {
    float4x3 result;
    result[0][0] = lerp(x[0][0], y[0][0], z[0][0]);
    result[0][1] = lerp(x[0][1], y[0][1], z[0][1]);
    result[0][2] = lerp(x[0][2], y[0][2], z[0][2]);
    result[1][0] = lerp(x[1][0], y[1][0], z[1][0]);
    result[1][1] = lerp(x[1][1], y[1][1], z[1][1]);
    result[1][2] = lerp(x[1][2], y[1][2], z[1][2]);
    result[2][0] = lerp(x[2][0], y[2][0], z[2][0]);
    result[2][1] = lerp(x[2][1], y[2][1], z[2][1]);
    result[2][2] = lerp(x[2][2], y[2][2], z[2][2]);
    result[3][0] = lerp(x[3][0], y[3][0], z[3][0]);
    result[3][1] = lerp(x[3][1], y[3][1], z[3][1]);
    result[3][2] = lerp(x[3][2], y[3][2], z[3][2]);
    return result;
}
float4x4 lerp(float4x4 x, float4x4 y, float4x4 z) {
    float4x4 result;
    result[0][0] = lerp(x[0][0], y[0][0], z[0][0]);
    result[0][1] = lerp(x[0][1], y[0][1], z[0][1]);
    result[0][2] = lerp(x[0][2], y[0][2], z[0][2]);
    result[0][3] = lerp(x[0][3], y[0][3], z[0][3]);
    result[1][0] = lerp(x[1][0], y[1][0], z[1][0]);
    result[1][1] = lerp(x[1][1], y[1][1], z[1][1]);
    result[1][2] = lerp(x[1][2], y[1][2], z[1][2]);
    result[1][3] = lerp(x[1][3], y[1][3], z[1][3]);
    result[2][0] = lerp(x[2][0], y[2][0], z[2][0]);
    result[2][1] = lerp(x[2][1], y[2][1], z[2][1]);
    result[2][2] = lerp(x[2][2], y[2][2], z[2][2]);
    result[2][3] = lerp(x[2][3], y[2][3], z[2][3]);
    result[3][0] = lerp(x[3][0], y[3][0], z[3][0]);
    result[3][1] = lerp(x[3][1], y[3][1], z[3][1]);
    result[3][2] = lerp(x[3][2], y[3][2], z[3][2]);
    result[3][3] = lerp(x[3][3], y[3][3], z[3][3]);
    return result;
}

/* Functions named distance */
float distance(float x, float y) {
    return length(x - y);
}
float distance(float2 x, float2 y) {
    return length(x - y);
}
float distance(float3 x, float3 y) {
    return length(x - y);
}
float distance(float4 x, float4 y) {
    return length(x - y);
}


/* Functions named operator.zyzz */
bool4 operator.zyzz(bool3 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    result.w = v.z;
    return result;
}
bool4 operator.zyzz(bool4 v) {
    bool4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    result.w = v.z;
    return result;
}
uint4 operator.zyzz(uint3 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    result.w = v.z;
    return result;
}
uint4 operator.zyzz(uint4 v) {
    uint4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    result.w = v.z;
    return result;
}
int4 operator.zyzz(int3 v) {
    int4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    result.w = v.z;
    return result;
}
int4 operator.zyzz(int4 v) {
    int4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    result.w = v.z;
    return result;
}
float4 operator.zyzz(float3 v) {
    float4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    result.w = v.z;
    return result;
}
float4 operator.zyzz(float4 v) {
    float4 result;
    result.x = v.z;
    result.y = v.y;
    result.z = v.z;
    result.w = v.z;
    return result;
}

/* Functions named operator.w */
native bool operator.w(bool4);
native uint operator.w(uint4);
native int operator.w(int4);
native float operator.w(float4);

/* Functions named operator.wwxz */
bool4 operator.wwxz(bool4 v) {
    bool4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.x;
    result.w = v.z;
    return result;
}
uint4 operator.wwxz(uint4 v) {
    uint4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.x;
    result.w = v.z;
    return result;
}
int4 operator.wwxz(int4 v) {
    int4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.x;
    result.w = v.z;
    return result;
}
float4 operator.wwxz(float4 v) {
    float4 result;
    result.x = v.w;
    result.y = v.w;
    result.z = v.x;
    result.w = v.z;
    return result;
}

/* Functions named operator.xy */
bool2 operator.xy(bool2 v) {
    bool2 result;
    result.x = v.x;
    result.y = v.y;
    return result;
}
bool2 operator.xy(bool3 v) {
    bool2 result;
    result.x = v.x;
    result.y = v.y;
    return result;
}
bool2 operator.xy(bool4 v) {
    bool2 result;
    result.x = v.x;
    result.y = v.y;
    return result;
}
uint2 operator.xy(uint2 v) {
    uint2 result;
    result.x = v.x;
    result.y = v.y;
    return result;
}
uint2 operator.xy(uint3 v) {
    uint2 result;
    result.x = v.x;
    result.y = v.y;
    return result;
}
uint2 operator.xy(uint4 v) {
    uint2 result;
    result.x = v.x;
    result.y = v.y;
    return result;
}
int2 operator.xy(int2 v) {
    int2 result;
    result.x = v.x;
    result.y = v.y;
    return result;
}
int2 operator.xy(int3 v) {
    int2 result;
    result.x = v.x;
    result.y = v.y;
    return result;
}
int2 operator.xy(int4 v) {
    int2 result;
    result.x = v.x;
    result.y = v.y;
    return result;
}
float2 operator.xy(float2 v) {
    float2 result;
    result.x = v.x;
    result.y = v.y;
    return result;
}
float2 operator.xy(float3 v) {
    float2 result;
    result.x = v.x;
    result.y = v.y;
    return result;
}
float2 operator.xy(float4 v) {
    float2 result;
    result.x = v.x;
    result.y = v.y;
    return result;
}
