WHLSLStandardLibrary.txt   [plain text]


// 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 matrix<bool, 2, 2>;
typedef bool2x2 = matrix<bool, 2, 2>;
native typedef matrix<bool, 2, 3>;
typedef bool2x3 = matrix<bool, 2, 3>;
native typedef matrix<bool, 2, 4>;
typedef bool2x4 = matrix<bool, 2, 4>;
native typedef matrix<bool, 3, 2>;
typedef bool3x2 = matrix<bool, 3, 2>;
native typedef matrix<bool, 3, 3>;
typedef bool3x3 = matrix<bool, 3, 3>;
native typedef matrix<bool, 3, 4>;
typedef bool3x4 = matrix<bool, 3, 4>;
native typedef matrix<bool, 4, 2>;
typedef bool4x2 = matrix<bool, 4, 2>;
native typedef matrix<bool, 4, 3>;
typedef bool4x3 = matrix<bool, 4, 3>;
native typedef matrix<bool, 4, 4>;
typedef bool4x4 = matrix<bool, 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 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 transpose */
float transpose(float x) {
    return x;
}
float2x2 transpose(float2x2 x) {
    float2x2 result;
    result[0][0] = x[0][0];
    result[1][0] = x[0][1];
    result[0][1] = x[1][0];
    result[1][1] = x[1][1];
    return result;
}
float3x2 transpose(float2x3 x) {
    float3x2 result;
    result[0][0] = x[0][0];
    result[1][0] = x[0][1];
    result[2][0] = x[0][2];
    result[0][1] = x[1][0];
    result[1][1] = x[1][1];
    result[2][1] = x[1][2];
    return result;
}
float4x2 transpose(float2x4 x) {
    float4x2 result;
    result[0][0] = x[0][0];
    result[1][0] = x[0][1];
    result[2][0] = x[0][2];
    result[3][0] = x[0][3];
    result[0][1] = x[1][0];
    result[1][1] = x[1][1];
    result[2][1] = x[1][2];
    result[3][1] = x[1][3];
    return result;
}
float2x3 transpose(float3x2 x) {
    float2x3 result;
    result[0][0] = x[0][0];
    result[1][0] = x[0][1];
    result[0][1] = x[1][0];
    result[1][1] = x[1][1];
    result[0][2] = x[2][0];
    result[1][2] = x[2][1];
    return result;
}
float3x3 transpose(float3x3 x) {
    float3x3 result;
    result[0][0] = x[0][0];
    result[1][0] = x[0][1];
    result[2][0] = x[0][2];
    result[0][1] = x[1][0];
    result[1][1] = x[1][1];
    result[2][1] = x[1][2];
    result[0][2] = x[2][0];
    result[1][2] = x[2][1];
    result[2][2] = x[2][2];
    return result;
}
float4x3 transpose(float3x4 x) {
    float4x3 result;
    result[0][0] = x[0][0];
    result[1][0] = x[0][1];
    result[2][0] = x[0][2];
    result[3][0] = x[0][3];
    result[0][1] = x[1][0];
    result[1][1] = x[1][1];
    result[2][1] = x[1][2];
    result[3][1] = x[1][3];
    result[0][2] = x[2][0];
    result[1][2] = x[2][1];
    result[2][2] = x[2][2];
    result[3][2] = x[2][3];
    return result;
}
float2x4 transpose(float4x2 x) {
    float2x4 result;
    result[0][0] = x[0][0];
    result[1][0] = x[0][1];
    result[0][1] = x[1][0];
    result[1][1] = x[1][1];
    result[0][2] = x[2][0];
    result[1][2] = x[2][1];
    result[0][3] = x[3][0];
    result[1][3] = x[3][1];
    return result;
}
float3x4 transpose(float4x3 x) {
    float3x4 result;
    result[0][0] = x[0][0];
    result[1][0] = x[0][1];
    result[2][0] = x[0][2];
    result[0][1] = x[1][0];
    result[1][1] = x[1][1];
    result[2][1] = x[1][2];
    result[0][2] = x[2][0];
    result[1][2] = x[2][1];
    result[2][2] = x[2][2];
    result[0][3] = x[3][0];
    result[1][3] = x[3][1];
    result[2][3] = x[3][2];
    return result;
}
float4x4 transpose(float4x4 x) {
    float4x4 result;
    result[0][0] = x[0][0];
    result[1][0] = x[0][1];
    result[2][0] = x[0][2];
    result[3][0] = x[0][3];
    result[0][1] = x[1][0];
    result[1][1] = x[1][1];
    result[2][1] = x[1][2];
    result[3][1] = x[1][3];
    result[0][2] = x[2][0];
    result[1][2] = x[2][1];
    result[2][2] = x[2][2];
    result[3][2] = x[2][3];
    result[0][3] = x[3][0];
    result[1][3] = x[3][1];
    result[2][3] = x[3][2];
    result[3][3] = x[3][3];
    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 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[1][0] = saturate(x[1][0]);
    result[0][1] = saturate(x[0][1]);
    result[1][1] = saturate(x[1][1]);
    return result;
}
float3x2 saturate(float3x2 x) {
    float3x2 result;
    result[0][0] = saturate(x[0][0]);
    result[1][0] = saturate(x[1][0]);
    result[2][0] = saturate(x[2][0]);
    result[0][1] = saturate(x[0][1]);
    result[1][1] = saturate(x[1][1]);
    result[2][1] = saturate(x[2][1]);
    return result;
}
float4x2 saturate(float4x2 x) {
    float4x2 result;
    result[0][0] = saturate(x[0][0]);
    result[1][0] = saturate(x[1][0]);
    result[2][0] = saturate(x[2][0]);
    result[3][0] = saturate(x[3][0]);
    result[0][1] = saturate(x[0][1]);
    result[1][1] = saturate(x[1][1]);
    result[2][1] = saturate(x[2][1]);
    result[3][1] = saturate(x[3][1]);
    return result;
}
float2x3 saturate(float2x3 x) {
    float2x3 result;
    result[0][0] = saturate(x[0][0]);
    result[1][0] = saturate(x[1][0]);
    result[0][1] = saturate(x[0][1]);
    result[1][1] = saturate(x[1][1]);
    result[0][2] = saturate(x[0][2]);
    result[1][2] = saturate(x[1][2]);
    return result;
}
float3x3 saturate(float3x3 x) {
    float3x3 result;
    result[0][0] = saturate(x[0][0]);
    result[1][0] = saturate(x[1][0]);
    result[2][0] = saturate(x[2][0]);
    result[0][1] = saturate(x[0][1]);
    result[1][1] = saturate(x[1][1]);
    result[2][1] = saturate(x[2][1]);
    result[0][2] = saturate(x[0][2]);
    result[1][2] = saturate(x[1][2]);
    result[2][2] = saturate(x[2][2]);
    return result;
}
float4x3 saturate(float4x3 x) {
    float4x3 result;
    result[0][0] = saturate(x[0][0]);
    result[1][0] = saturate(x[1][0]);
    result[2][0] = saturate(x[2][0]);
    result[3][0] = saturate(x[3][0]);
    result[0][1] = saturate(x[0][1]);
    result[1][1] = saturate(x[1][1]);
    result[2][1] = saturate(x[2][1]);
    result[3][1] = saturate(x[3][1]);
    result[0][2] = saturate(x[0][2]);
    result[1][2] = saturate(x[1][2]);
    result[2][2] = saturate(x[2][2]);
    result[3][2] = saturate(x[3][2]);
    return result;
}
float2x4 saturate(float2x4 x) {
    float2x4 result;
    result[0][0] = saturate(x[0][0]);
    result[1][0] = saturate(x[1][0]);
    result[0][1] = saturate(x[0][1]);
    result[1][1] = saturate(x[1][1]);
    result[0][2] = saturate(x[0][2]);
    result[1][2] = saturate(x[1][2]);
    result[0][3] = saturate(x[0][3]);
    result[1][3] = saturate(x[1][3]);
    return result;
}
float3x4 saturate(float3x4 x) {
    float3x4 result;
    result[0][0] = saturate(x[0][0]);
    result[1][0] = saturate(x[1][0]);
    result[2][0] = saturate(x[2][0]);
    result[0][1] = saturate(x[0][1]);
    result[1][1] = saturate(x[1][1]);
    result[2][1] = saturate(x[2][1]);
    result[0][2] = saturate(x[0][2]);
    result[1][2] = saturate(x[1][2]);
    result[2][2] = saturate(x[2][2]);
    result[0][3] = saturate(x[0][3]);
    result[1][3] = saturate(x[1][3]);
    result[2][3] = saturate(x[2][3]);
    return result;
}
float4x4 saturate(float4x4 x) {
    float4x4 result;
    result[0][0] = saturate(x[0][0]);
    result[1][0] = saturate(x[1][0]);
    result[2][0] = saturate(x[2][0]);
    result[3][0] = saturate(x[3][0]);
    result[0][1] = saturate(x[0][1]);
    result[1][1] = saturate(x[1][1]);
    result[2][1] = saturate(x[2][1]);
    result[3][1] = saturate(x[3][1]);
    result[0][2] = saturate(x[0][2]);
    result[1][2] = saturate(x[1][2]);
    result[2][2] = saturate(x[2][2]);
    result[3][2] = saturate(x[3][2]);
    result[0][3] = saturate(x[0][3]);
    result[1][3] = saturate(x[1][3]);
    result[2][3] = saturate(x[2][3]);
    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[1][0] = mad(x[1][0], y[1][0], z[1][0]);
    result[0][1] = mad(x[0][1], y[0][1], z[0][1]);
    result[1][1] = mad(x[1][1], y[1][1], z[1][1]);
    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[1][0] = mad(x[1][0], y[1][0], z[1][0]);
    result[2][0] = mad(x[2][0], y[2][0], z[2][0]);
    result[0][1] = mad(x[0][1], y[0][1], z[0][1]);
    result[1][1] = mad(x[1][1], y[1][1], z[1][1]);
    result[2][1] = mad(x[2][1], y[2][1], z[2][1]);
    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[1][0] = mad(x[1][0], y[1][0], z[1][0]);
    result[2][0] = mad(x[2][0], y[2][0], z[2][0]);
    result[3][0] = mad(x[3][0], y[3][0], z[3][0]);
    result[0][1] = mad(x[0][1], y[0][1], z[0][1]);
    result[1][1] = mad(x[1][1], y[1][1], z[1][1]);
    result[2][1] = mad(x[2][1], y[2][1], z[2][1]);
    result[3][1] = mad(x[3][1], y[3][1], z[3][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[1][0] = mad(x[1][0], y[1][0], z[1][0]);
    result[0][1] = mad(x[0][1], y[0][1], z[0][1]);
    result[1][1] = mad(x[1][1], y[1][1], z[1][1]);
    result[0][2] = mad(x[0][2], y[0][2], z[0][2]);
    result[1][2] = mad(x[1][2], y[1][2], z[1][2]);
    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[1][0] = mad(x[1][0], y[1][0], z[1][0]);
    result[2][0] = mad(x[2][0], y[2][0], z[2][0]);
    result[0][1] = mad(x[0][1], y[0][1], z[0][1]);
    result[1][1] = mad(x[1][1], y[1][1], z[1][1]);
    result[2][1] = mad(x[2][1], y[2][1], z[2][1]);
    result[0][2] = mad(x[0][2], y[0][2], z[0][2]);
    result[1][2] = mad(x[1][2], y[1][2], z[1][2]);
    result[2][2] = mad(x[2][2], y[2][2], z[2][2]);
    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[1][0] = mad(x[1][0], y[1][0], z[1][0]);
    result[2][0] = mad(x[2][0], y[2][0], z[2][0]);
    result[3][0] = mad(x[3][0], y[3][0], z[3][0]);
    result[0][1] = mad(x[0][1], y[0][1], z[0][1]);
    result[1][1] = mad(x[1][1], y[1][1], z[1][1]);
    result[2][1] = mad(x[2][1], y[2][1], z[2][1]);
    result[3][1] = mad(x[3][1], y[3][1], z[3][1]);
    result[0][2] = mad(x[0][2], y[0][2], z[0][2]);
    result[1][2] = mad(x[1][2], y[1][2], z[1][2]);
    result[2][2] = mad(x[2][2], y[2][2], z[2][2]);
    result[3][2] = mad(x[3][2], y[3][2], z[3][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[1][0] = mad(x[1][0], y[1][0], z[1][0]);
    result[0][1] = mad(x[0][1], y[0][1], z[0][1]);
    result[1][1] = mad(x[1][1], y[1][1], z[1][1]);
    result[0][2] = mad(x[0][2], y[0][2], z[0][2]);
    result[1][2] = mad(x[1][2], y[1][2], z[1][2]);
    result[0][3] = mad(x[0][3], y[0][3], z[0][3]);
    result[1][3] = mad(x[1][3], y[1][3], z[1][3]);
    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[1][0] = mad(x[1][0], y[1][0], z[1][0]);
    result[2][0] = mad(x[2][0], y[2][0], z[2][0]);
    result[0][1] = mad(x[0][1], y[0][1], z[0][1]);
    result[1][1] = mad(x[1][1], y[1][1], z[1][1]);
    result[2][1] = mad(x[2][1], y[2][1], z[2][1]);
    result[0][2] = mad(x[0][2], y[0][2], z[0][2]);
    result[1][2] = mad(x[1][2], y[1][2], z[1][2]);
    result[2][2] = mad(x[2][2], y[2][2], z[2][2]);
    result[0][3] = mad(x[0][3], y[0][3], z[0][3]);
    result[1][3] = mad(x[1][3], y[1][3], z[1][3]);
    result[2][3] = mad(x[2][3], y[2][3], z[2][3]);
    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[1][0] = mad(x[1][0], y[1][0], z[1][0]);
    result[2][0] = mad(x[2][0], y[2][0], z[2][0]);
    result[3][0] = mad(x[3][0], y[3][0], z[3][0]);
    result[0][1] = mad(x[0][1], y[0][1], z[0][1]);
    result[1][1] = mad(x[1][1], y[1][1], z[1][1]);
    result[2][1] = mad(x[2][1], y[2][1], z[2][1]);
    result[3][1] = mad(x[3][1], y[3][1], z[3][1]);
    result[0][2] = mad(x[0][2], y[0][2], z[0][2]);
    result[1][2] = mad(x[1][2], y[1][2], z[1][2]);
    result[2][2] = mad(x[2][2], y[2][2], z[2][2]);
    result[3][2] = mad(x[3][2], y[3][2], z[3][2]);
    result[0][3] = mad(x[0][3], y[0][3], z[0][3]);
    result[1][3] = mad(x[1][3], y[1][3], z[1][3]);
    result[2][3] = mad(x[2][3], y[2][3], z[2][3]);
    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);
    *ip = x - float(result);
    return float(result);
}
float2 modf(float2 x, thread float2* y) {
    float2 result;
    float buffer;
    result[0] = modf(x[0], &buffer);
    (*y)[0] = buffer;
    result[1] = modf(x[1], &buffer);
    (*y)[1] = buffer;
    return result;
}
float3 modf(float3 x, thread float3* y) {
    float3 result;
    float buffer;
    result[0] = modf(x[0], &buffer);
    (*y)[0] = buffer;
    result[1] = modf(x[1], &buffer);
    (*y)[1] = buffer;
    result[2] = modf(x[2], &buffer);
    (*y)[2] = buffer;
    return result;
}
float4 modf(float4 x, thread float4* y) {
    float4 result;
    float buffer;
    result[0] = modf(x[0], &buffer);
    (*y)[0] = buffer;
    result[1] = modf(x[1], &buffer);
    (*y)[1] = buffer;
    result[2] = modf(x[2], &buffer);
    (*y)[2] = buffer;
    result[3] = modf(x[3], &buffer);
    (*y)[3] = buffer;
    return result;
}
float2x2 modf(float2x2 x, thread float2x2* y) {
    float2x2 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    (*y)[0][0] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    (*y)[1][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    (*y)[0][1] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    (*y)[1][1] = buffer;
    return result;
}
float3x2 modf(float3x2 x, thread float3x2* y) {
    float3x2 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    (*y)[0][0] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    (*y)[1][0] = buffer;
    result[2][0] = modf(x[2][0], &buffer);
    (*y)[2][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    (*y)[0][1] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    (*y)[1][1] = buffer;
    result[2][1] = modf(x[2][1], &buffer);
    (*y)[2][1] = buffer;
    return result;
}
float4x2 modf(float4x2 x, thread float4x2* y) {
    float4x2 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    (*y)[0][0] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    (*y)[1][0] = buffer;
    result[2][0] = modf(x[2][0], &buffer);
    (*y)[2][0] = buffer;
    result[3][0] = modf(x[3][0], &buffer);
    (*y)[3][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    (*y)[0][1] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    (*y)[1][1] = buffer;
    result[2][1] = modf(x[2][1], &buffer);
    (*y)[2][1] = buffer;
    result[3][1] = modf(x[3][1], &buffer);
    (*y)[3][1] = buffer;
    return result;
}
float2x3 modf(float2x3 x, thread float2x3* y) {
    float2x3 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    (*y)[0][0] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    (*y)[1][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    (*y)[0][1] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    (*y)[1][1] = buffer;
    result[0][2] = modf(x[0][2], &buffer);
    (*y)[0][2] = buffer;
    result[1][2] = modf(x[1][2], &buffer);
    (*y)[1][2] = buffer;
    return result;
}
float3x3 modf(float3x3 x, thread float3x3* y) {
    float3x3 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    (*y)[0][0] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    (*y)[1][0] = buffer;
    result[2][0] = modf(x[2][0], &buffer);
    (*y)[2][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    (*y)[0][1] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    (*y)[1][1] = buffer;
    result[2][1] = modf(x[2][1], &buffer);
    (*y)[2][1] = buffer;
    result[0][2] = modf(x[0][2], &buffer);
    (*y)[0][2] = buffer;
    result[1][2] = modf(x[1][2], &buffer);
    (*y)[1][2] = buffer;
    result[2][2] = modf(x[2][2], &buffer);
    (*y)[2][2] = buffer;
    return result;
}
float4x3 modf(float4x3 x, thread float4x3* y) {
    float4x3 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    (*y)[0][0] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    (*y)[1][0] = buffer;
    result[2][0] = modf(x[2][0], &buffer);
    (*y)[2][0] = buffer;
    result[3][0] = modf(x[3][0], &buffer);
    (*y)[3][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    (*y)[0][1] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    (*y)[1][1] = buffer;
    result[2][1] = modf(x[2][1], &buffer);
    (*y)[2][1] = buffer;
    result[3][1] = modf(x[3][1], &buffer);
    (*y)[3][1] = buffer;
    result[0][2] = modf(x[0][2], &buffer);
    (*y)[0][2] = buffer;
    result[1][2] = modf(x[1][2], &buffer);
    (*y)[1][2] = buffer;
    result[2][2] = modf(x[2][2], &buffer);
    (*y)[2][2] = buffer;
    result[3][2] = modf(x[3][2], &buffer);
    (*y)[3][2] = buffer;
    return result;
}
float2x4 modf(float2x4 x, thread float2x4* y) {
    float2x4 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    (*y)[0][0] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    (*y)[1][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    (*y)[0][1] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    (*y)[1][1] = buffer;
    result[0][2] = modf(x[0][2], &buffer);
    (*y)[0][2] = buffer;
    result[1][2] = modf(x[1][2], &buffer);
    (*y)[1][2] = buffer;
    result[0][3] = modf(x[0][3], &buffer);
    (*y)[0][3] = buffer;
    result[1][3] = modf(x[1][3], &buffer);
    (*y)[1][3] = buffer;
    return result;
}
float3x4 modf(float3x4 x, thread float3x4* y) {
    float3x4 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    (*y)[0][0] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    (*y)[1][0] = buffer;
    result[2][0] = modf(x[2][0], &buffer);
    (*y)[2][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    (*y)[0][1] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    (*y)[1][1] = buffer;
    result[2][1] = modf(x[2][1], &buffer);
    (*y)[2][1] = buffer;
    result[0][2] = modf(x[0][2], &buffer);
    (*y)[0][2] = buffer;
    result[1][2] = modf(x[1][2], &buffer);
    (*y)[1][2] = buffer;
    result[2][2] = modf(x[2][2], &buffer);
    (*y)[2][2] = buffer;
    result[0][3] = modf(x[0][3], &buffer);
    (*y)[0][3] = buffer;
    result[1][3] = modf(x[1][3], &buffer);
    (*y)[1][3] = buffer;
    result[2][3] = modf(x[2][3], &buffer);
    (*y)[2][3] = buffer;
    return result;
}
float4x4 modf(float4x4 x, thread float4x4* y) {
    float4x4 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    (*y)[0][0] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    (*y)[1][0] = buffer;
    result[2][0] = modf(x[2][0], &buffer);
    (*y)[2][0] = buffer;
    result[3][0] = modf(x[3][0], &buffer);
    (*y)[3][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    (*y)[0][1] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    (*y)[1][1] = buffer;
    result[2][1] = modf(x[2][1], &buffer);
    (*y)[2][1] = buffer;
    result[3][1] = modf(x[3][1], &buffer);
    (*y)[3][1] = buffer;
    result[0][2] = modf(x[0][2], &buffer);
    (*y)[0][2] = buffer;
    result[1][2] = modf(x[1][2], &buffer);
    (*y)[1][2] = buffer;
    result[2][2] = modf(x[2][2], &buffer);
    (*y)[2][2] = buffer;
    result[3][2] = modf(x[3][2], &buffer);
    (*y)[3][2] = buffer;
    result[0][3] = modf(x[0][3], &buffer);
    (*y)[0][3] = buffer;
    result[1][3] = modf(x[1][3], &buffer);
    (*y)[1][3] = buffer;
    result[2][3] = modf(x[2][3], &buffer);
    (*y)[2][3] = buffer;
    result[3][3] = modf(x[3][3], &buffer);
    (*y)[3][3] = buffer;
    return result;
}


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


float modf(float x, threadgroup float* ip) {
    uint result = uint(x);
    *ip = x - float(result);
    return float(result);
}
float2 modf(float2 x, threadgroup float2* y) {
    float2 result;
    float buffer;
    result[0] = modf(x[0], &buffer);
    (*y)[0] = buffer;
    result[1] = modf(x[1], &buffer);
    (*y)[1] = buffer;
    return result;
}
float3 modf(float3 x, threadgroup float3* y) {
    float3 result;
    float buffer;
    result[0] = modf(x[0], &buffer);
    (*y)[0] = buffer;
    result[1] = modf(x[1], &buffer);
    (*y)[1] = buffer;
    result[2] = modf(x[2], &buffer);
    (*y)[2] = buffer;
    return result;
}
float4 modf(float4 x, threadgroup float4* y) {
    float4 result;
    float buffer;
    result[0] = modf(x[0], &buffer);
    (*y)[0] = buffer;
    result[1] = modf(x[1], &buffer);
    (*y)[1] = buffer;
    result[2] = modf(x[2], &buffer);
    (*y)[2] = buffer;
    result[3] = modf(x[3], &buffer);
    (*y)[3] = buffer;
    return result;
}
float2x2 modf(float2x2 x, threadgroup float2x2* y) {
    float2x2 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    (*y)[0][0] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    (*y)[1][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    (*y)[0][1] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    (*y)[1][1] = buffer;
    return result;
}
float3x2 modf(float3x2 x, threadgroup float3x2* y) {
    float3x2 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    (*y)[0][0] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    (*y)[1][0] = buffer;
    result[2][0] = modf(x[2][0], &buffer);
    (*y)[2][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    (*y)[0][1] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    (*y)[1][1] = buffer;
    result[2][1] = modf(x[2][1], &buffer);
    (*y)[2][1] = buffer;
    return result;
}
float4x2 modf(float4x2 x, threadgroup float4x2* y) {
    float4x2 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    (*y)[0][0] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    (*y)[1][0] = buffer;
    result[2][0] = modf(x[2][0], &buffer);
    (*y)[2][0] = buffer;
    result[3][0] = modf(x[3][0], &buffer);
    (*y)[3][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    (*y)[0][1] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    (*y)[1][1] = buffer;
    result[2][1] = modf(x[2][1], &buffer);
    (*y)[2][1] = buffer;
    result[3][1] = modf(x[3][1], &buffer);
    (*y)[3][1] = buffer;
    return result;
}
float2x3 modf(float2x3 x, threadgroup float2x3* y) {
    float2x3 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    (*y)[0][0] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    (*y)[1][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    (*y)[0][1] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    (*y)[1][1] = buffer;
    result[0][2] = modf(x[0][2], &buffer);
    (*y)[0][2] = buffer;
    result[1][2] = modf(x[1][2], &buffer);
    (*y)[1][2] = buffer;
    return result;
}
float3x3 modf(float3x3 x, threadgroup float3x3* y) {
    float3x3 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    (*y)[0][0] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    (*y)[1][0] = buffer;
    result[2][0] = modf(x[2][0], &buffer);
    (*y)[2][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    (*y)[0][1] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    (*y)[1][1] = buffer;
    result[2][1] = modf(x[2][1], &buffer);
    (*y)[2][1] = buffer;
    result[0][2] = modf(x[0][2], &buffer);
    (*y)[0][2] = buffer;
    result[1][2] = modf(x[1][2], &buffer);
    (*y)[1][2] = buffer;
    result[2][2] = modf(x[2][2], &buffer);
    (*y)[2][2] = buffer;
    return result;
}
float4x3 modf(float4x3 x, threadgroup float4x3* y) {
    float4x3 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    (*y)[0][0] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    (*y)[1][0] = buffer;
    result[2][0] = modf(x[2][0], &buffer);
    (*y)[2][0] = buffer;
    result[3][0] = modf(x[3][0], &buffer);
    (*y)[3][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    (*y)[0][1] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    (*y)[1][1] = buffer;
    result[2][1] = modf(x[2][1], &buffer);
    (*y)[2][1] = buffer;
    result[3][1] = modf(x[3][1], &buffer);
    (*y)[3][1] = buffer;
    result[0][2] = modf(x[0][2], &buffer);
    (*y)[0][2] = buffer;
    result[1][2] = modf(x[1][2], &buffer);
    (*y)[1][2] = buffer;
    result[2][2] = modf(x[2][2], &buffer);
    (*y)[2][2] = buffer;
    result[3][2] = modf(x[3][2], &buffer);
    (*y)[3][2] = buffer;
    return result;
}
float2x4 modf(float2x4 x, threadgroup float2x4* y) {
    float2x4 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    (*y)[0][0] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    (*y)[1][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    (*y)[0][1] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    (*y)[1][1] = buffer;
    result[0][2] = modf(x[0][2], &buffer);
    (*y)[0][2] = buffer;
    result[1][2] = modf(x[1][2], &buffer);
    (*y)[1][2] = buffer;
    result[0][3] = modf(x[0][3], &buffer);
    (*y)[0][3] = buffer;
    result[1][3] = modf(x[1][3], &buffer);
    (*y)[1][3] = buffer;
    return result;
}
float3x4 modf(float3x4 x, threadgroup float3x4* y) {
    float3x4 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    (*y)[0][0] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    (*y)[1][0] = buffer;
    result[2][0] = modf(x[2][0], &buffer);
    (*y)[2][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    (*y)[0][1] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    (*y)[1][1] = buffer;
    result[2][1] = modf(x[2][1], &buffer);
    (*y)[2][1] = buffer;
    result[0][2] = modf(x[0][2], &buffer);
    (*y)[0][2] = buffer;
    result[1][2] = modf(x[1][2], &buffer);
    (*y)[1][2] = buffer;
    result[2][2] = modf(x[2][2], &buffer);
    (*y)[2][2] = buffer;
    result[0][3] = modf(x[0][3], &buffer);
    (*y)[0][3] = buffer;
    result[1][3] = modf(x[1][3], &buffer);
    (*y)[1][3] = buffer;
    result[2][3] = modf(x[2][3], &buffer);
    (*y)[2][3] = buffer;
    return result;
}
float4x4 modf(float4x4 x, threadgroup float4x4* y) {
    float4x4 result;
    float buffer;
    result[0][0] = modf(x[0][0], &buffer);
    (*y)[0][0] = buffer;
    result[1][0] = modf(x[1][0], &buffer);
    (*y)[1][0] = buffer;
    result[2][0] = modf(x[2][0], &buffer);
    (*y)[2][0] = buffer;
    result[3][0] = modf(x[3][0], &buffer);
    (*y)[3][0] = buffer;
    result[0][1] = modf(x[0][1], &buffer);
    (*y)[0][1] = buffer;
    result[1][1] = modf(x[1][1], &buffer);
    (*y)[1][1] = buffer;
    result[2][1] = modf(x[2][1], &buffer);
    (*y)[2][1] = buffer;
    result[3][1] = modf(x[3][1], &buffer);
    (*y)[3][1] = buffer;
    result[0][2] = modf(x[0][2], &buffer);
    (*y)[0][2] = buffer;
    result[1][2] = modf(x[1][2], &buffer);
    (*y)[1][2] = buffer;
    result[2][2] = modf(x[2][2], &buffer);
    (*y)[2][2] = buffer;
    result[3][2] = modf(x[3][2], &buffer);
    (*y)[3][2] = buffer;
    result[0][3] = modf(x[0][3], &buffer);
    (*y)[0][3] = buffer;
    result[1][3] = modf(x[1][3], &buffer);
    (*y)[1][3] = buffer;
    result[2][3] = modf(x[2][3], &buffer);
    (*y)[2][3] = buffer;
    result[3][3] = modf(x[3][3], &buffer);
    (*y)[3][3] = buffer;
    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 */
native float length(float);
native float length(float2);
native float length(float3);
native float length(float4);

/* 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 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[1][0] = exp2(x[1][0]);
    result[0][1] = exp2(x[0][1]);
    result[1][1] = exp2(x[1][1]);
    return result;
}
float3x2 exp2(float3x2 x) {
    float3x2 result;
    result[0][0] = exp2(x[0][0]);
    result[1][0] = exp2(x[1][0]);
    result[2][0] = exp2(x[2][0]);
    result[0][1] = exp2(x[0][1]);
    result[1][1] = exp2(x[1][1]);
    result[2][1] = exp2(x[2][1]);
    return result;
}
float4x2 exp2(float4x2 x) {
    float4x2 result;
    result[0][0] = exp2(x[0][0]);
    result[1][0] = exp2(x[1][0]);
    result[2][0] = exp2(x[2][0]);
    result[3][0] = exp2(x[3][0]);
    result[0][1] = exp2(x[0][1]);
    result[1][1] = exp2(x[1][1]);
    result[2][1] = exp2(x[2][1]);
    result[3][1] = exp2(x[3][1]);
    return result;
}
float2x3 exp2(float2x3 x) {
    float2x3 result;
    result[0][0] = exp2(x[0][0]);
    result[1][0] = exp2(x[1][0]);
    result[0][1] = exp2(x[0][1]);
    result[1][1] = exp2(x[1][1]);
    result[0][2] = exp2(x[0][2]);
    result[1][2] = exp2(x[1][2]);
    return result;
}
float3x3 exp2(float3x3 x) {
    float3x3 result;
    result[0][0] = exp2(x[0][0]);
    result[1][0] = exp2(x[1][0]);
    result[2][0] = exp2(x[2][0]);
    result[0][1] = exp2(x[0][1]);
    result[1][1] = exp2(x[1][1]);
    result[2][1] = exp2(x[2][1]);
    result[0][2] = exp2(x[0][2]);
    result[1][2] = exp2(x[1][2]);
    result[2][2] = exp2(x[2][2]);
    return result;
}
float4x3 exp2(float4x3 x) {
    float4x3 result;
    result[0][0] = exp2(x[0][0]);
    result[1][0] = exp2(x[1][0]);
    result[2][0] = exp2(x[2][0]);
    result[3][0] = exp2(x[3][0]);
    result[0][1] = exp2(x[0][1]);
    result[1][1] = exp2(x[1][1]);
    result[2][1] = exp2(x[2][1]);
    result[3][1] = exp2(x[3][1]);
    result[0][2] = exp2(x[0][2]);
    result[1][2] = exp2(x[1][2]);
    result[2][2] = exp2(x[2][2]);
    result[3][2] = exp2(x[3][2]);
    return result;
}
float2x4 exp2(float2x4 x) {
    float2x4 result;
    result[0][0] = exp2(x[0][0]);
    result[1][0] = exp2(x[1][0]);
    result[0][1] = exp2(x[0][1]);
    result[1][1] = exp2(x[1][1]);
    result[0][2] = exp2(x[0][2]);
    result[1][2] = exp2(x[1][2]);
    result[0][3] = exp2(x[0][3]);
    result[1][3] = exp2(x[1][3]);
    return result;
}
float3x4 exp2(float3x4 x) {
    float3x4 result;
    result[0][0] = exp2(x[0][0]);
    result[1][0] = exp2(x[1][0]);
    result[2][0] = exp2(x[2][0]);
    result[0][1] = exp2(x[0][1]);
    result[1][1] = exp2(x[1][1]);
    result[2][1] = exp2(x[2][1]);
    result[0][2] = exp2(x[0][2]);
    result[1][2] = exp2(x[1][2]);
    result[2][2] = exp2(x[2][2]);
    result[0][3] = exp2(x[0][3]);
    result[1][3] = exp2(x[1][3]);
    result[2][3] = exp2(x[2][3]);
    return result;
}
float4x4 exp2(float4x4 x) {
    float4x4 result;
    result[0][0] = exp2(x[0][0]);
    result[1][0] = exp2(x[1][0]);
    result[2][0] = exp2(x[2][0]);
    result[3][0] = exp2(x[3][0]);
    result[0][1] = exp2(x[0][1]);
    result[1][1] = exp2(x[1][1]);
    result[2][1] = exp2(x[2][1]);
    result[3][1] = exp2(x[3][1]);
    result[0][2] = exp2(x[0][2]);
    result[1][2] = exp2(x[1][2]);
    result[2][2] = exp2(x[2][2]);
    result[3][2] = exp2(x[3][2]);
    result[0][3] = exp2(x[0][3]);
    result[1][3] = exp2(x[1][3]);
    result[2][3] = exp2(x[2][3]);
    result[3][3] = exp2(x[3][3]);
    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 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[1][0] = atan(x[1][0]);
    result[0][1] = atan(x[0][1]);
    result[1][1] = atan(x[1][1]);
    return result;
}
float3x2 atan(float3x2 x) {
    float3x2 result;
    result[0][0] = atan(x[0][0]);
    result[1][0] = atan(x[1][0]);
    result[2][0] = atan(x[2][0]);
    result[0][1] = atan(x[0][1]);
    result[1][1] = atan(x[1][1]);
    result[2][1] = atan(x[2][1]);
    return result;
}
float4x2 atan(float4x2 x) {
    float4x2 result;
    result[0][0] = atan(x[0][0]);
    result[1][0] = atan(x[1][0]);
    result[2][0] = atan(x[2][0]);
    result[3][0] = atan(x[3][0]);
    result[0][1] = atan(x[0][1]);
    result[1][1] = atan(x[1][1]);
    result[2][1] = atan(x[2][1]);
    result[3][1] = atan(x[3][1]);
    return result;
}
float2x3 atan(float2x3 x) {
    float2x3 result;
    result[0][0] = atan(x[0][0]);
    result[1][0] = atan(x[1][0]);
    result[0][1] = atan(x[0][1]);
    result[1][1] = atan(x[1][1]);
    result[0][2] = atan(x[0][2]);
    result[1][2] = atan(x[1][2]);
    return result;
}
float3x3 atan(float3x3 x) {
    float3x3 result;
    result[0][0] = atan(x[0][0]);
    result[1][0] = atan(x[1][0]);
    result[2][0] = atan(x[2][0]);
    result[0][1] = atan(x[0][1]);
    result[1][1] = atan(x[1][1]);
    result[2][1] = atan(x[2][1]);
    result[0][2] = atan(x[0][2]);
    result[1][2] = atan(x[1][2]);
    result[2][2] = atan(x[2][2]);
    return result;
}
float4x3 atan(float4x3 x) {
    float4x3 result;
    result[0][0] = atan(x[0][0]);
    result[1][0] = atan(x[1][0]);
    result[2][0] = atan(x[2][0]);
    result[3][0] = atan(x[3][0]);
    result[0][1] = atan(x[0][1]);
    result[1][1] = atan(x[1][1]);
    result[2][1] = atan(x[2][1]);
    result[3][1] = atan(x[3][1]);
    result[0][2] = atan(x[0][2]);
    result[1][2] = atan(x[1][2]);
    result[2][2] = atan(x[2][2]);
    result[3][2] = atan(x[3][2]);
    return result;
}
float2x4 atan(float2x4 x) {
    float2x4 result;
    result[0][0] = atan(x[0][0]);
    result[1][0] = atan(x[1][0]);
    result[0][1] = atan(x[0][1]);
    result[1][1] = atan(x[1][1]);
    result[0][2] = atan(x[0][2]);
    result[1][2] = atan(x[1][2]);
    result[0][3] = atan(x[0][3]);
    result[1][3] = atan(x[1][3]);
    return result;
}
float3x4 atan(float3x4 x) {
    float3x4 result;
    result[0][0] = atan(x[0][0]);
    result[1][0] = atan(x[1][0]);
    result[2][0] = atan(x[2][0]);
    result[0][1] = atan(x[0][1]);
    result[1][1] = atan(x[1][1]);
    result[2][1] = atan(x[2][1]);
    result[0][2] = atan(x[0][2]);
    result[1][2] = atan(x[1][2]);
    result[2][2] = atan(x[2][2]);
    result[0][3] = atan(x[0][3]);
    result[1][3] = atan(x[1][3]);
    result[2][3] = atan(x[2][3]);
    return result;
}
float4x4 atan(float4x4 x) {
    float4x4 result;
    result[0][0] = atan(x[0][0]);
    result[1][0] = atan(x[1][0]);
    result[2][0] = atan(x[2][0]);
    result[3][0] = atan(x[3][0]);
    result[0][1] = atan(x[0][1]);
    result[1][1] = atan(x[1][1]);
    result[2][1] = atan(x[2][1]);
    result[3][1] = atan(x[3][1]);
    result[0][2] = atan(x[0][2]);
    result[1][2] = atan(x[1][2]);
    result[2][2] = atan(x[2][2]);
    result[3][2] = atan(x[3][2]);
    result[0][3] = atan(x[0][3]);
    result[1][3] = atan(x[1][3]);
    result[2][3] = atan(x[2][3]);
    result[3][3] = atan(x[3][3]);
    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[1][0] = log(x[1][0]);
    result[0][1] = log(x[0][1]);
    result[1][1] = log(x[1][1]);
    return result;
}
float3x2 log(float3x2 x) {
    float3x2 result;
    result[0][0] = log(x[0][0]);
    result[1][0] = log(x[1][0]);
    result[2][0] = log(x[2][0]);
    result[0][1] = log(x[0][1]);
    result[1][1] = log(x[1][1]);
    result[2][1] = log(x[2][1]);
    return result;
}
float4x2 log(float4x2 x) {
    float4x2 result;
    result[0][0] = log(x[0][0]);
    result[1][0] = log(x[1][0]);
    result[2][0] = log(x[2][0]);
    result[3][0] = log(x[3][0]);
    result[0][1] = log(x[0][1]);
    result[1][1] = log(x[1][1]);
    result[2][1] = log(x[2][1]);
    result[3][1] = log(x[3][1]);
    return result;
}
float2x3 log(float2x3 x) {
    float2x3 result;
    result[0][0] = log(x[0][0]);
    result[1][0] = log(x[1][0]);
    result[0][1] = log(x[0][1]);
    result[1][1] = log(x[1][1]);
    result[0][2] = log(x[0][2]);
    result[1][2] = log(x[1][2]);
    return result;
}
float3x3 log(float3x3 x) {
    float3x3 result;
    result[0][0] = log(x[0][0]);
    result[1][0] = log(x[1][0]);
    result[2][0] = log(x[2][0]);
    result[0][1] = log(x[0][1]);
    result[1][1] = log(x[1][1]);
    result[2][1] = log(x[2][1]);
    result[0][2] = log(x[0][2]);
    result[1][2] = log(x[1][2]);
    result[2][2] = log(x[2][2]);
    return result;
}
float4x3 log(float4x3 x) {
    float4x3 result;
    result[0][0] = log(x[0][0]);
    result[1][0] = log(x[1][0]);
    result[2][0] = log(x[2][0]);
    result[3][0] = log(x[3][0]);
    result[0][1] = log(x[0][1]);
    result[1][1] = log(x[1][1]);
    result[2][1] = log(x[2][1]);
    result[3][1] = log(x[3][1]);
    result[0][2] = log(x[0][2]);
    result[1][2] = log(x[1][2]);
    result[2][2] = log(x[2][2]);
    result[3][2] = log(x[3][2]);
    return result;
}
float2x4 log(float2x4 x) {
    float2x4 result;
    result[0][0] = log(x[0][0]);
    result[1][0] = log(x[1][0]);
    result[0][1] = log(x[0][1]);
    result[1][1] = log(x[1][1]);
    result[0][2] = log(x[0][2]);
    result[1][2] = log(x[1][2]);
    result[0][3] = log(x[0][3]);
    result[1][3] = log(x[1][3]);
    return result;
}
float3x4 log(float3x4 x) {
    float3x4 result;
    result[0][0] = log(x[0][0]);
    result[1][0] = log(x[1][0]);
    result[2][0] = log(x[2][0]);
    result[0][1] = log(x[0][1]);
    result[1][1] = log(x[1][1]);
    result[2][1] = log(x[2][1]);
    result[0][2] = log(x[0][2]);
    result[1][2] = log(x[1][2]);
    result[2][2] = log(x[2][2]);
    result[0][3] = log(x[0][3]);
    result[1][3] = log(x[1][3]);
    result[2][3] = log(x[2][3]);
    return result;
}
float4x4 log(float4x4 x) {
    float4x4 result;
    result[0][0] = log(x[0][0]);
    result[1][0] = log(x[1][0]);
    result[2][0] = log(x[2][0]);
    result[3][0] = log(x[3][0]);
    result[0][1] = log(x[0][1]);
    result[1][1] = log(x[1][1]);
    result[2][1] = log(x[2][1]);
    result[3][1] = log(x[3][1]);
    result[0][2] = log(x[0][2]);
    result[1][2] = log(x[1][2]);
    result[2][2] = log(x[2][2]);
    result[3][2] = log(x[3][2]);
    result[0][3] = log(x[0][3]);
    result[1][3] = log(x[1][3]);
    result[2][3] = log(x[2][3]);
    result[3][3] = log(x[3][3]);
    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 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[1][0] = sin(x[1][0]);
    result[0][1] = sin(x[0][1]);
    result[1][1] = sin(x[1][1]);
    return result;
}
float3x2 sin(float3x2 x) {
    float3x2 result;
    result[0][0] = sin(x[0][0]);
    result[1][0] = sin(x[1][0]);
    result[2][0] = sin(x[2][0]);
    result[0][1] = sin(x[0][1]);
    result[1][1] = sin(x[1][1]);
    result[2][1] = sin(x[2][1]);
    return result;
}
float4x2 sin(float4x2 x) {
    float4x2 result;
    result[0][0] = sin(x[0][0]);
    result[1][0] = sin(x[1][0]);
    result[2][0] = sin(x[2][0]);
    result[3][0] = sin(x[3][0]);
    result[0][1] = sin(x[0][1]);
    result[1][1] = sin(x[1][1]);
    result[2][1] = sin(x[2][1]);
    result[3][1] = sin(x[3][1]);
    return result;
}
float2x3 sin(float2x3 x) {
    float2x3 result;
    result[0][0] = sin(x[0][0]);
    result[1][0] = sin(x[1][0]);
    result[0][1] = sin(x[0][1]);
    result[1][1] = sin(x[1][1]);
    result[0][2] = sin(x[0][2]);
    result[1][2] = sin(x[1][2]);
    return result;
}
float3x3 sin(float3x3 x) {
    float3x3 result;
    result[0][0] = sin(x[0][0]);
    result[1][0] = sin(x[1][0]);
    result[2][0] = sin(x[2][0]);
    result[0][1] = sin(x[0][1]);
    result[1][1] = sin(x[1][1]);
    result[2][1] = sin(x[2][1]);
    result[0][2] = sin(x[0][2]);
    result[1][2] = sin(x[1][2]);
    result[2][2] = sin(x[2][2]);
    return result;
}
float4x3 sin(float4x3 x) {
    float4x3 result;
    result[0][0] = sin(x[0][0]);
    result[1][0] = sin(x[1][0]);
    result[2][0] = sin(x[2][0]);
    result[3][0] = sin(x[3][0]);
    result[0][1] = sin(x[0][1]);
    result[1][1] = sin(x[1][1]);
    result[2][1] = sin(x[2][1]);
    result[3][1] = sin(x[3][1]);
    result[0][2] = sin(x[0][2]);
    result[1][2] = sin(x[1][2]);
    result[2][2] = sin(x[2][2]);
    result[3][2] = sin(x[3][2]);
    return result;
}
float2x4 sin(float2x4 x) {
    float2x4 result;
    result[0][0] = sin(x[0][0]);
    result[1][0] = sin(x[1][0]);
    result[0][1] = sin(x[0][1]);
    result[1][1] = sin(x[1][1]);
    result[0][2] = sin(x[0][2]);
    result[1][2] = sin(x[1][2]);
    result[0][3] = sin(x[0][3]);
    result[1][3] = sin(x[1][3]);
    return result;
}
float3x4 sin(float3x4 x) {
    float3x4 result;
    result[0][0] = sin(x[0][0]);
    result[1][0] = sin(x[1][0]);
    result[2][0] = sin(x[2][0]);
    result[0][1] = sin(x[0][1]);
    result[1][1] = sin(x[1][1]);
    result[2][1] = sin(x[2][1]);
    result[0][2] = sin(x[0][2]);
    result[1][2] = sin(x[1][2]);
    result[2][2] = sin(x[2][2]);
    result[0][3] = sin(x[0][3]);
    result[1][3] = sin(x[1][3]);
    result[2][3] = sin(x[2][3]);
    return result;
}
float4x4 sin(float4x4 x) {
    float4x4 result;
    result[0][0] = sin(x[0][0]);
    result[1][0] = sin(x[1][0]);
    result[2][0] = sin(x[2][0]);
    result[3][0] = sin(x[3][0]);
    result[0][1] = sin(x[0][1]);
    result[1][1] = sin(x[1][1]);
    result[2][1] = sin(x[2][1]);
    result[3][1] = sin(x[3][1]);
    result[0][2] = sin(x[0][2]);
    result[1][2] = sin(x[1][2]);
    result[2][2] = sin(x[2][2]);
    result[3][2] = sin(x[3][2]);
    result[0][3] = sin(x[0][3]);
    result[1][3] = sin(x[1][3]);
    result[2][3] = sin(x[2][3]);
    result[3][3] = sin(x[3][3]);
    return result;
}

/* Functions named sincos */
void sincos(float x, thread float* y, thread float* z) {
    *y = sin(x);
    *z = cos(x);
}
void sincos(float2 x, thread float2* y, thread float2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    (*y)[0] = sinResult;
    (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    (*y)[1] = sinResult;
    (*z)[1] = cosResult;
}
void sincos(float3 x, thread float3* y, thread float3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    (*y)[0] = sinResult;
    (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    (*y)[1] = sinResult;
    (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    (*y)[2] = sinResult;
    (*z)[2] = cosResult;
}
void sincos(float4 x, thread float4* y, thread float4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    (*y)[0] = sinResult;
    (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    (*y)[1] = sinResult;
    (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    (*y)[2] = sinResult;
    (*z)[2] = cosResult;
    sincos(x[3], &sinResult, &cosResult);
    (*y)[3] = sinResult;
    (*z)[3] = cosResult;
}
void sincos(float2x2 x, thread float2x2* y, thread float2x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
}
void sincos(float3x2 x, thread float3x2* y, thread float3x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
}
void sincos(float4x2 x, thread float4x2* y, thread float4x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    (*y)[3][0] = sinResult;
    (*z)[3][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    (*y)[3][1] = sinResult;
    (*z)[3][1] = cosResult;
}
void sincos(float2x3 x, thread float2x3* y, thread float2x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
}
void sincos(float3x3 x, thread float3x3* y, thread float3x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
}
void sincos(float4x3 x, thread float4x3* y, thread float4x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    (*y)[3][0] = sinResult;
    (*z)[3][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    (*y)[3][1] = sinResult;
    (*z)[3][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    (*y)[3][2] = sinResult;
    (*z)[3][2] = cosResult;
}
void sincos(float2x4 x, thread float2x4* y, thread float2x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    (*y)[0][3] = sinResult;
    (*z)[0][3] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    (*y)[1][3] = sinResult;
    (*z)[1][3] = cosResult;
}
void sincos(float3x4 x, thread float3x4* y, thread float3x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    (*y)[0][3] = sinResult;
    (*z)[0][3] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    (*y)[1][3] = sinResult;
    (*z)[1][3] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    (*y)[2][3] = sinResult;
    (*z)[2][3] = cosResult;
}
void sincos(float4x4 x, thread float4x4* y, thread float4x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    (*y)[3][0] = sinResult;
    (*z)[3][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    (*y)[3][1] = sinResult;
    (*z)[3][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    (*y)[3][2] = sinResult;
    (*z)[3][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    (*y)[0][3] = sinResult;
    (*z)[0][3] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    (*y)[1][3] = sinResult;
    (*z)[1][3] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    (*y)[2][3] = sinResult;
    (*z)[2][3] = cosResult;
    sincos(x[3][3], &sinResult, &cosResult);
    (*y)[3][3] = sinResult;
    (*z)[3][3] = cosResult;
}
void sincos(float x, thread float* y, device float* z) {
    *y = sin(x);
    *z = cos(x);
}
void sincos(float2 x, thread float2* y, device float2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    (*y)[0] = sinResult;
    (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    (*y)[1] = sinResult;
    (*z)[1] = cosResult;
}
void sincos(float3 x, thread float3* y, device float3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    (*y)[0] = sinResult;
    (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    (*y)[1] = sinResult;
    (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    (*y)[2] = sinResult;
    (*z)[2] = cosResult;
}
void sincos(float4 x, thread float4* y, device float4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    (*y)[0] = sinResult;
    (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    (*y)[1] = sinResult;
    (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    (*y)[2] = sinResult;
    (*z)[2] = cosResult;
    sincos(x[3], &sinResult, &cosResult);
    (*y)[3] = sinResult;
    (*z)[3] = cosResult;
}
void sincos(float2x2 x, thread float2x2* y, device float2x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
}
void sincos(float3x2 x, thread float3x2* y, device float3x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
}
void sincos(float4x2 x, thread float4x2* y, device float4x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    (*y)[3][0] = sinResult;
    (*z)[3][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    (*y)[3][1] = sinResult;
    (*z)[3][1] = cosResult;
}
void sincos(float2x3 x, thread float2x3* y, device float2x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
}
void sincos(float3x3 x, thread float3x3* y, device float3x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
}
void sincos(float4x3 x, thread float4x3* y, device float4x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    (*y)[3][0] = sinResult;
    (*z)[3][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    (*y)[3][1] = sinResult;
    (*z)[3][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    (*y)[3][2] = sinResult;
    (*z)[3][2] = cosResult;
}
void sincos(float2x4 x, thread float2x4* y, device float2x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    (*y)[0][3] = sinResult;
    (*z)[0][3] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    (*y)[1][3] = sinResult;
    (*z)[1][3] = cosResult;
}
void sincos(float3x4 x, thread float3x4* y, device float3x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    (*y)[0][3] = sinResult;
    (*z)[0][3] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    (*y)[1][3] = sinResult;
    (*z)[1][3] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    (*y)[2][3] = sinResult;
    (*z)[2][3] = cosResult;
}
void sincos(float4x4 x, thread float4x4* y, device float4x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    (*y)[3][0] = sinResult;
    (*z)[3][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    (*y)[3][1] = sinResult;
    (*z)[3][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    (*y)[3][2] = sinResult;
    (*z)[3][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    (*y)[0][3] = sinResult;
    (*z)[0][3] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    (*y)[1][3] = sinResult;
    (*z)[1][3] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    (*y)[2][3] = sinResult;
    (*z)[2][3] = cosResult;
    sincos(x[3][3], &sinResult, &cosResult);
    (*y)[3][3] = sinResult;
    (*z)[3][3] = cosResult;
}
void sincos(float x, thread float* y, threadgroup float* z) {
    *y = sin(x);
    *z = cos(x);
}
void sincos(float2 x, thread float2* y, threadgroup float2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    (*y)[0] = sinResult;
    (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    (*y)[1] = sinResult;
    (*z)[1] = cosResult;
}
void sincos(float3 x, thread float3* y, threadgroup float3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    (*y)[0] = sinResult;
    (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    (*y)[1] = sinResult;
    (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    (*y)[2] = sinResult;
    (*z)[2] = cosResult;
}
void sincos(float4 x, thread float4* y, threadgroup float4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    (*y)[0] = sinResult;
    (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    (*y)[1] = sinResult;
    (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    (*y)[2] = sinResult;
    (*z)[2] = cosResult;
    sincos(x[3], &sinResult, &cosResult);
    (*y)[3] = sinResult;
    (*z)[3] = cosResult;
}
void sincos(float2x2 x, thread float2x2* y, threadgroup float2x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
}
void sincos(float3x2 x, thread float3x2* y, threadgroup float3x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
}
void sincos(float4x2 x, thread float4x2* y, threadgroup float4x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    (*y)[3][0] = sinResult;
    (*z)[3][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    (*y)[3][1] = sinResult;
    (*z)[3][1] = cosResult;
}
void sincos(float2x3 x, thread float2x3* y, threadgroup float2x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
}
void sincos(float3x3 x, thread float3x3* y, threadgroup float3x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
}
void sincos(float4x3 x, thread float4x3* y, threadgroup float4x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    (*y)[3][0] = sinResult;
    (*z)[3][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    (*y)[3][1] = sinResult;
    (*z)[3][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    (*y)[3][2] = sinResult;
    (*z)[3][2] = cosResult;
}
void sincos(float2x4 x, thread float2x4* y, threadgroup float2x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    (*y)[0][3] = sinResult;
    (*z)[0][3] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    (*y)[1][3] = sinResult;
    (*z)[1][3] = cosResult;
}
void sincos(float3x4 x, thread float3x4* y, threadgroup float3x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    (*y)[0][3] = sinResult;
    (*z)[0][3] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    (*y)[1][3] = sinResult;
    (*z)[1][3] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    (*y)[2][3] = sinResult;
    (*z)[2][3] = cosResult;
}
void sincos(float4x4 x, thread float4x4* y, threadgroup float4x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    (*y)[3][0] = sinResult;
    (*z)[3][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    (*y)[3][1] = sinResult;
    (*z)[3][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    (*y)[3][2] = sinResult;
    (*z)[3][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    (*y)[0][3] = sinResult;
    (*z)[0][3] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    (*y)[1][3] = sinResult;
    (*z)[1][3] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    (*y)[2][3] = sinResult;
    (*z)[2][3] = cosResult;
    sincos(x[3][3], &sinResult, &cosResult);
    (*y)[3][3] = sinResult;
    (*z)[3][3] = cosResult;
}
void sincos(float x, device float* y, thread float* z) {
    *y = sin(x);
    *z = cos(x);
}
void sincos(float2 x, device float2* y, thread float2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    (*y)[0] = sinResult;
    (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    (*y)[1] = sinResult;
    (*z)[1] = cosResult;
}
void sincos(float3 x, device float3* y, thread float3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    (*y)[0] = sinResult;
    (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    (*y)[1] = sinResult;
    (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    (*y)[2] = sinResult;
    (*z)[2] = cosResult;
}
void sincos(float4 x, device float4* y, thread float4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    (*y)[0] = sinResult;
    (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    (*y)[1] = sinResult;
    (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    (*y)[2] = sinResult;
    (*z)[2] = cosResult;
    sincos(x[3], &sinResult, &cosResult);
    (*y)[3] = sinResult;
    (*z)[3] = cosResult;
}
void sincos(float2x2 x, device float2x2* y, thread float2x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
}
void sincos(float3x2 x, device float3x2* y, thread float3x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
}
void sincos(float4x2 x, device float4x2* y, thread float4x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    (*y)[3][0] = sinResult;
    (*z)[3][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    (*y)[3][1] = sinResult;
    (*z)[3][1] = cosResult;
}
void sincos(float2x3 x, device float2x3* y, thread float2x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
}
void sincos(float3x3 x, device float3x3* y, thread float3x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
}
void sincos(float4x3 x, device float4x3* y, thread float4x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    (*y)[3][0] = sinResult;
    (*z)[3][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    (*y)[3][1] = sinResult;
    (*z)[3][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    (*y)[3][2] = sinResult;
    (*z)[3][2] = cosResult;
}
void sincos(float2x4 x, device float2x4* y, thread float2x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    (*y)[0][3] = sinResult;
    (*z)[0][3] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    (*y)[1][3] = sinResult;
    (*z)[1][3] = cosResult;
}
void sincos(float3x4 x, device float3x4* y, thread float3x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    (*y)[0][3] = sinResult;
    (*z)[0][3] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    (*y)[1][3] = sinResult;
    (*z)[1][3] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    (*y)[2][3] = sinResult;
    (*z)[2][3] = cosResult;
}
void sincos(float4x4 x, device float4x4* y, thread float4x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    (*y)[3][0] = sinResult;
    (*z)[3][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    (*y)[3][1] = sinResult;
    (*z)[3][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    (*y)[3][2] = sinResult;
    (*z)[3][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    (*y)[0][3] = sinResult;
    (*z)[0][3] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    (*y)[1][3] = sinResult;
    (*z)[1][3] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    (*y)[2][3] = sinResult;
    (*z)[2][3] = cosResult;
    sincos(x[3][3], &sinResult, &cosResult);
    (*y)[3][3] = sinResult;
    (*z)[3][3] = cosResult;
}
void sincos(float x, device float* y, device float* z) {
    *y = sin(x);
    *z = cos(x);
}
void sincos(float2 x, device float2* y, device float2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    (*y)[0] = sinResult;
    (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    (*y)[1] = sinResult;
    (*z)[1] = cosResult;
}
void sincos(float3 x, device float3* y, device float3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    (*y)[0] = sinResult;
    (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    (*y)[1] = sinResult;
    (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    (*y)[2] = sinResult;
    (*z)[2] = cosResult;
}
void sincos(float4 x, device float4* y, device float4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    (*y)[0] = sinResult;
    (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    (*y)[1] = sinResult;
    (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    (*y)[2] = sinResult;
    (*z)[2] = cosResult;
    sincos(x[3], &sinResult, &cosResult);
    (*y)[3] = sinResult;
    (*z)[3] = cosResult;
}
void sincos(float2x2 x, device float2x2* y, device float2x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
}
void sincos(float3x2 x, device float3x2* y, device float3x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
}
void sincos(float4x2 x, device float4x2* y, device float4x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    (*y)[3][0] = sinResult;
    (*z)[3][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    (*y)[3][1] = sinResult;
    (*z)[3][1] = cosResult;
}
void sincos(float2x3 x, device float2x3* y, device float2x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
}
void sincos(float3x3 x, device float3x3* y, device float3x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
}
void sincos(float4x3 x, device float4x3* y, device float4x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    (*y)[3][0] = sinResult;
    (*z)[3][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    (*y)[3][1] = sinResult;
    (*z)[3][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    (*y)[3][2] = sinResult;
    (*z)[3][2] = cosResult;
}
void sincos(float2x4 x, device float2x4* y, device float2x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    (*y)[0][3] = sinResult;
    (*z)[0][3] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    (*y)[1][3] = sinResult;
    (*z)[1][3] = cosResult;
}
void sincos(float3x4 x, device float3x4* y, device float3x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    (*y)[0][3] = sinResult;
    (*z)[0][3] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    (*y)[1][3] = sinResult;
    (*z)[1][3] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    (*y)[2][3] = sinResult;
    (*z)[2][3] = cosResult;
}
void sincos(float4x4 x, device float4x4* y, device float4x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    (*y)[3][0] = sinResult;
    (*z)[3][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    (*y)[3][1] = sinResult;
    (*z)[3][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    (*y)[3][2] = sinResult;
    (*z)[3][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    (*y)[0][3] = sinResult;
    (*z)[0][3] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    (*y)[1][3] = sinResult;
    (*z)[1][3] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    (*y)[2][3] = sinResult;
    (*z)[2][3] = cosResult;
    sincos(x[3][3], &sinResult, &cosResult);
    (*y)[3][3] = sinResult;
    (*z)[3][3] = cosResult;
}
void sincos(float x, device float* y, threadgroup float* z) {
    *y = sin(x);
    *z = cos(x);
}
void sincos(float2 x, device float2* y, threadgroup float2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    (*y)[0] = sinResult;
    (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    (*y)[1] = sinResult;
    (*z)[1] = cosResult;
}
void sincos(float3 x, device float3* y, threadgroup float3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    (*y)[0] = sinResult;
    (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    (*y)[1] = sinResult;
    (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    (*y)[2] = sinResult;
    (*z)[2] = cosResult;
}
void sincos(float4 x, device float4* y, threadgroup float4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    (*y)[0] = sinResult;
    (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    (*y)[1] = sinResult;
    (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    (*y)[2] = sinResult;
    (*z)[2] = cosResult;
    sincos(x[3], &sinResult, &cosResult);
    (*y)[3] = sinResult;
    (*z)[3] = cosResult;
}
void sincos(float2x2 x, device float2x2* y, threadgroup float2x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
}
void sincos(float3x2 x, device float3x2* y, threadgroup float3x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
}
void sincos(float4x2 x, device float4x2* y, threadgroup float4x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    (*y)[3][0] = sinResult;
    (*z)[3][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    (*y)[3][1] = sinResult;
    (*z)[3][1] = cosResult;
}
void sincos(float2x3 x, device float2x3* y, threadgroup float2x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
}
void sincos(float3x3 x, device float3x3* y, threadgroup float3x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
}
void sincos(float4x3 x, device float4x3* y, threadgroup float4x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    (*y)[3][0] = sinResult;
    (*z)[3][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    (*y)[3][1] = sinResult;
    (*z)[3][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    (*y)[3][2] = sinResult;
    (*z)[3][2] = cosResult;
}
void sincos(float2x4 x, device float2x4* y, threadgroup float2x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    (*y)[0][3] = sinResult;
    (*z)[0][3] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    (*y)[1][3] = sinResult;
    (*z)[1][3] = cosResult;
}
void sincos(float3x4 x, device float3x4* y, threadgroup float3x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    (*y)[0][3] = sinResult;
    (*z)[0][3] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    (*y)[1][3] = sinResult;
    (*z)[1][3] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    (*y)[2][3] = sinResult;
    (*z)[2][3] = cosResult;
}
void sincos(float4x4 x, device float4x4* y, threadgroup float4x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    (*y)[3][0] = sinResult;
    (*z)[3][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    (*y)[3][1] = sinResult;
    (*z)[3][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    (*y)[3][2] = sinResult;
    (*z)[3][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    (*y)[0][3] = sinResult;
    (*z)[0][3] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    (*y)[1][3] = sinResult;
    (*z)[1][3] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    (*y)[2][3] = sinResult;
    (*z)[2][3] = cosResult;
    sincos(x[3][3], &sinResult, &cosResult);
    (*y)[3][3] = sinResult;
    (*z)[3][3] = cosResult;
}
void sincos(float x, threadgroup float* y, thread float* z) {
    *y = sin(x);
    *z = cos(x);
}
void sincos(float2 x, threadgroup float2* y, thread float2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    (*y)[0] = sinResult;
    (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    (*y)[1] = sinResult;
    (*z)[1] = cosResult;
}
void sincos(float3 x, threadgroup float3* y, thread float3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    (*y)[0] = sinResult;
    (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    (*y)[1] = sinResult;
    (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    (*y)[2] = sinResult;
    (*z)[2] = cosResult;
}
void sincos(float4 x, threadgroup float4* y, thread float4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    (*y)[0] = sinResult;
    (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    (*y)[1] = sinResult;
    (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    (*y)[2] = sinResult;
    (*z)[2] = cosResult;
    sincos(x[3], &sinResult, &cosResult);
    (*y)[3] = sinResult;
    (*z)[3] = cosResult;
}
void sincos(float2x2 x, threadgroup float2x2* y, thread float2x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
}
void sincos(float3x2 x, threadgroup float3x2* y, thread float3x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
}
void sincos(float4x2 x, threadgroup float4x2* y, thread float4x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    (*y)[3][0] = sinResult;
    (*z)[3][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    (*y)[3][1] = sinResult;
    (*z)[3][1] = cosResult;
}
void sincos(float2x3 x, threadgroup float2x3* y, thread float2x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
}
void sincos(float3x3 x, threadgroup float3x3* y, thread float3x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
}
void sincos(float4x3 x, threadgroup float4x3* y, thread float4x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    (*y)[3][0] = sinResult;
    (*z)[3][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    (*y)[3][1] = sinResult;
    (*z)[3][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    (*y)[3][2] = sinResult;
    (*z)[3][2] = cosResult;
}
void sincos(float2x4 x, threadgroup float2x4* y, thread float2x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    (*y)[0][3] = sinResult;
    (*z)[0][3] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    (*y)[1][3] = sinResult;
    (*z)[1][3] = cosResult;
}
void sincos(float3x4 x, threadgroup float3x4* y, thread float3x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    (*y)[0][3] = sinResult;
    (*z)[0][3] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    (*y)[1][3] = sinResult;
    (*z)[1][3] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    (*y)[2][3] = sinResult;
    (*z)[2][3] = cosResult;
}
void sincos(float4x4 x, threadgroup float4x4* y, thread float4x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    (*y)[3][0] = sinResult;
    (*z)[3][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    (*y)[3][1] = sinResult;
    (*z)[3][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    (*y)[3][2] = sinResult;
    (*z)[3][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    (*y)[0][3] = sinResult;
    (*z)[0][3] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    (*y)[1][3] = sinResult;
    (*z)[1][3] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    (*y)[2][3] = sinResult;
    (*z)[2][3] = cosResult;
    sincos(x[3][3], &sinResult, &cosResult);
    (*y)[3][3] = sinResult;
    (*z)[3][3] = cosResult;
}
void sincos(float x, threadgroup float* y, device float* z) {
    *y = sin(x);
    *z = cos(x);
}
void sincos(float2 x, threadgroup float2* y, device float2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    (*y)[0] = sinResult;
    (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    (*y)[1] = sinResult;
    (*z)[1] = cosResult;
}
void sincos(float3 x, threadgroup float3* y, device float3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    (*y)[0] = sinResult;
    (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    (*y)[1] = sinResult;
    (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    (*y)[2] = sinResult;
    (*z)[2] = cosResult;
}
void sincos(float4 x, threadgroup float4* y, device float4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    (*y)[0] = sinResult;
    (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    (*y)[1] = sinResult;
    (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    (*y)[2] = sinResult;
    (*z)[2] = cosResult;
    sincos(x[3], &sinResult, &cosResult);
    (*y)[3] = sinResult;
    (*z)[3] = cosResult;
}
void sincos(float2x2 x, threadgroup float2x2* y, device float2x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
}
void sincos(float3x2 x, threadgroup float3x2* y, device float3x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
}
void sincos(float4x2 x, threadgroup float4x2* y, device float4x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    (*y)[3][0] = sinResult;
    (*z)[3][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    (*y)[3][1] = sinResult;
    (*z)[3][1] = cosResult;
}
void sincos(float2x3 x, threadgroup float2x3* y, device float2x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
}
void sincos(float3x3 x, threadgroup float3x3* y, device float3x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
}
void sincos(float4x3 x, threadgroup float4x3* y, device float4x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    (*y)[3][0] = sinResult;
    (*z)[3][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    (*y)[3][1] = sinResult;
    (*z)[3][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    (*y)[3][2] = sinResult;
    (*z)[3][2] = cosResult;
}
void sincos(float2x4 x, threadgroup float2x4* y, device float2x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    (*y)[0][3] = sinResult;
    (*z)[0][3] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    (*y)[1][3] = sinResult;
    (*z)[1][3] = cosResult;
}
void sincos(float3x4 x, threadgroup float3x4* y, device float3x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    (*y)[0][3] = sinResult;
    (*z)[0][3] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    (*y)[1][3] = sinResult;
    (*z)[1][3] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    (*y)[2][3] = sinResult;
    (*z)[2][3] = cosResult;
}
void sincos(float4x4 x, threadgroup float4x4* y, device float4x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    (*y)[3][0] = sinResult;
    (*z)[3][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    (*y)[3][1] = sinResult;
    (*z)[3][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    (*y)[3][2] = sinResult;
    (*z)[3][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    (*y)[0][3] = sinResult;
    (*z)[0][3] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    (*y)[1][3] = sinResult;
    (*z)[1][3] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    (*y)[2][3] = sinResult;
    (*z)[2][3] = cosResult;
    sincos(x[3][3], &sinResult, &cosResult);
    (*y)[3][3] = sinResult;
    (*z)[3][3] = cosResult;
}
void sincos(float x, threadgroup float* y, threadgroup float* z) {
    *y = sin(x);
    *z = cos(x);
}
void sincos(float2 x, threadgroup float2* y, threadgroup float2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    (*y)[0] = sinResult;
    (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    (*y)[1] = sinResult;
    (*z)[1] = cosResult;
}
void sincos(float3 x, threadgroup float3* y, threadgroup float3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    (*y)[0] = sinResult;
    (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    (*y)[1] = sinResult;
    (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    (*y)[2] = sinResult;
    (*z)[2] = cosResult;
}
void sincos(float4 x, threadgroup float4* y, threadgroup float4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0], &sinResult, &cosResult);
    (*y)[0] = sinResult;
    (*z)[0] = cosResult;
    sincos(x[1], &sinResult, &cosResult);
    (*y)[1] = sinResult;
    (*z)[1] = cosResult;
    sincos(x[2], &sinResult, &cosResult);
    (*y)[2] = sinResult;
    (*z)[2] = cosResult;
    sincos(x[3], &sinResult, &cosResult);
    (*y)[3] = sinResult;
    (*z)[3] = cosResult;
}
void sincos(float2x2 x, threadgroup float2x2* y, threadgroup float2x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
}
void sincos(float3x2 x, threadgroup float3x2* y, threadgroup float3x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
}
void sincos(float4x2 x, threadgroup float4x2* y, threadgroup float4x2* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    (*y)[3][0] = sinResult;
    (*z)[3][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    (*y)[3][1] = sinResult;
    (*z)[3][1] = cosResult;
}
void sincos(float2x3 x, threadgroup float2x3* y, threadgroup float2x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
}
void sincos(float3x3 x, threadgroup float3x3* y, threadgroup float3x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
}
void sincos(float4x3 x, threadgroup float4x3* y, threadgroup float4x3* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    (*y)[3][0] = sinResult;
    (*z)[3][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    (*y)[3][1] = sinResult;
    (*z)[3][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    (*y)[3][2] = sinResult;
    (*z)[3][2] = cosResult;
}
void sincos(float2x4 x, threadgroup float2x4* y, threadgroup float2x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    (*y)[0][3] = sinResult;
    (*z)[0][3] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    (*y)[1][3] = sinResult;
    (*z)[1][3] = cosResult;
}
void sincos(float3x4 x, threadgroup float3x4* y, threadgroup float3x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    (*y)[0][3] = sinResult;
    (*z)[0][3] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    (*y)[1][3] = sinResult;
    (*z)[1][3] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    (*y)[2][3] = sinResult;
    (*z)[2][3] = cosResult;
}
void sincos(float4x4 x, threadgroup float4x4* y, threadgroup float4x4* z) {
    float sinResult;
    float cosResult;
    sincos(x[0][0], &sinResult, &cosResult);
    (*y)[0][0] = sinResult;
    (*z)[0][0] = cosResult;
    sincos(x[1][0], &sinResult, &cosResult);
    (*y)[1][0] = sinResult;
    (*z)[1][0] = cosResult;
    sincos(x[2][0], &sinResult, &cosResult);
    (*y)[2][0] = sinResult;
    (*z)[2][0] = cosResult;
    sincos(x[3][0], &sinResult, &cosResult);
    (*y)[3][0] = sinResult;
    (*z)[3][0] = cosResult;
    sincos(x[0][1], &sinResult, &cosResult);
    (*y)[0][1] = sinResult;
    (*z)[0][1] = cosResult;
    sincos(x[1][1], &sinResult, &cosResult);
    (*y)[1][1] = sinResult;
    (*z)[1][1] = cosResult;
    sincos(x[2][1], &sinResult, &cosResult);
    (*y)[2][1] = sinResult;
    (*z)[2][1] = cosResult;
    sincos(x[3][1], &sinResult, &cosResult);
    (*y)[3][1] = sinResult;
    (*z)[3][1] = cosResult;
    sincos(x[0][2], &sinResult, &cosResult);
    (*y)[0][2] = sinResult;
    (*z)[0][2] = cosResult;
    sincos(x[1][2], &sinResult, &cosResult);
    (*y)[1][2] = sinResult;
    (*z)[1][2] = cosResult;
    sincos(x[2][2], &sinResult, &cosResult);
    (*y)[2][2] = sinResult;
    (*z)[2][2] = cosResult;
    sincos(x[3][2], &sinResult, &cosResult);
    (*y)[3][2] = sinResult;
    (*z)[3][2] = cosResult;
    sincos(x[0][3], &sinResult, &cosResult);
    (*y)[0][3] = sinResult;
    (*z)[0][3] = cosResult;
    sincos(x[1][3], &sinResult, &cosResult);
    (*y)[1][3] = sinResult;
    (*z)[1][3] = cosResult;
    sincos(x[2][3], &sinResult, &cosResult);
    (*y)[2][3] = sinResult;
    (*z)[2][3] = cosResult;
    sincos(x[3][3], &sinResult, &cosResult);
    (*y)[3][3] = sinResult;
    (*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 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[1][0] = smoothstep(x[1][0], y[1][0], z[1][0]);
    result[0][1] = smoothstep(x[0][1], y[0][1], z[0][1]);
    result[1][1] = smoothstep(x[1][1], y[1][1], z[1][1]);
    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[1][0] = smoothstep(x[1][0], y[1][0], z[1][0]);
    result[2][0] = smoothstep(x[2][0], y[2][0], z[2][0]);
    result[0][1] = smoothstep(x[0][1], y[0][1], z[0][1]);
    result[1][1] = smoothstep(x[1][1], y[1][1], z[1][1]);
    result[2][1] = smoothstep(x[2][1], y[2][1], z[2][1]);
    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[1][0] = smoothstep(x[1][0], y[1][0], z[1][0]);
    result[2][0] = smoothstep(x[2][0], y[2][0], z[2][0]);
    result[3][0] = smoothstep(x[3][0], y[3][0], z[3][0]);
    result[0][1] = smoothstep(x[0][1], y[0][1], z[0][1]);
    result[1][1] = smoothstep(x[1][1], y[1][1], z[1][1]);
    result[2][1] = smoothstep(x[2][1], y[2][1], z[2][1]);
    result[3][1] = smoothstep(x[3][1], y[3][1], z[3][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[1][0] = smoothstep(x[1][0], y[1][0], z[1][0]);
    result[0][1] = smoothstep(x[0][1], y[0][1], z[0][1]);
    result[1][1] = smoothstep(x[1][1], y[1][1], z[1][1]);
    result[0][2] = smoothstep(x[0][2], y[0][2], z[0][2]);
    result[1][2] = smoothstep(x[1][2], y[1][2], z[1][2]);
    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[1][0] = smoothstep(x[1][0], y[1][0], z[1][0]);
    result[2][0] = smoothstep(x[2][0], y[2][0], z[2][0]);
    result[0][1] = smoothstep(x[0][1], y[0][1], z[0][1]);
    result[1][1] = smoothstep(x[1][1], y[1][1], z[1][1]);
    result[2][1] = smoothstep(x[2][1], y[2][1], z[2][1]);
    result[0][2] = smoothstep(x[0][2], y[0][2], z[0][2]);
    result[1][2] = smoothstep(x[1][2], y[1][2], z[1][2]);
    result[2][2] = smoothstep(x[2][2], y[2][2], z[2][2]);
    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[1][0] = smoothstep(x[1][0], y[1][0], z[1][0]);
    result[2][0] = smoothstep(x[2][0], y[2][0], z[2][0]);
    result[3][0] = smoothstep(x[3][0], y[3][0], z[3][0]);
    result[0][1] = smoothstep(x[0][1], y[0][1], z[0][1]);
    result[1][1] = smoothstep(x[1][1], y[1][1], z[1][1]);
    result[2][1] = smoothstep(x[2][1], y[2][1], z[2][1]);
    result[3][1] = smoothstep(x[3][1], y[3][1], z[3][1]);
    result[0][2] = smoothstep(x[0][2], y[0][2], z[0][2]);
    result[1][2] = smoothstep(x[1][2], y[1][2], z[1][2]);
    result[2][2] = smoothstep(x[2][2], y[2][2], z[2][2]);
    result[3][2] = smoothstep(x[3][2], y[3][2], z[3][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[1][0] = smoothstep(x[1][0], y[1][0], z[1][0]);
    result[0][1] = smoothstep(x[0][1], y[0][1], z[0][1]);
    result[1][1] = smoothstep(x[1][1], y[1][1], z[1][1]);
    result[0][2] = smoothstep(x[0][2], y[0][2], z[0][2]);
    result[1][2] = smoothstep(x[1][2], y[1][2], z[1][2]);
    result[0][3] = smoothstep(x[0][3], y[0][3], z[0][3]);
    result[1][3] = smoothstep(x[1][3], y[1][3], z[1][3]);
    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[1][0] = smoothstep(x[1][0], y[1][0], z[1][0]);
    result[2][0] = smoothstep(x[2][0], y[2][0], z[2][0]);
    result[0][1] = smoothstep(x[0][1], y[0][1], z[0][1]);
    result[1][1] = smoothstep(x[1][1], y[1][1], z[1][1]);
    result[2][1] = smoothstep(x[2][1], y[2][1], z[2][1]);
    result[0][2] = smoothstep(x[0][2], y[0][2], z[0][2]);
    result[1][2] = smoothstep(x[1][2], y[1][2], z[1][2]);
    result[2][2] = smoothstep(x[2][2], y[2][2], z[2][2]);
    result[0][3] = smoothstep(x[0][3], y[0][3], z[0][3]);
    result[1][3] = smoothstep(x[1][3], y[1][3], z[1][3]);
    result[2][3] = smoothstep(x[2][3], y[2][3], z[2][3]);
    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[1][0] = smoothstep(x[1][0], y[1][0], z[1][0]);
    result[2][0] = smoothstep(x[2][0], y[2][0], z[2][0]);
    result[3][0] = smoothstep(x[3][0], y[3][0], z[3][0]);
    result[0][1] = smoothstep(x[0][1], y[0][1], z[0][1]);
    result[1][1] = smoothstep(x[1][1], y[1][1], z[1][1]);
    result[2][1] = smoothstep(x[2][1], y[2][1], z[2][1]);
    result[3][1] = smoothstep(x[3][1], y[3][1], z[3][1]);
    result[0][2] = smoothstep(x[0][2], y[0][2], z[0][2]);
    result[1][2] = smoothstep(x[1][2], y[1][2], z[1][2]);
    result[2][2] = smoothstep(x[2][2], y[2][2], z[2][2]);
    result[3][2] = smoothstep(x[3][2], y[3][2], z[3][2]);
    result[0][3] = smoothstep(x[0][3], y[0][3], z[0][3]);
    result[1][3] = smoothstep(x[1][3], y[1][3], z[1][3]);
    result[2][3] = smoothstep(x[2][3], y[2][3], z[2][3]);
    result[3][3] = smoothstep(x[3][3], y[3][3], z[3][3]);
    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[1][0] = exp(x[1][0]);
    result[0][1] = exp(x[0][1]);
    result[1][1] = exp(x[1][1]);
    return result;
}
float3x2 exp(float3x2 x) {
    float3x2 result;
    result[0][0] = exp(x[0][0]);
    result[1][0] = exp(x[1][0]);
    result[2][0] = exp(x[2][0]);
    result[0][1] = exp(x[0][1]);
    result[1][1] = exp(x[1][1]);
    result[2][1] = exp(x[2][1]);
    return result;
}
float4x2 exp(float4x2 x) {
    float4x2 result;
    result[0][0] = exp(x[0][0]);
    result[1][0] = exp(x[1][0]);
    result[2][0] = exp(x[2][0]);
    result[3][0] = exp(x[3][0]);
    result[0][1] = exp(x[0][1]);
    result[1][1] = exp(x[1][1]);
    result[2][1] = exp(x[2][1]);
    result[3][1] = exp(x[3][1]);
    return result;
}
float2x3 exp(float2x3 x) {
    float2x3 result;
    result[0][0] = exp(x[0][0]);
    result[1][0] = exp(x[1][0]);
    result[0][1] = exp(x[0][1]);
    result[1][1] = exp(x[1][1]);
    result[0][2] = exp(x[0][2]);
    result[1][2] = exp(x[1][2]);
    return result;
}
float3x3 exp(float3x3 x) {
    float3x3 result;
    result[0][0] = exp(x[0][0]);
    result[1][0] = exp(x[1][0]);
    result[2][0] = exp(x[2][0]);
    result[0][1] = exp(x[0][1]);
    result[1][1] = exp(x[1][1]);
    result[2][1] = exp(x[2][1]);
    result[0][2] = exp(x[0][2]);
    result[1][2] = exp(x[1][2]);
    result[2][2] = exp(x[2][2]);
    return result;
}
float4x3 exp(float4x3 x) {
    float4x3 result;
    result[0][0] = exp(x[0][0]);
    result[1][0] = exp(x[1][0]);
    result[2][0] = exp(x[2][0]);
    result[3][0] = exp(x[3][0]);
    result[0][1] = exp(x[0][1]);
    result[1][1] = exp(x[1][1]);
    result[2][1] = exp(x[2][1]);
    result[3][1] = exp(x[3][1]);
    result[0][2] = exp(x[0][2]);
    result[1][2] = exp(x[1][2]);
    result[2][2] = exp(x[2][2]);
    result[3][2] = exp(x[3][2]);
    return result;
}
float2x4 exp(float2x4 x) {
    float2x4 result;
    result[0][0] = exp(x[0][0]);
    result[1][0] = exp(x[1][0]);
    result[0][1] = exp(x[0][1]);
    result[1][1] = exp(x[1][1]);
    result[0][2] = exp(x[0][2]);
    result[1][2] = exp(x[1][2]);
    result[0][3] = exp(x[0][3]);
    result[1][3] = exp(x[1][3]);
    return result;
}
float3x4 exp(float3x4 x) {
    float3x4 result;
    result[0][0] = exp(x[0][0]);
    result[1][0] = exp(x[1][0]);
    result[2][0] = exp(x[2][0]);
    result[0][1] = exp(x[0][1]);
    result[1][1] = exp(x[1][1]);
    result[2][1] = exp(x[2][1]);
    result[0][2] = exp(x[0][2]);
    result[1][2] = exp(x[1][2]);
    result[2][2] = exp(x[2][2]);
    result[0][3] = exp(x[0][3]);
    result[1][3] = exp(x[1][3]);
    result[2][3] = exp(x[2][3]);
    return result;
}
float4x4 exp(float4x4 x) {
    float4x4 result;
    result[0][0] = exp(x[0][0]);
    result[1][0] = exp(x[1][0]);
    result[2][0] = exp(x[2][0]);
    result[3][0] = exp(x[3][0]);
    result[0][1] = exp(x[0][1]);
    result[1][1] = exp(x[1][1]);
    result[2][1] = exp(x[2][1]);
    result[3][1] = exp(x[3][1]);
    result[0][2] = exp(x[0][2]);
    result[1][2] = exp(x[1][2]);
    result[2][2] = exp(x[2][2]);
    result[3][2] = exp(x[3][2]);
    result[0][3] = exp(x[0][3]);
    result[1][3] = exp(x[1][3]);
    result[2][3] = exp(x[2][3]);
    result[3][3] = exp(x[3][3]);
    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[1][0] != 0);
    result = result && (x[0][1] != 0);
    result = result && (x[1][1] != 0);
    return result;
}
bool all(float3x2 x) {
    bool result = true;
    result = result && (x[0][0] != 0);
    result = result && (x[1][0] != 0);
    result = result && (x[2][0] != 0);
    result = result && (x[0][1] != 0);
    result = result && (x[1][1] != 0);
    result = result && (x[2][1] != 0);
    return result;
}
bool all(float4x2 x) {
    bool result = true;
    result = result && (x[0][0] != 0);
    result = result && (x[1][0] != 0);
    result = result && (x[2][0] != 0);
    result = result && (x[3][0] != 0);
    result = result && (x[0][1] != 0);
    result = result && (x[1][1] != 0);
    result = result && (x[2][1] != 0);
    result = result && (x[3][1] != 0);
    return result;
}
bool all(float2x3 x) {
    bool result = true;
    result = result && (x[0][0] != 0);
    result = result && (x[1][0] != 0);
    result = result && (x[0][1] != 0);
    result = result && (x[1][1] != 0);
    result = result && (x[0][2] != 0);
    result = result && (x[1][2] != 0);
    return result;
}
bool all(float3x3 x) {
    bool result = true;
    result = result && (x[0][0] != 0);
    result = result && (x[1][0] != 0);
    result = result && (x[2][0] != 0);
    result = result && (x[0][1] != 0);
    result = result && (x[1][1] != 0);
    result = result && (x[2][1] != 0);
    result = result && (x[0][2] != 0);
    result = result && (x[1][2] != 0);
    result = result && (x[2][2] != 0);
    return result;
}
bool all(float4x3 x) {
    bool result = true;
    result = result && (x[0][0] != 0);
    result = result && (x[1][0] != 0);
    result = result && (x[2][0] != 0);
    result = result && (x[3][0] != 0);
    result = result && (x[0][1] != 0);
    result = result && (x[1][1] != 0);
    result = result && (x[2][1] != 0);
    result = result && (x[3][1] != 0);
    result = result && (x[0][2] != 0);
    result = result && (x[1][2] != 0);
    result = result && (x[2][2] != 0);
    result = result && (x[3][2] != 0);
    return result;
}
bool all(float2x4 x) {
    bool result = true;
    result = result && (x[0][0] != 0);
    result = result && (x[1][0] != 0);
    result = result && (x[0][1] != 0);
    result = result && (x[1][1] != 0);
    result = result && (x[0][2] != 0);
    result = result && (x[1][2] != 0);
    result = result && (x[0][3] != 0);
    result = result && (x[1][3] != 0);
    return result;
}
bool all(float3x4 x) {
    bool result = true;
    result = result && (x[0][0] != 0);
    result = result && (x[1][0] != 0);
    result = result && (x[2][0] != 0);
    result = result && (x[0][1] != 0);
    result = result && (x[1][1] != 0);
    result = result && (x[2][1] != 0);
    result = result && (x[0][2] != 0);
    result = result && (x[1][2] != 0);
    result = result && (x[2][2] != 0);
    result = result && (x[0][3] != 0);
    result = result && (x[1][3] != 0);
    result = result && (x[2][3] != 0);
    return result;
}
bool all(float4x4 x) {
    bool result = true;
    result = result && (x[0][0] != 0);
    result = result && (x[1][0] != 0);
    result = result && (x[2][0] != 0);
    result = result && (x[3][0] != 0);
    result = result && (x[0][1] != 0);
    result = result && (x[1][1] != 0);
    result = result && (x[2][1] != 0);
    result = result && (x[3][1] != 0);
    result = result && (x[0][2] != 0);
    result = result && (x[1][2] != 0);
    result = result && (x[2][2] != 0);
    result = result && (x[3][2] != 0);
    result = result && (x[0][3] != 0);
    result = result && (x[1][3] != 0);
    result = result && (x[2][3] != 0);
    result = result && (x[3][3] != 0);
    return result;
}
bool all(bool2x2 x) {
    bool result = true;
    result = result && x[0][0];
    result = result && x[1][0];
    result = result && x[0][1];
    result = result && x[1][1];
    return result;
}
bool all(bool3x2 x) {
    bool result = true;
    result = result && x[0][0];
    result = result && x[1][0];
    result = result && x[2][0];
    result = result && x[0][1];
    result = result && x[1][1];
    result = result && x[2][1];
    return result;
}
bool all(bool4x2 x) {
    bool result = true;
    result = result && x[0][0];
    result = result && x[1][0];
    result = result && x[2][0];
    result = result && x[3][0];
    result = result && x[0][1];
    result = result && x[1][1];
    result = result && x[2][1];
    result = result && x[3][1];
    return result;
}
bool all(bool2x3 x) {
    bool result = true;
    result = result && x[0][0];
    result = result && x[1][0];
    result = result && x[0][1];
    result = result && x[1][1];
    result = result && x[0][2];
    result = result && x[1][2];
    return result;
}
bool all(bool3x3 x) {
    bool result = true;
    result = result && x[0][0];
    result = result && x[1][0];
    result = result && x[2][0];
    result = result && x[0][1];
    result = result && x[1][1];
    result = result && x[2][1];
    result = result && x[0][2];
    result = result && x[1][2];
    result = result && x[2][2];
    return result;
}
bool all(bool4x3 x) {
    bool result = true;
    result = result && x[0][0];
    result = result && x[1][0];
    result = result && x[2][0];
    result = result && x[3][0];
    result = result && x[0][1];
    result = result && x[1][1];
    result = result && x[2][1];
    result = result && x[3][1];
    result = result && x[0][2];
    result = result && x[1][2];
    result = result && x[2][2];
    result = result && x[3][2];
    return result;
}
bool all(bool2x4 x) {
    bool result = true;
    result = result && x[0][0];
    result = result && x[1][0];
    result = result && x[0][1];
    result = result && x[1][1];
    result = result && x[0][2];
    result = result && x[1][2];
    result = result && x[0][3];
    result = result && x[1][3];
    return result;
}
bool all(bool3x4 x) {
    bool result = true;
    result = result && x[0][0];
    result = result && x[1][0];
    result = result && x[2][0];
    result = result && x[0][1];
    result = result && x[1][1];
    result = result && x[2][1];
    result = result && x[0][2];
    result = result && x[1][2];
    result = result && x[2][2];
    result = result && x[0][3];
    result = result && x[1][3];
    result = result && x[2][3];
    return result;
}
bool all(bool4x4 x) {
    bool result = true;
    result = result && x[0][0];
    result = result && x[1][0];
    result = result && x[2][0];
    result = result && x[3][0];
    result = result && x[0][1];
    result = result && x[1][1];
    result = result && x[2][1];
    result = result && x[3][1];
    result = result && x[0][2];
    result = result && x[1][2];
    result = result && x[2][2];
    result = result && x[3][2];
    result = result && x[0][3];
    result = result && x[1][3];
    result = result && x[2][3];
    result = result && x[3][3];
    return result;
}


/* 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<= */
native bool operator<=(int, int);
native bool operator<=(uint, uint);
native bool operator<=(float, float);
native bool2 operator<=(uint2, uint2);
native bool3 operator<=(uint3, uint3);
native bool4 operator<=(uint4, uint4);
native bool2 operator<=(int2, int2);
native bool3 operator<=(int3, int3);
native bool4 operator<=(int4, int4);
native bool2 operator<=(float2, float2);
native bool3 operator<=(float3, float3);
native bool4 operator<=(float4, float4);
native bool2x2 operator<=(float2x2, float2x2);
native bool3x2 operator<=(float3x2, float3x2);
native bool4x2 operator<=(float4x2, float4x2);
native bool2x3 operator<=(float2x3, float2x3);
native bool3x3 operator<=(float3x3, float3x3);
native bool4x3 operator<=(float4x3, float4x3);
native bool2x4 operator<=(float2x4, float2x4);
native bool3x4 operator<=(float3x4, float3x4);
native bool4x4 operator<=(float4x4, float4x4);

/* 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[1][0] = ddx_fine(x[1][0]);
    result[0][1] = ddx_fine(x[0][1]);
    result[1][1] = ddx_fine(x[1][1]);
    return result;
}
float3x2 ddx_fine(float3x2 x) {
    float3x2 result;
    result[0][0] = ddx_fine(x[0][0]);
    result[1][0] = ddx_fine(x[1][0]);
    result[2][0] = ddx_fine(x[2][0]);
    result[0][1] = ddx_fine(x[0][1]);
    result[1][1] = ddx_fine(x[1][1]);
    result[2][1] = ddx_fine(x[2][1]);
    return result;
}
float4x2 ddx_fine(float4x2 x) {
    float4x2 result;
    result[0][0] = ddx_fine(x[0][0]);
    result[1][0] = ddx_fine(x[1][0]);
    result[2][0] = ddx_fine(x[2][0]);
    result[3][0] = ddx_fine(x[3][0]);
    result[0][1] = ddx_fine(x[0][1]);
    result[1][1] = ddx_fine(x[1][1]);
    result[2][1] = ddx_fine(x[2][1]);
    result[3][1] = ddx_fine(x[3][1]);
    return result;
}
float2x3 ddx_fine(float2x3 x) {
    float2x3 result;
    result[0][0] = ddx_fine(x[0][0]);
    result[1][0] = ddx_fine(x[1][0]);
    result[0][1] = ddx_fine(x[0][1]);
    result[1][1] = ddx_fine(x[1][1]);
    result[0][2] = ddx_fine(x[0][2]);
    result[1][2] = ddx_fine(x[1][2]);
    return result;
}
float3x3 ddx_fine(float3x3 x) {
    float3x3 result;
    result[0][0] = ddx_fine(x[0][0]);
    result[1][0] = ddx_fine(x[1][0]);
    result[2][0] = ddx_fine(x[2][0]);
    result[0][1] = ddx_fine(x[0][1]);
    result[1][1] = ddx_fine(x[1][1]);
    result[2][1] = ddx_fine(x[2][1]);
    result[0][2] = ddx_fine(x[0][2]);
    result[1][2] = ddx_fine(x[1][2]);
    result[2][2] = ddx_fine(x[2][2]);
    return result;
}
float4x3 ddx_fine(float4x3 x) {
    float4x3 result;
    result[0][0] = ddx_fine(x[0][0]);
    result[1][0] = ddx_fine(x[1][0]);
    result[2][0] = ddx_fine(x[2][0]);
    result[3][0] = ddx_fine(x[3][0]);
    result[0][1] = ddx_fine(x[0][1]);
    result[1][1] = ddx_fine(x[1][1]);
    result[2][1] = ddx_fine(x[2][1]);
    result[3][1] = ddx_fine(x[3][1]);
    result[0][2] = ddx_fine(x[0][2]);
    result[1][2] = ddx_fine(x[1][2]);
    result[2][2] = ddx_fine(x[2][2]);
    result[3][2] = ddx_fine(x[3][2]);
    return result;
}
float2x4 ddx_fine(float2x4 x) {
    float2x4 result;
    result[0][0] = ddx_fine(x[0][0]);
    result[1][0] = ddx_fine(x[1][0]);
    result[0][1] = ddx_fine(x[0][1]);
    result[1][1] = ddx_fine(x[1][1]);
    result[0][2] = ddx_fine(x[0][2]);
    result[1][2] = ddx_fine(x[1][2]);
    result[0][3] = ddx_fine(x[0][3]);
    result[1][3] = ddx_fine(x[1][3]);
    return result;
}
float3x4 ddx_fine(float3x4 x) {
    float3x4 result;
    result[0][0] = ddx_fine(x[0][0]);
    result[1][0] = ddx_fine(x[1][0]);
    result[2][0] = ddx_fine(x[2][0]);
    result[0][1] = ddx_fine(x[0][1]);
    result[1][1] = ddx_fine(x[1][1]);
    result[2][1] = ddx_fine(x[2][1]);
    result[0][2] = ddx_fine(x[0][2]);
    result[1][2] = ddx_fine(x[1][2]);
    result[2][2] = ddx_fine(x[2][2]);
    result[0][3] = ddx_fine(x[0][3]);
    result[1][3] = ddx_fine(x[1][3]);
    result[2][3] = ddx_fine(x[2][3]);
    return result;
}
float4x4 ddx_fine(float4x4 x) {
    float4x4 result;
    result[0][0] = ddx_fine(x[0][0]);
    result[1][0] = ddx_fine(x[1][0]);
    result[2][0] = ddx_fine(x[2][0]);
    result[3][0] = ddx_fine(x[3][0]);
    result[0][1] = ddx_fine(x[0][1]);
    result[1][1] = ddx_fine(x[1][1]);
    result[2][1] = ddx_fine(x[2][1]);
    result[3][1] = ddx_fine(x[3][1]);
    result[0][2] = ddx_fine(x[0][2]);
    result[1][2] = ddx_fine(x[1][2]);
    result[2][2] = ddx_fine(x[2][2]);
    result[3][2] = ddx_fine(x[3][2]);
    result[0][3] = ddx_fine(x[0][3]);
    result[1][3] = ddx_fine(x[1][3]);
    result[2][3] = ddx_fine(x[2][3]);
    result[3][3] = ddx_fine(x[3][3]);
    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);
native operator int(bool);
native operator bool(uint);
native operator bool(int);
native operator bool(float);
native operator bool2(bool, bool);
native operator bool3(bool, bool, bool);
native operator bool3(bool2, bool);
native operator bool3(bool, bool2);
native operator bool4(bool, bool, bool, bool);
native operator bool4(bool2, bool, bool);
native operator bool4(bool, bool2, bool);
native operator bool4(bool, bool, bool2);
native operator bool4(bool2, bool2);
native operator bool4(bool3, bool);
native operator bool4(bool, bool3);
native operator uint2(uint, uint);
native operator uint3(uint, uint, uint);
native operator uint3(uint2, uint);
native operator uint3(uint, uint2);
native operator uint4(uint, uint, uint, uint);
native operator uint4(uint2, uint, uint);
native operator uint4(uint, uint2, uint);
native operator uint4(uint, uint, uint2);
native operator uint4(uint2, uint2);
native operator uint4(uint3, uint);
native operator uint4(uint, uint3);
native operator int2(int, int);
native operator int3(int, int, int);
native operator int3(int2, int);
native operator int3(int, int2);
native operator int4(int, int, int, int);
native operator int4(int2, int, int);
native operator int4(int, int2, int);
native operator int4(int, int, int2);
native operator int4(int2, int2);
native operator int4(int3, int);
native operator int4(int, int3);
native operator float2(float, float);
native operator float3(float, float, float);
native operator float3(float2, float);
native operator float3(float, float2);
native operator float4(float, float, float, float);
native operator float4(float2, float, float);
native operator float4(float, float2, float);
native operator float4(float, float, float2);
native operator float4(float2, float2);
native operator float4(float3, float);
native operator float4(float, float3);
native operator float2x2(float2, float2);
native operator float2x3(float3, float3);
native operator float2x4(float4, float4);
native operator float3x2(float2, float2, float2);
native operator float3x3(float3, float3, float3);
native operator float3x4(float4, float4, float4);
native operator float4x2(float2, float2, float2, float2);
native operator float4x3(float3, float3, float3, float3);
native operator float4x4(float4, float4, float4, float4);
native operator float2x2(float, float, float, float);
native operator float2x3(float, float, float, float, float, float);
native operator float2x4(float, float, float, float, float, float, float, float);
native operator float3x2(float, float, float, float, float, float);
native operator float3x3(float, float, float, float, float, float, float, float, float);
native operator float3x4(float, float, float, float, float, float, float, float, float, float, float, float);
native operator float4x2(float, float, float, float, float, float, float, float);
native operator float4x3(float, float, float, float, float, float, float, float, float, float, float, float);
native operator float4x4(float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float);
native operator bool2x2(bool2, bool2);
native operator bool2x3(bool3, bool3);
native operator bool2x4(bool4, bool4);
native operator bool3x2(bool2, bool2, bool2);
native operator bool3x3(bool3, bool3, bool3);
native operator bool3x4(bool4, bool4, bool4);
native operator bool4x2(bool2, bool2, bool2, bool2);
native operator bool4x3(bool3, bool3, bool3, bool3);
native operator bool4x4(bool4, bool4, bool4, bool4);
native operator bool2x2(bool, bool, bool, bool);
native operator bool2x3(bool, bool, bool, bool, bool, bool);
native operator bool2x4(bool, bool, bool, bool, bool, bool, bool, bool);
native operator bool3x2(bool, bool, bool, bool, bool, bool);
native operator bool3x3(bool, bool, bool, bool, bool, bool, bool, bool, bool);
native operator bool3x4(bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool);
native operator bool4x2(bool, bool, bool, bool, bool, bool, bool, bool);
native operator bool4x3(bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool);
native operator bool4x4(bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool);

/* 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 count_bits */

/* 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[1][0] = rsqrt(x[1][0]);
    result[0][1] = rsqrt(x[0][1]);
    result[1][1] = rsqrt(x[1][1]);
    return result;
}
float3x2 rsqrt(float3x2 x) {
    float3x2 result;
    result[0][0] = rsqrt(x[0][0]);
    result[1][0] = rsqrt(x[1][0]);
    result[2][0] = rsqrt(x[2][0]);
    result[0][1] = rsqrt(x[0][1]);
    result[1][1] = rsqrt(x[1][1]);
    result[2][1] = rsqrt(x[2][1]);
    return result;
}
float4x2 rsqrt(float4x2 x) {
    float4x2 result;
    result[0][0] = rsqrt(x[0][0]);
    result[1][0] = rsqrt(x[1][0]);
    result[2][0] = rsqrt(x[2][0]);
    result[3][0] = rsqrt(x[3][0]);
    result[0][1] = rsqrt(x[0][1]);
    result[1][1] = rsqrt(x[1][1]);
    result[2][1] = rsqrt(x[2][1]);
    result[3][1] = rsqrt(x[3][1]);
    return result;
}
float2x3 rsqrt(float2x3 x) {
    float2x3 result;
    result[0][0] = rsqrt(x[0][0]);
    result[1][0] = rsqrt(x[1][0]);
    result[0][1] = rsqrt(x[0][1]);
    result[1][1] = rsqrt(x[1][1]);
    result[0][2] = rsqrt(x[0][2]);
    result[1][2] = rsqrt(x[1][2]);
    return result;
}
float3x3 rsqrt(float3x3 x) {
    float3x3 result;
    result[0][0] = rsqrt(x[0][0]);
    result[1][0] = rsqrt(x[1][0]);
    result[2][0] = rsqrt(x[2][0]);
    result[0][1] = rsqrt(x[0][1]);
    result[1][1] = rsqrt(x[1][1]);
    result[2][1] = rsqrt(x[2][1]);
    result[0][2] = rsqrt(x[0][2]);
    result[1][2] = rsqrt(x[1][2]);
    result[2][2] = rsqrt(x[2][2]);
    return result;
}
float4x3 rsqrt(float4x3 x) {
    float4x3 result;
    result[0][0] = rsqrt(x[0][0]);
    result[1][0] = rsqrt(x[1][0]);
    result[2][0] = rsqrt(x[2][0]);
    result[3][0] = rsqrt(x[3][0]);
    result[0][1] = rsqrt(x[0][1]);
    result[1][1] = rsqrt(x[1][1]);
    result[2][1] = rsqrt(x[2][1]);
    result[3][1] = rsqrt(x[3][1]);
    result[0][2] = rsqrt(x[0][2]);
    result[1][2] = rsqrt(x[1][2]);
    result[2][2] = rsqrt(x[2][2]);
    result[3][2] = rsqrt(x[3][2]);
    return result;
}
float2x4 rsqrt(float2x4 x) {
    float2x4 result;
    result[0][0] = rsqrt(x[0][0]);
    result[1][0] = rsqrt(x[1][0]);
    result[0][1] = rsqrt(x[0][1]);
    result[1][1] = rsqrt(x[1][1]);
    result[0][2] = rsqrt(x[0][2]);
    result[1][2] = rsqrt(x[1][2]);
    result[0][3] = rsqrt(x[0][3]);
    result[1][3] = rsqrt(x[1][3]);
    return result;
}
float3x4 rsqrt(float3x4 x) {
    float3x4 result;
    result[0][0] = rsqrt(x[0][0]);
    result[1][0] = rsqrt(x[1][0]);
    result[2][0] = rsqrt(x[2][0]);
    result[0][1] = rsqrt(x[0][1]);
    result[1][1] = rsqrt(x[1][1]);
    result[2][1] = rsqrt(x[2][1]);
    result[0][2] = rsqrt(x[0][2]);
    result[1][2] = rsqrt(x[1][2]);
    result[2][2] = rsqrt(x[2][2]);
    result[0][3] = rsqrt(x[0][3]);
    result[1][3] = rsqrt(x[1][3]);
    result[2][3] = rsqrt(x[2][3]);
    return result;
}
float4x4 rsqrt(float4x4 x) {
    float4x4 result;
    result[0][0] = rsqrt(x[0][0]);
    result[1][0] = rsqrt(x[1][0]);
    result[2][0] = rsqrt(x[2][0]);
    result[3][0] = rsqrt(x[3][0]);
    result[0][1] = rsqrt(x[0][1]);
    result[1][1] = rsqrt(x[1][1]);
    result[2][1] = rsqrt(x[2][1]);
    result[3][1] = rsqrt(x[3][1]);
    result[0][2] = rsqrt(x[0][2]);
    result[1][2] = rsqrt(x[1][2]);
    result[2][2] = rsqrt(x[2][2]);
    result[3][2] = rsqrt(x[3][2]);
    result[0][3] = rsqrt(x[0][3]);
    result[1][3] = rsqrt(x[1][3]);
    result[2][3] = rsqrt(x[2][3]);
    result[3][3] = rsqrt(x[3][3]);
    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[1][0] = sqrt(x[1][0]);
    result[0][1] = sqrt(x[0][1]);
    result[1][1] = sqrt(x[1][1]);
    return result;
}
float3x2 sqrt(float3x2 x) {
    float3x2 result;
    result[0][0] = sqrt(x[0][0]);
    result[1][0] = sqrt(x[1][0]);
    result[2][0] = sqrt(x[2][0]);
    result[0][1] = sqrt(x[0][1]);
    result[1][1] = sqrt(x[1][1]);
    result[2][1] = sqrt(x[2][1]);
    return result;
}
float4x2 sqrt(float4x2 x) {
    float4x2 result;
    result[0][0] = sqrt(x[0][0]);
    result[1][0] = sqrt(x[1][0]);
    result[2][0] = sqrt(x[2][0]);
    result[3][0] = sqrt(x[3][0]);
    result[0][1] = sqrt(x[0][1]);
    result[1][1] = sqrt(x[1][1]);
    result[2][1] = sqrt(x[2][1]);
    result[3][1] = sqrt(x[3][1]);
    return result;
}
float2x3 sqrt(float2x3 x) {
    float2x3 result;
    result[0][0] = sqrt(x[0][0]);
    result[1][0] = sqrt(x[1][0]);
    result[0][1] = sqrt(x[0][1]);
    result[1][1] = sqrt(x[1][1]);
    result[0][2] = sqrt(x[0][2]);
    result[1][2] = sqrt(x[1][2]);
    return result;
}
float3x3 sqrt(float3x3 x) {
    float3x3 result;
    result[0][0] = sqrt(x[0][0]);
    result[1][0] = sqrt(x[1][0]);
    result[2][0] = sqrt(x[2][0]);
    result[0][1] = sqrt(x[0][1]);
    result[1][1] = sqrt(x[1][1]);
    result[2][1] = sqrt(x[2][1]);
    result[0][2] = sqrt(x[0][2]);
    result[1][2] = sqrt(x[1][2]);
    result[2][2] = sqrt(x[2][2]);
    return result;
}
float4x3 sqrt(float4x3 x) {
    float4x3 result;
    result[0][0] = sqrt(x[0][0]);
    result[1][0] = sqrt(x[1][0]);
    result[2][0] = sqrt(x[2][0]);
    result[3][0] = sqrt(x[3][0]);
    result[0][1] = sqrt(x[0][1]);
    result[1][1] = sqrt(x[1][1]);
    result[2][1] = sqrt(x[2][1]);
    result[3][1] = sqrt(x[3][1]);
    result[0][2] = sqrt(x[0][2]);
    result[1][2] = sqrt(x[1][2]);
    result[2][2] = sqrt(x[2][2]);
    result[3][2] = sqrt(x[3][2]);
    return result;
}
float2x4 sqrt(float2x4 x) {
    float2x4 result;
    result[0][0] = sqrt(x[0][0]);
    result[1][0] = sqrt(x[1][0]);
    result[0][1] = sqrt(x[0][1]);
    result[1][1] = sqrt(x[1][1]);
    result[0][2] = sqrt(x[0][2]);
    result[1][2] = sqrt(x[1][2]);
    result[0][3] = sqrt(x[0][3]);
    result[1][3] = sqrt(x[1][3]);
    return result;
}
float3x4 sqrt(float3x4 x) {
    float3x4 result;
    result[0][0] = sqrt(x[0][0]);
    result[1][0] = sqrt(x[1][0]);
    result[2][0] = sqrt(x[2][0]);
    result[0][1] = sqrt(x[0][1]);
    result[1][1] = sqrt(x[1][1]);
    result[2][1] = sqrt(x[2][1]);
    result[0][2] = sqrt(x[0][2]);
    result[1][2] = sqrt(x[1][2]);
    result[2][2] = sqrt(x[2][2]);
    result[0][3] = sqrt(x[0][3]);
    result[1][3] = sqrt(x[1][3]);
    result[2][3] = sqrt(x[2][3]);
    return result;
}
float4x4 sqrt(float4x4 x) {
    float4x4 result;
    result[0][0] = sqrt(x[0][0]);
    result[1][0] = sqrt(x[1][0]);
    result[2][0] = sqrt(x[2][0]);
    result[3][0] = sqrt(x[3][0]);
    result[0][1] = sqrt(x[0][1]);
    result[1][1] = sqrt(x[1][1]);
    result[2][1] = sqrt(x[2][1]);
    result[3][1] = sqrt(x[3][1]);
    result[0][2] = sqrt(x[0][2]);
    result[1][2] = sqrt(x[1][2]);
    result[2][2] = sqrt(x[2][2]);
    result[3][2] = sqrt(x[3][2]);
    result[0][3] = sqrt(x[0][3]);
    result[1][3] = sqrt(x[1][3]);
    result[2][3] = sqrt(x[2][3]);
    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[1][0] = acos(x[1][0]);
    result[0][1] = acos(x[0][1]);
    result[1][1] = acos(x[1][1]);
    return result;
}
float3x2 acos(float3x2 x) {
    float3x2 result;
    result[0][0] = acos(x[0][0]);
    result[1][0] = acos(x[1][0]);
    result[2][0] = acos(x[2][0]);
    result[0][1] = acos(x[0][1]);
    result[1][1] = acos(x[1][1]);
    result[2][1] = acos(x[2][1]);
    return result;
}
float4x2 acos(float4x2 x) {
    float4x2 result;
    result[0][0] = acos(x[0][0]);
    result[1][0] = acos(x[1][0]);
    result[2][0] = acos(x[2][0]);
    result[3][0] = acos(x[3][0]);
    result[0][1] = acos(x[0][1]);
    result[1][1] = acos(x[1][1]);
    result[2][1] = acos(x[2][1]);
    result[3][1] = acos(x[3][1]);
    return result;
}
float2x3 acos(float2x3 x) {
    float2x3 result;
    result[0][0] = acos(x[0][0]);
    result[1][0] = acos(x[1][0]);
    result[0][1] = acos(x[0][1]);
    result[1][1] = acos(x[1][1]);
    result[0][2] = acos(x[0][2]);
    result[1][2] = acos(x[1][2]);
    return result;
}
float3x3 acos(float3x3 x) {
    float3x3 result;
    result[0][0] = acos(x[0][0]);
    result[1][0] = acos(x[1][0]);
    result[2][0] = acos(x[2][0]);
    result[0][1] = acos(x[0][1]);
    result[1][1] = acos(x[1][1]);
    result[2][1] = acos(x[2][1]);
    result[0][2] = acos(x[0][2]);
    result[1][2] = acos(x[1][2]);
    result[2][2] = acos(x[2][2]);
    return result;
}
float4x3 acos(float4x3 x) {
    float4x3 result;
    result[0][0] = acos(x[0][0]);
    result[1][0] = acos(x[1][0]);
    result[2][0] = acos(x[2][0]);
    result[3][0] = acos(x[3][0]);
    result[0][1] = acos(x[0][1]);
    result[1][1] = acos(x[1][1]);
    result[2][1] = acos(x[2][1]);
    result[3][1] = acos(x[3][1]);
    result[0][2] = acos(x[0][2]);
    result[1][2] = acos(x[1][2]);
    result[2][2] = acos(x[2][2]);
    result[3][2] = acos(x[3][2]);
    return result;
}
float2x4 acos(float2x4 x) {
    float2x4 result;
    result[0][0] = acos(x[0][0]);
    result[1][0] = acos(x[1][0]);
    result[0][1] = acos(x[0][1]);
    result[1][1] = acos(x[1][1]);
    result[0][2] = acos(x[0][2]);
    result[1][2] = acos(x[1][2]);
    result[0][3] = acos(x[0][3]);
    result[1][3] = acos(x[1][3]);
    return result;
}
float3x4 acos(float3x4 x) {
    float3x4 result;
    result[0][0] = acos(x[0][0]);
    result[1][0] = acos(x[1][0]);
    result[2][0] = acos(x[2][0]);
    result[0][1] = acos(x[0][1]);
    result[1][1] = acos(x[1][1]);
    result[2][1] = acos(x[2][1]);
    result[0][2] = acos(x[0][2]);
    result[1][2] = acos(x[1][2]);
    result[2][2] = acos(x[2][2]);
    result[0][3] = acos(x[0][3]);
    result[1][3] = acos(x[1][3]);
    result[2][3] = acos(x[2][3]);
    return result;
}
float4x4 acos(float4x4 x) {
    float4x4 result;
    result[0][0] = acos(x[0][0]);
    result[1][0] = acos(x[1][0]);
    result[2][0] = acos(x[2][0]);
    result[3][0] = acos(x[3][0]);
    result[0][1] = acos(x[0][1]);
    result[1][1] = acos(x[1][1]);
    result[2][1] = acos(x[2][1]);
    result[3][1] = acos(x[3][1]);
    result[0][2] = acos(x[0][2]);
    result[1][2] = acos(x[1][2]);
    result[2][2] = acos(x[2][2]);
    result[3][2] = acos(x[3][2]);
    result[0][3] = acos(x[0][3]);
    result[1][3] = acos(x[1][3]);
    result[2][3] = acos(x[2][3]);
    result[3][3] = acos(x[3][3]);
    return result;
}

/* Functions named operator> */
native bool operator>(int, int);
native bool operator>(uint, uint);
native bool operator>(float, float);
native bool2 operator>(uint2, uint2);
native bool3 operator>(uint3, uint3);
native bool4 operator>(uint4, uint4);
native bool2 operator>(int2, int2);
native bool3 operator>(int3, int3);
native bool4 operator>(int4, int4);
native bool2 operator>(float2, float2);
native bool3 operator>(float3, float3);
native bool4 operator>(float4, float4);
native bool2x2 operator>(float2x2, float2x2);
native bool3x2 operator>(float3x2, float3x2);
native bool4x2 operator>(float4x2, float4x2);
native bool2x3 operator>(float2x3, float2x3);
native bool3x3 operator>(float3x3, float3x3);
native bool4x3 operator>(float4x3, float4x3);
native bool2x4 operator>(float2x4, float2x4);
native bool3x4 operator>(float3x4, float3x4);
native bool4x4 operator>(float4x4, float4x4);

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

/* 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[1][0] = tanh(x[1][0]);
    result[0][1] = tanh(x[0][1]);
    result[1][1] = tanh(x[1][1]);
    return result;
}
float3x2 tanh(float3x2 x) {
    float3x2 result;
    result[0][0] = tanh(x[0][0]);
    result[1][0] = tanh(x[1][0]);
    result[2][0] = tanh(x[2][0]);
    result[0][1] = tanh(x[0][1]);
    result[1][1] = tanh(x[1][1]);
    result[2][1] = tanh(x[2][1]);
    return result;
}
float4x2 tanh(float4x2 x) {
    float4x2 result;
    result[0][0] = tanh(x[0][0]);
    result[1][0] = tanh(x[1][0]);
    result[2][0] = tanh(x[2][0]);
    result[3][0] = tanh(x[3][0]);
    result[0][1] = tanh(x[0][1]);
    result[1][1] = tanh(x[1][1]);
    result[2][1] = tanh(x[2][1]);
    result[3][1] = tanh(x[3][1]);
    return result;
}
float2x3 tanh(float2x3 x) {
    float2x3 result;
    result[0][0] = tanh(x[0][0]);
    result[1][0] = tanh(x[1][0]);
    result[0][1] = tanh(x[0][1]);
    result[1][1] = tanh(x[1][1]);
    result[0][2] = tanh(x[0][2]);
    result[1][2] = tanh(x[1][2]);
    return result;
}
float3x3 tanh(float3x3 x) {
    float3x3 result;
    result[0][0] = tanh(x[0][0]);
    result[1][0] = tanh(x[1][0]);
    result[2][0] = tanh(x[2][0]);
    result[0][1] = tanh(x[0][1]);
    result[1][1] = tanh(x[1][1]);
    result[2][1] = tanh(x[2][1]);
    result[0][2] = tanh(x[0][2]);
    result[1][2] = tanh(x[1][2]);
    result[2][2] = tanh(x[2][2]);
    return result;
}
float4x3 tanh(float4x3 x) {
    float4x3 result;
    result[0][0] = tanh(x[0][0]);
    result[1][0] = tanh(x[1][0]);
    result[2][0] = tanh(x[2][0]);
    result[3][0] = tanh(x[3][0]);
    result[0][1] = tanh(x[0][1]);
    result[1][1] = tanh(x[1][1]);
    result[2][1] = tanh(x[2][1]);
    result[3][1] = tanh(x[3][1]);
    result[0][2] = tanh(x[0][2]);
    result[1][2] = tanh(x[1][2]);
    result[2][2] = tanh(x[2][2]);
    result[3][2] = tanh(x[3][2]);
    return result;
}
float2x4 tanh(float2x4 x) {
    float2x4 result;
    result[0][0] = tanh(x[0][0]);
    result[1][0] = tanh(x[1][0]);
    result[0][1] = tanh(x[0][1]);
    result[1][1] = tanh(x[1][1]);
    result[0][2] = tanh(x[0][2]);
    result[1][2] = tanh(x[1][2]);
    result[0][3] = tanh(x[0][3]);
    result[1][3] = tanh(x[1][3]);
    return result;
}
float3x4 tanh(float3x4 x) {
    float3x4 result;
    result[0][0] = tanh(x[0][0]);
    result[1][0] = tanh(x[1][0]);
    result[2][0] = tanh(x[2][0]);
    result[0][1] = tanh(x[0][1]);
    result[1][1] = tanh(x[1][1]);
    result[2][1] = tanh(x[2][1]);
    result[0][2] = tanh(x[0][2]);
    result[1][2] = tanh(x[1][2]);
    result[2][2] = tanh(x[2][2]);
    result[0][3] = tanh(x[0][3]);
    result[1][3] = tanh(x[1][3]);
    result[2][3] = tanh(x[2][3]);
    return result;
}
float4x4 tanh(float4x4 x) {
    float4x4 result;
    result[0][0] = tanh(x[0][0]);
    result[1][0] = tanh(x[1][0]);
    result[2][0] = tanh(x[2][0]);
    result[3][0] = tanh(x[3][0]);
    result[0][1] = tanh(x[0][1]);
    result[1][1] = tanh(x[1][1]);
    result[2][1] = tanh(x[2][1]);
    result[3][1] = tanh(x[3][1]);
    result[0][2] = tanh(x[0][2]);
    result[1][2] = tanh(x[1][2]);
    result[2][2] = tanh(x[2][2]);
    result[3][2] = tanh(x[3][2]);
    result[0][3] = tanh(x[0][3]);
    result[1][3] = tanh(x[1][3]);
    result[2][3] = tanh(x[2][3]);
    result[3][3] = tanh(x[3][3]);
    return result;
}

/* Functions named operator* */
native int operator*(int, int);
native uint operator*(uint, uint);
native float operator*(float, float);
native uint2 operator*(uint2, uint2);
native uint2 operator*(uint2, uint);
native uint2 operator*(uint, uint2);
native uint3 operator*(uint3, uint3);
native uint3 operator*(uint3, uint);
native uint3 operator*(uint, uint3);
native uint4 operator*(uint4, uint4);
native uint4 operator*(uint4, uint);
native uint4 operator*(uint, uint4);
native int2 operator*(int2, int2);
native int2 operator*(int2, int);
native int2 operator*(int, int2);
native int3 operator*(int3, int3);
native int3 operator*(int3, int);
native int3 operator*(int, int3);
native int4 operator*(int4, int4);
native int4 operator*(int4, int);
native int4 operator*(int, int4);
native float2 operator*(float2, float2);
native float2 operator*(float2, float);
native float2 operator*(float, float2);
native float3 operator*(float3, float3);
native float3 operator*(float3, float);
native float3 operator*(float, float3);
native float4 operator*(float4, float4);
native float4 operator*(float4, float);
native float4 operator*(float, float4);
native float2x2 operator*(float2x2, float2x2);
native float2x2 operator*(float2x2, float);
native float2x2 operator*(float, float2x2);
native float3x2 operator*(float3x2, float3x2);
native float3x2 operator*(float3x2, float);
native float3x2 operator*(float, float3x2);
native float4x2 operator*(float4x2, float4x2);
native float4x2 operator*(float4x2, float);
native float4x2 operator*(float, float4x2);
native float2x3 operator*(float2x3, float2x3);
native float2x3 operator*(float2x3, float);
native float2x3 operator*(float, float2x3);
native float3x3 operator*(float3x3, float3x3);
native float3x3 operator*(float3x3, float);
native float3x3 operator*(float, float3x3);
native float4x3 operator*(float4x3, float4x3);
native float4x3 operator*(float4x3, float);
native float4x3 operator*(float, float4x3);
native float2x4 operator*(float2x4, float2x4);
native float2x4 operator*(float2x4, float);
native float2x4 operator*(float, float2x4);
native float3x4 operator*(float3x4, float3x4);
native float3x4 operator*(float3x4, float);
native float3x4 operator*(float, float3x4);
native float4x4 operator*(float4x4, float4x4);
native float4x4 operator*(float4x4, float);
native float4x4 operator*(float, float4x4);

/* 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[1][0] = cos(x[1][0]);
    result[0][1] = cos(x[0][1]);
    result[1][1] = cos(x[1][1]);
    return result;
}
float3x2 cos(float3x2 x) {
    float3x2 result;
    result[0][0] = cos(x[0][0]);
    result[1][0] = cos(x[1][0]);
    result[2][0] = cos(x[2][0]);
    result[0][1] = cos(x[0][1]);
    result[1][1] = cos(x[1][1]);
    result[2][1] = cos(x[2][1]);
    return result;
}
float4x2 cos(float4x2 x) {
    float4x2 result;
    result[0][0] = cos(x[0][0]);
    result[1][0] = cos(x[1][0]);
    result[2][0] = cos(x[2][0]);
    result[3][0] = cos(x[3][0]);
    result[0][1] = cos(x[0][1]);
    result[1][1] = cos(x[1][1]);
    result[2][1] = cos(x[2][1]);
    result[3][1] = cos(x[3][1]);
    return result;
}
float2x3 cos(float2x3 x) {
    float2x3 result;
    result[0][0] = cos(x[0][0]);
    result[1][0] = cos(x[1][0]);
    result[0][1] = cos(x[0][1]);
    result[1][1] = cos(x[1][1]);
    result[0][2] = cos(x[0][2]);
    result[1][2] = cos(x[1][2]);
    return result;
}
float3x3 cos(float3x3 x) {
    float3x3 result;
    result[0][0] = cos(x[0][0]);
    result[1][0] = cos(x[1][0]);
    result[2][0] = cos(x[2][0]);
    result[0][1] = cos(x[0][1]);
    result[1][1] = cos(x[1][1]);
    result[2][1] = cos(x[2][1]);
    result[0][2] = cos(x[0][2]);
    result[1][2] = cos(x[1][2]);
    result[2][2] = cos(x[2][2]);
    return result;
}
float4x3 cos(float4x3 x) {
    float4x3 result;
    result[0][0] = cos(x[0][0]);
    result[1][0] = cos(x[1][0]);
    result[2][0] = cos(x[2][0]);
    result[3][0] = cos(x[3][0]);
    result[0][1] = cos(x[0][1]);
    result[1][1] = cos(x[1][1]);
    result[2][1] = cos(x[2][1]);
    result[3][1] = cos(x[3][1]);
    result[0][2] = cos(x[0][2]);
    result[1][2] = cos(x[1][2]);
    result[2][2] = cos(x[2][2]);
    result[3][2] = cos(x[3][2]);
    return result;
}
float2x4 cos(float2x4 x) {
    float2x4 result;
    result[0][0] = cos(x[0][0]);
    result[1][0] = cos(x[1][0]);
    result[0][1] = cos(x[0][1]);
    result[1][1] = cos(x[1][1]);
    result[0][2] = cos(x[0][2]);
    result[1][2] = cos(x[1][2]);
    result[0][3] = cos(x[0][3]);
    result[1][3] = cos(x[1][3]);
    return result;
}
float3x4 cos(float3x4 x) {
    float3x4 result;
    result[0][0] = cos(x[0][0]);
    result[1][0] = cos(x[1][0]);
    result[2][0] = cos(x[2][0]);
    result[0][1] = cos(x[0][1]);
    result[1][1] = cos(x[1][1]);
    result[2][1] = cos(x[2][1]);
    result[0][2] = cos(x[0][2]);
    result[1][2] = cos(x[1][2]);
    result[2][2] = cos(x[2][2]);
    result[0][3] = cos(x[0][3]);
    result[1][3] = cos(x[1][3]);
    result[2][3] = cos(x[2][3]);
    return result;
}
float4x4 cos(float4x4 x) {
    float4x4 result;
    result[0][0] = cos(x[0][0]);
    result[1][0] = cos(x[1][0]);
    result[2][0] = cos(x[2][0]);
    result[3][0] = cos(x[3][0]);
    result[0][1] = cos(x[0][1]);
    result[1][1] = cos(x[1][1]);
    result[2][1] = cos(x[2][1]);
    result[3][1] = cos(x[3][1]);
    result[0][2] = cos(x[0][2]);
    result[1][2] = cos(x[1][2]);
    result[2][2] = cos(x[2][2]);
    result[3][2] = cos(x[3][2]);
    result[0][3] = cos(x[0][3]);
    result[1][3] = cos(x[1][3]);
    result[2][3] = cos(x[2][3]);
    result[3][3] = cos(x[3][3]);
    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);
native bool2 operator==(bool2, bool2);
native bool3 operator==(bool3, bool3);
native bool4 operator==(bool4, bool4);
native bool2 operator==(uint2, uint2);
native bool3 operator==(uint3, uint3);
native bool4 operator==(uint4, uint4);
native bool2 operator==(int2, int2);
native bool3 operator==(int3, int3);
native bool4 operator==(int4, int4);
native bool2 operator==(float2, float2);
native bool3 operator==(float3, float3);
native bool4 operator==(float4, float4);
native bool2x2 operator==(float2x2, float2x2);
native bool3x2 operator==(float3x2, float3x2);
native bool4x2 operator==(float4x2, float4x2);
native bool2x3 operator==(float2x3, float2x3);
native bool3x3 operator==(float3x3, float3x3);
native bool4x3 operator==(float4x3, float4x3);
native bool2x4 operator==(float2x4, float2x4);
native bool3x4 operator==(float3x4, float3x4);
native bool4x4 operator==(float4x4, float4x4);
native bool2x2 operator==(bool2x2, bool2x2);
native bool3x2 operator==(bool3x2, bool3x2);
native bool4x2 operator==(bool4x2, bool4x2);
native bool2x3 operator==(bool2x3, bool2x3);
native bool3x3 operator==(bool3x3, bool3x3);
native bool4x3 operator==(bool4x3, bool4x3);
native bool2x4 operator==(bool2x4, bool2x4);
native bool3x4 operator==(bool3x4, bool3x4);
native bool4x4 operator==(bool4x4, bool4x4);

/* 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 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 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[1][0] = log2(x[1][0]);
    result[0][1] = log2(x[0][1]);
    result[1][1] = log2(x[1][1]);
    return result;
}
float3x2 log2(float3x2 x) {
    float3x2 result;
    result[0][0] = log2(x[0][0]);
    result[1][0] = log2(x[1][0]);
    result[2][0] = log2(x[2][0]);
    result[0][1] = log2(x[0][1]);
    result[1][1] = log2(x[1][1]);
    result[2][1] = log2(x[2][1]);
    return result;
}
float4x2 log2(float4x2 x) {
    float4x2 result;
    result[0][0] = log2(x[0][0]);
    result[1][0] = log2(x[1][0]);
    result[2][0] = log2(x[2][0]);
    result[3][0] = log2(x[3][0]);
    result[0][1] = log2(x[0][1]);
    result[1][1] = log2(x[1][1]);
    result[2][1] = log2(x[2][1]);
    result[3][1] = log2(x[3][1]);
    return result;
}
float2x3 log2(float2x3 x) {
    float2x3 result;
    result[0][0] = log2(x[0][0]);
    result[1][0] = log2(x[1][0]);
    result[0][1] = log2(x[0][1]);
    result[1][1] = log2(x[1][1]);
    result[0][2] = log2(x[0][2]);
    result[1][2] = log2(x[1][2]);
    return result;
}
float3x3 log2(float3x3 x) {
    float3x3 result;
    result[0][0] = log2(x[0][0]);
    result[1][0] = log2(x[1][0]);
    result[2][0] = log2(x[2][0]);
    result[0][1] = log2(x[0][1]);
    result[1][1] = log2(x[1][1]);
    result[2][1] = log2(x[2][1]);
    result[0][2] = log2(x[0][2]);
    result[1][2] = log2(x[1][2]);
    result[2][2] = log2(x[2][2]);
    return result;
}
float4x3 log2(float4x3 x) {
    float4x3 result;
    result[0][0] = log2(x[0][0]);
    result[1][0] = log2(x[1][0]);
    result[2][0] = log2(x[2][0]);
    result[3][0] = log2(x[3][0]);
    result[0][1] = log2(x[0][1]);
    result[1][1] = log2(x[1][1]);
    result[2][1] = log2(x[2][1]);
    result[3][1] = log2(x[3][1]);
    result[0][2] = log2(x[0][2]);
    result[1][2] = log2(x[1][2]);
    result[2][2] = log2(x[2][2]);
    result[3][2] = log2(x[3][2]);
    return result;
}
float2x4 log2(float2x4 x) {
    float2x4 result;
    result[0][0] = log2(x[0][0]);
    result[1][0] = log2(x[1][0]);
    result[0][1] = log2(x[0][1]);
    result[1][1] = log2(x[1][1]);
    result[0][2] = log2(x[0][2]);
    result[1][2] = log2(x[1][2]);
    result[0][3] = log2(x[0][3]);
    result[1][3] = log2(x[1][3]);
    return result;
}
float3x4 log2(float3x4 x) {
    float3x4 result;
    result[0][0] = log2(x[0][0]);
    result[1][0] = log2(x[1][0]);
    result[2][0] = log2(x[2][0]);
    result[0][1] = log2(x[0][1]);
    result[1][1] = log2(x[1][1]);
    result[2][1] = log2(x[2][1]);
    result[0][2] = log2(x[0][2]);
    result[1][2] = log2(x[1][2]);
    result[2][2] = log2(x[2][2]);
    result[0][3] = log2(x[0][3]);
    result[1][3] = log2(x[1][3]);
    result[2][3] = log2(x[2][3]);
    return result;
}
float4x4 log2(float4x4 x) {
    float4x4 result;
    result[0][0] = log2(x[0][0]);
    result[1][0] = log2(x[1][0]);
    result[2][0] = log2(x[2][0]);
    result[3][0] = log2(x[3][0]);
    result[0][1] = log2(x[0][1]);
    result[1][1] = log2(x[1][1]);
    result[2][1] = log2(x[2][1]);
    result[3][1] = log2(x[3][1]);
    result[0][2] = log2(x[0][2]);
    result[1][2] = log2(x[1][2]);
    result[2][2] = log2(x[2][2]);
    result[3][2] = log2(x[3][2]);
    result[0][3] = log2(x[0][3]);
    result[1][3] = log2(x[1][3]);
    result[2][3] = log2(x[2][3]);
    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[1][0] = ldexp(x[1][0], y[1][0]);
    result[0][1] = ldexp(x[0][1], y[0][1]);
    result[1][1] = ldexp(x[1][1], y[1][1]);
    return result;
}
float3x2 ldexp(float3x2 x, float3x2 y) {
    float3x2 result;
    result[0][0] = ldexp(x[0][0], y[0][0]);
    result[1][0] = ldexp(x[1][0], y[1][0]);
    result[2][0] = ldexp(x[2][0], y[2][0]);
    result[0][1] = ldexp(x[0][1], y[0][1]);
    result[1][1] = ldexp(x[1][1], y[1][1]);
    result[2][1] = ldexp(x[2][1], y[2][1]);
    return result;
}
float4x2 ldexp(float4x2 x, float4x2 y) {
    float4x2 result;
    result[0][0] = ldexp(x[0][0], y[0][0]);
    result[1][0] = ldexp(x[1][0], y[1][0]);
    result[2][0] = ldexp(x[2][0], y[2][0]);
    result[3][0] = ldexp(x[3][0], y[3][0]);
    result[0][1] = ldexp(x[0][1], y[0][1]);
    result[1][1] = ldexp(x[1][1], y[1][1]);
    result[2][1] = ldexp(x[2][1], y[2][1]);
    result[3][1] = ldexp(x[3][1], y[3][1]);
    return result;
}
float2x3 ldexp(float2x3 x, float2x3 y) {
    float2x3 result;
    result[0][0] = ldexp(x[0][0], y[0][0]);
    result[1][0] = ldexp(x[1][0], y[1][0]);
    result[0][1] = ldexp(x[0][1], y[0][1]);
    result[1][1] = ldexp(x[1][1], y[1][1]);
    result[0][2] = ldexp(x[0][2], y[0][2]);
    result[1][2] = ldexp(x[1][2], y[1][2]);
    return result;
}
float3x3 ldexp(float3x3 x, float3x3 y) {
    float3x3 result;
    result[0][0] = ldexp(x[0][0], y[0][0]);
    result[1][0] = ldexp(x[1][0], y[1][0]);
    result[2][0] = ldexp(x[2][0], y[2][0]);
    result[0][1] = ldexp(x[0][1], y[0][1]);
    result[1][1] = ldexp(x[1][1], y[1][1]);
    result[2][1] = ldexp(x[2][1], y[2][1]);
    result[0][2] = ldexp(x[0][2], y[0][2]);
    result[1][2] = ldexp(x[1][2], y[1][2]);
    result[2][2] = ldexp(x[2][2], y[2][2]);
    return result;
}
float4x3 ldexp(float4x3 x, float4x3 y) {
    float4x3 result;
    result[0][0] = ldexp(x[0][0], y[0][0]);
    result[1][0] = ldexp(x[1][0], y[1][0]);
    result[2][0] = ldexp(x[2][0], y[2][0]);
    result[3][0] = ldexp(x[3][0], y[3][0]);
    result[0][1] = ldexp(x[0][1], y[0][1]);
    result[1][1] = ldexp(x[1][1], y[1][1]);
    result[2][1] = ldexp(x[2][1], y[2][1]);
    result[3][1] = ldexp(x[3][1], y[3][1]);
    result[0][2] = ldexp(x[0][2], y[0][2]);
    result[1][2] = ldexp(x[1][2], y[1][2]);
    result[2][2] = ldexp(x[2][2], y[2][2]);
    result[3][2] = ldexp(x[3][2], y[3][2]);
    return result;
}
float2x4 ldexp(float2x4 x, float2x4 y) {
    float2x4 result;
    result[0][0] = ldexp(x[0][0], y[0][0]);
    result[1][0] = ldexp(x[1][0], y[1][0]);
    result[0][1] = ldexp(x[0][1], y[0][1]);
    result[1][1] = ldexp(x[1][1], y[1][1]);
    result[0][2] = ldexp(x[0][2], y[0][2]);
    result[1][2] = ldexp(x[1][2], y[1][2]);
    result[0][3] = ldexp(x[0][3], y[0][3]);
    result[1][3] = ldexp(x[1][3], y[1][3]);
    return result;
}
float3x4 ldexp(float3x4 x, float3x4 y) {
    float3x4 result;
    result[0][0] = ldexp(x[0][0], y[0][0]);
    result[1][0] = ldexp(x[1][0], y[1][0]);
    result[2][0] = ldexp(x[2][0], y[2][0]);
    result[0][1] = ldexp(x[0][1], y[0][1]);
    result[1][1] = ldexp(x[1][1], y[1][1]);
    result[2][1] = ldexp(x[2][1], y[2][1]);
    result[0][2] = ldexp(x[0][2], y[0][2]);
    result[1][2] = ldexp(x[1][2], y[1][2]);
    result[2][2] = ldexp(x[2][2], y[2][2]);
    result[0][3] = ldexp(x[0][3], y[0][3]);
    result[1][3] = ldexp(x[1][3], y[1][3]);
    result[2][3] = ldexp(x[2][3], y[2][3]);
    return result;
}
float4x4 ldexp(float4x4 x, float4x4 y) {
    float4x4 result;
    result[0][0] = ldexp(x[0][0], y[0][0]);
    result[1][0] = ldexp(x[1][0], y[1][0]);
    result[2][0] = ldexp(x[2][0], y[2][0]);
    result[3][0] = ldexp(x[3][0], y[3][0]);
    result[0][1] = ldexp(x[0][1], y[0][1]);
    result[1][1] = ldexp(x[1][1], y[1][1]);
    result[2][1] = ldexp(x[2][1], y[2][1]);
    result[3][1] = ldexp(x[3][1], y[3][1]);
    result[0][2] = ldexp(x[0][2], y[0][2]);
    result[1][2] = ldexp(x[1][2], y[1][2]);
    result[2][2] = ldexp(x[2][2], y[2][2]);
    result[3][2] = ldexp(x[3][2], y[3][2]);
    result[0][3] = ldexp(x[0][3], y[0][3]);
    result[1][3] = ldexp(x[1][3], y[1][3]);
    result[2][3] = ldexp(x[2][3], y[2][3]);
    result[3][3] = ldexp(x[3][3], y[3][3]);
    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[1][0] = abs(x[1][0]);
    result[0][1] = abs(x[0][1]);
    result[1][1] = abs(x[1][1]);
    return result;
}
float3x2 abs(float3x2 x) {
    float3x2 result;
    result[0][0] = abs(x[0][0]);
    result[1][0] = abs(x[1][0]);
    result[2][0] = abs(x[2][0]);
    result[0][1] = abs(x[0][1]);
    result[1][1] = abs(x[1][1]);
    result[2][1] = abs(x[2][1]);
    return result;
}
float4x2 abs(float4x2 x) {
    float4x2 result;
    result[0][0] = abs(x[0][0]);
    result[1][0] = abs(x[1][0]);
    result[2][0] = abs(x[2][0]);
    result[3][0] = abs(x[3][0]);
    result[0][1] = abs(x[0][1]);
    result[1][1] = abs(x[1][1]);
    result[2][1] = abs(x[2][1]);
    result[3][1] = abs(x[3][1]);
    return result;
}
float2x3 abs(float2x3 x) {
    float2x3 result;
    result[0][0] = abs(x[0][0]);
    result[1][0] = abs(x[1][0]);
    result[0][1] = abs(x[0][1]);
    result[1][1] = abs(x[1][1]);
    result[0][2] = abs(x[0][2]);
    result[1][2] = abs(x[1][2]);
    return result;
}
float3x3 abs(float3x3 x) {
    float3x3 result;
    result[0][0] = abs(x[0][0]);
    result[1][0] = abs(x[1][0]);
    result[2][0] = abs(x[2][0]);
    result[0][1] = abs(x[0][1]);
    result[1][1] = abs(x[1][1]);
    result[2][1] = abs(x[2][1]);
    result[0][2] = abs(x[0][2]);
    result[1][2] = abs(x[1][2]);
    result[2][2] = abs(x[2][2]);
    return result;
}
float4x3 abs(float4x3 x) {
    float4x3 result;
    result[0][0] = abs(x[0][0]);
    result[1][0] = abs(x[1][0]);
    result[2][0] = abs(x[2][0]);
    result[3][0] = abs(x[3][0]);
    result[0][1] = abs(x[0][1]);
    result[1][1] = abs(x[1][1]);
    result[2][1] = abs(x[2][1]);
    result[3][1] = abs(x[3][1]);
    result[0][2] = abs(x[0][2]);
    result[1][2] = abs(x[1][2]);
    result[2][2] = abs(x[2][2]);
    result[3][2] = abs(x[3][2]);
    return result;
}
float2x4 abs(float2x4 x) {
    float2x4 result;
    result[0][0] = abs(x[0][0]);
    result[1][0] = abs(x[1][0]);
    result[0][1] = abs(x[0][1]);
    result[1][1] = abs(x[1][1]);
    result[0][2] = abs(x[0][2]);
    result[1][2] = abs(x[1][2]);
    result[0][3] = abs(x[0][3]);
    result[1][3] = abs(x[1][3]);
    return result;
}
float3x4 abs(float3x4 x) {
    float3x4 result;
    result[0][0] = abs(x[0][0]);
    result[1][0] = abs(x[1][0]);
    result[2][0] = abs(x[2][0]);
    result[0][1] = abs(x[0][1]);
    result[1][1] = abs(x[1][1]);
    result[2][1] = abs(x[2][1]);
    result[0][2] = abs(x[0][2]);
    result[1][2] = abs(x[1][2]);
    result[2][2] = abs(x[2][2]);
    result[0][3] = abs(x[0][3]);
    result[1][3] = abs(x[1][3]);
    result[2][3] = abs(x[2][3]);
    return result;
}
float4x4 abs(float4x4 x) {
    float4x4 result;
    result[0][0] = abs(x[0][0]);
    result[1][0] = abs(x[1][0]);
    result[2][0] = abs(x[2][0]);
    result[3][0] = abs(x[3][0]);
    result[0][1] = abs(x[0][1]);
    result[1][1] = abs(x[1][1]);
    result[2][1] = abs(x[2][1]);
    result[3][1] = abs(x[3][1]);
    result[0][2] = abs(x[0][2]);
    result[1][2] = abs(x[1][2]);
    result[2][2] = abs(x[2][2]);
    result[3][2] = abs(x[3][2]);
    result[0][3] = abs(x[0][3]);
    result[1][3] = abs(x[1][3]);
    result[2][3] = abs(x[2][3]);
    result[3][3] = abs(x[3][3]);
    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[1][0] = round(x[1][0]);
    result[0][1] = round(x[0][1]);
    result[1][1] = round(x[1][1]);
    return result;
}
float3x2 round(float3x2 x) {
    float3x2 result;
    result[0][0] = round(x[0][0]);
    result[1][0] = round(x[1][0]);
    result[2][0] = round(x[2][0]);
    result[0][1] = round(x[0][1]);
    result[1][1] = round(x[1][1]);
    result[2][1] = round(x[2][1]);
    return result;
}
float4x2 round(float4x2 x) {
    float4x2 result;
    result[0][0] = round(x[0][0]);
    result[1][0] = round(x[1][0]);
    result[2][0] = round(x[2][0]);
    result[3][0] = round(x[3][0]);
    result[0][1] = round(x[0][1]);
    result[1][1] = round(x[1][1]);
    result[2][1] = round(x[2][1]);
    result[3][1] = round(x[3][1]);
    return result;
}
float2x3 round(float2x3 x) {
    float2x3 result;
    result[0][0] = round(x[0][0]);
    result[1][0] = round(x[1][0]);
    result[0][1] = round(x[0][1]);
    result[1][1] = round(x[1][1]);
    result[0][2] = round(x[0][2]);
    result[1][2] = round(x[1][2]);
    return result;
}
float3x3 round(float3x3 x) {
    float3x3 result;
    result[0][0] = round(x[0][0]);
    result[1][0] = round(x[1][0]);
    result[2][0] = round(x[2][0]);
    result[0][1] = round(x[0][1]);
    result[1][1] = round(x[1][1]);
    result[2][1] = round(x[2][1]);
    result[0][2] = round(x[0][2]);
    result[1][2] = round(x[1][2]);
    result[2][2] = round(x[2][2]);
    return result;
}
float4x3 round(float4x3 x) {
    float4x3 result;
    result[0][0] = round(x[0][0]);
    result[1][0] = round(x[1][0]);
    result[2][0] = round(x[2][0]);
    result[3][0] = round(x[3][0]);
    result[0][1] = round(x[0][1]);
    result[1][1] = round(x[1][1]);
    result[2][1] = round(x[2][1]);
    result[3][1] = round(x[3][1]);
    result[0][2] = round(x[0][2]);
    result[1][2] = round(x[1][2]);
    result[2][2] = round(x[2][2]);
    result[3][2] = round(x[3][2]);
    return result;
}
float2x4 round(float2x4 x) {
    float2x4 result;
    result[0][0] = round(x[0][0]);
    result[1][0] = round(x[1][0]);
    result[0][1] = round(x[0][1]);
    result[1][1] = round(x[1][1]);
    result[0][2] = round(x[0][2]);
    result[1][2] = round(x[1][2]);
    result[0][3] = round(x[0][3]);
    result[1][3] = round(x[1][3]);
    return result;
}
float3x4 round(float3x4 x) {
    float3x4 result;
    result[0][0] = round(x[0][0]);
    result[1][0] = round(x[1][0]);
    result[2][0] = round(x[2][0]);
    result[0][1] = round(x[0][1]);
    result[1][1] = round(x[1][1]);
    result[2][1] = round(x[2][1]);
    result[0][2] = round(x[0][2]);
    result[1][2] = round(x[1][2]);
    result[2][2] = round(x[2][2]);
    result[0][3] = round(x[0][3]);
    result[1][3] = round(x[1][3]);
    result[2][3] = round(x[2][3]);
    return result;
}
float4x4 round(float4x4 x) {
    float4x4 result;
    result[0][0] = round(x[0][0]);
    result[1][0] = round(x[1][0]);
    result[2][0] = round(x[2][0]);
    result[3][0] = round(x[3][0]);
    result[0][1] = round(x[0][1]);
    result[1][1] = round(x[1][1]);
    result[2][1] = round(x[2][1]);
    result[3][1] = round(x[3][1]);
    result[0][2] = round(x[0][2]);
    result[1][2] = round(x[1][2]);
    result[2][2] = round(x[2][2]);
    result[3][2] = round(x[3][2]);
    result[0][3] = round(x[0][3]);
    result[1][3] = round(x[1][3]);
    result[2][3] = round(x[2][3]);
    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[1][0] = x * y[1][0];
    result[0][1] = x * y[0][1];
    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[1][0] = x[1][0] * y;
    result[0][1] = x[0][1] * y;
    result[1][1] = x[1][1] * y;
    return result;
}
float3x2 mul(float x, float3x2 y) {
    float3x2 result;
    result[0][0] = x * y[0][0];
    result[1][0] = x * y[1][0];
    result[2][0] = x * y[2][0];
    result[0][1] = x * y[0][1];
    result[1][1] = x * y[1][1];
    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[1][0] = x[1][0] * y;
    result[2][0] = x[2][0] * y;
    result[0][1] = x[0][1] * y;
    result[1][1] = x[1][1] * y;
    result[2][1] = x[2][1] * y;
    return result;
}
float4x2 mul(float x, float4x2 y) {
    float4x2 result;
    result[0][0] = x * y[0][0];
    result[1][0] = x * y[1][0];
    result[2][0] = x * y[2][0];
    result[3][0] = x * y[3][0];
    result[0][1] = x * y[0][1];
    result[1][1] = x * y[1][1];
    result[2][1] = x * y[2][1];
    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[1][0] = x[1][0] * y;
    result[2][0] = x[2][0] * y;
    result[3][0] = x[3][0] * y;
    result[0][1] = x[0][1] * y;
    result[1][1] = x[1][1] * y;
    result[2][1] = x[2][1] * y;
    result[3][1] = x[3][1] * y;
    return result;
}
float2x3 mul(float x, float2x3 y) {
    float2x3 result;
    result[0][0] = x * y[0][0];
    result[1][0] = x * y[1][0];
    result[0][1] = x * y[0][1];
    result[1][1] = x * y[1][1];
    result[0][2] = x * y[0][2];
    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[1][0] = x[1][0] * y;
    result[0][1] = x[0][1] * y;
    result[1][1] = x[1][1] * y;
    result[0][2] = x[0][2] * y;
    result[1][2] = x[1][2] * y;
    return result;
}
float3x3 mul(float x, float3x3 y) {
    float3x3 result;
    result[0][0] = x * y[0][0];
    result[1][0] = x * y[1][0];
    result[2][0] = x * y[2][0];
    result[0][1] = x * y[0][1];
    result[1][1] = x * y[1][1];
    result[2][1] = x * y[2][1];
    result[0][2] = x * y[0][2];
    result[1][2] = x * y[1][2];
    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[1][0] = x[1][0] * y;
    result[2][0] = x[2][0] * y;
    result[0][1] = x[0][1] * y;
    result[1][1] = x[1][1] * y;
    result[2][1] = x[2][1] * y;
    result[0][2] = x[0][2] * y;
    result[1][2] = x[1][2] * y;
    result[2][2] = x[2][2] * y;
    return result;
}
float4x3 mul(float x, float4x3 y) {
    float4x3 result;
    result[0][0] = x * y[0][0];
    result[1][0] = x * y[1][0];
    result[2][0] = x * y[2][0];
    result[3][0] = x * y[3][0];
    result[0][1] = x * y[0][1];
    result[1][1] = x * y[1][1];
    result[2][1] = x * y[2][1];
    result[3][1] = x * y[3][1];
    result[0][2] = x * y[0][2];
    result[1][2] = x * y[1][2];
    result[2][2] = x * y[2][2];
    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[1][0] = x[1][0] * y;
    result[2][0] = x[2][0] * y;
    result[3][0] = x[3][0] * y;
    result[0][1] = x[0][1] * y;
    result[1][1] = x[1][1] * y;
    result[2][1] = x[2][1] * y;
    result[3][1] = x[3][1] * y;
    result[0][2] = x[0][2] * y;
    result[1][2] = x[1][2] * y;
    result[2][2] = x[2][2] * y;
    result[3][2] = x[3][2] * y;
    return result;
}
float2x4 mul(float x, float2x4 y) {
    float2x4 result;
    result[0][0] = x * y[0][0];
    result[1][0] = x * y[1][0];
    result[0][1] = x * y[0][1];
    result[1][1] = x * y[1][1];
    result[0][2] = x * y[0][2];
    result[1][2] = x * y[1][2];
    result[0][3] = x * y[0][3];
    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[1][0] = x[1][0] * y;
    result[0][1] = x[0][1] * y;
    result[1][1] = x[1][1] * y;
    result[0][2] = x[0][2] * y;
    result[1][2] = x[1][2] * y;
    result[0][3] = x[0][3] * y;
    result[1][3] = x[1][3] * y;
    return result;
}
float3x4 mul(float x, float3x4 y) {
    float3x4 result;
    result[0][0] = x * y[0][0];
    result[1][0] = x * y[1][0];
    result[2][0] = x * y[2][0];
    result[0][1] = x * y[0][1];
    result[1][1] = x * y[1][1];
    result[2][1] = x * y[2][1];
    result[0][2] = x * y[0][2];
    result[1][2] = x * y[1][2];
    result[2][2] = x * y[2][2];
    result[0][3] = x * y[0][3];
    result[1][3] = x * y[1][3];
    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[1][0] = x[1][0] * y;
    result[2][0] = x[2][0] * y;
    result[0][1] = x[0][1] * y;
    result[1][1] = x[1][1] * y;
    result[2][1] = x[2][1] * y;
    result[0][2] = x[0][2] * y;
    result[1][2] = x[1][2] * y;
    result[2][2] = x[2][2] * y;
    result[0][3] = x[0][3] * y;
    result[1][3] = x[1][3] * y;
    result[2][3] = x[2][3] * y;
    return result;
}
float4x4 mul(float x, float4x4 y) {
    float4x4 result;
    result[0][0] = x * y[0][0];
    result[1][0] = x * y[1][0];
    result[2][0] = x * y[2][0];
    result[3][0] = x * y[3][0];
    result[0][1] = x * y[0][1];
    result[1][1] = x * y[1][1];
    result[2][1] = x * y[2][1];
    result[3][1] = x * y[3][1];
    result[0][2] = x * y[0][2];
    result[1][2] = x * y[1][2];
    result[2][2] = x * y[2][2];
    result[3][2] = x * y[3][2];
    result[0][3] = x * y[0][3];
    result[1][3] = x * y[1][3];
    result[2][3] = x * y[2][3];
    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[1][0] = x[1][0] * y;
    result[2][0] = x[2][0] * y;
    result[3][0] = x[3][0] * y;
    result[0][1] = x[0][1] * y;
    result[1][1] = x[1][1] * y;
    result[2][1] = x[2][1] * y;
    result[3][1] = x[3][1] * y;
    result[0][2] = x[0][2] * y;
    result[1][2] = x[1][2] * y;
    result[2][2] = x[2][2] * y;
    result[3][2] = x[3][2] * y;
    result[0][3] = x[0][3] * y;
    result[1][3] = x[1][3] * y;
    result[2][3] = x[2][3] * 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[0][1];
    result[1] = 0;
    result[1] += x[0] * y[1][0];
    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[1][0] * y[1];
    result[1] = 0;
    result[1] += x[0][1] * y[0];
    result[1] += x[1][1] * y[1];
    return result;
}
float3 mul(float2 x, float3x2 y) {
    float3 result;
    result[0] = 0;
    result[0] += x[0] * y[0][0];
    result[0] += x[1] * y[0][1];
    result[1] = 0;
    result[1] += x[0] * y[1][0];
    result[1] += x[1] * y[1][1];
    result[2] = 0;
    result[2] += x[0] * y[2][0];
    result[2] += x[1] * y[2][1];
    return result;
}
float2 mul(float3x2 x, float3 y) {
    float2 result;
    result[0] = 0;
    result[0] += x[0][0] * y[0];
    result[0] += x[1][0] * y[1];
    result[0] += x[2][0] * y[2];
    result[1] = 0;
    result[1] += x[0][1] * y[0];
    result[1] += x[1][1] * y[1];
    result[1] += x[2][1] * y[2];
    return result;
}
float4 mul(float2 x, float4x2 y) {
    float4 result;
    result[0] = 0;
    result[0] += x[0] * y[0][0];
    result[0] += x[1] * y[0][1];
    result[1] = 0;
    result[1] += x[0] * y[1][0];
    result[1] += x[1] * y[1][1];
    result[2] = 0;
    result[2] += x[0] * y[2][0];
    result[2] += x[1] * y[2][1];
    result[3] = 0;
    result[3] += x[0] * y[3][0];
    result[3] += x[1] * y[3][1];
    return result;
}
float2 mul(float4x2 x, float4 y) {
    float2 result;
    result[0] = 0;
    result[0] += x[0][0] * y[0];
    result[0] += x[1][0] * y[1];
    result[0] += x[2][0] * y[2];
    result[0] += x[3][0] * y[3];
    result[1] = 0;
    result[1] += x[0][1] * y[0];
    result[1] += x[1][1] * y[1];
    result[1] += x[2][1] * y[2];
    result[1] += x[3][1] * y[3];
    return result;
}
float2 mul(float3 x, float2x3 y) {
    float2 result;
    result[0] = 0;
    result[0] += x[0] * y[0][0];
    result[0] += x[1] * y[0][1];
    result[0] += x[2] * y[0][2];
    result[1] = 0;
    result[1] += x[0] * y[1][0];
    result[1] += x[1] * y[1][1];
    result[1] += x[2] * y[1][2];
    return result;
}
float3 mul(float2x3 x, float2 y) {
    float3 result;
    result[0] = 0;
    result[0] += x[0][0] * y[0];
    result[0] += x[1][0] * y[1];
    result[1] = 0;
    result[1] += x[0][1] * y[0];
    result[1] += x[1][1] * y[1];
    result[2] = 0;
    result[2] += x[0][2] * y[0];
    result[2] += x[1][2] * 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[0][1];
    result[0] += x[2] * y[0][2];
    result[1] = 0;
    result[1] += x[0] * y[1][0];
    result[1] += x[1] * y[1][1];
    result[1] += x[2] * y[1][2];
    result[2] = 0;
    result[2] += x[0] * y[2][0];
    result[2] += x[1] * y[2][1];
    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[1][0] * y[1];
    result[0] += x[2][0] * y[2];
    result[1] = 0;
    result[1] += x[0][1] * y[0];
    result[1] += x[1][1] * y[1];
    result[1] += x[2][1] * y[2];
    result[2] = 0;
    result[2] += x[0][2] * y[0];
    result[2] += x[1][2] * y[1];
    result[2] += x[2][2] * y[2];
    return result;
}
float4 mul(float3 x, float4x3 y) {
    float4 result;
    result[0] = 0;
    result[0] += x[0] * y[0][0];
    result[0] += x[1] * y[0][1];
    result[0] += x[2] * y[0][2];
    result[1] = 0;
    result[1] += x[0] * y[1][0];
    result[1] += x[1] * y[1][1];
    result[1] += x[2] * y[1][2];
    result[2] = 0;
    result[2] += x[0] * y[2][0];
    result[2] += x[1] * y[2][1];
    result[2] += x[2] * y[2][2];
    result[3] = 0;
    result[3] += x[0] * y[3][0];
    result[3] += x[1] * y[3][1];
    result[3] += x[2] * y[3][2];
    return result;
}
float3 mul(float4x3 x, float4 y) {
    float3 result;
    result[0] = 0;
    result[0] += x[0][0] * y[0];
    result[0] += x[1][0] * y[1];
    result[0] += x[2][0] * y[2];
    result[0] += x[3][0] * y[3];
    result[1] = 0;
    result[1] += x[0][1] * y[0];
    result[1] += x[1][1] * y[1];
    result[1] += x[2][1] * y[2];
    result[1] += x[3][1] * y[3];
    result[2] = 0;
    result[2] += x[0][2] * y[0];
    result[2] += x[1][2] * y[1];
    result[2] += x[2][2] * y[2];
    result[2] += x[3][2] * y[3];
    return result;
}
float2 mul(float4 x, float2x4 y) {
    float2 result;
    result[0] = 0;
    result[0] += x[0] * y[0][0];
    result[0] += x[1] * y[0][1];
    result[0] += x[2] * y[0][2];
    result[0] += x[3] * y[0][3];
    result[1] = 0;
    result[1] += x[0] * y[1][0];
    result[1] += x[1] * y[1][1];
    result[1] += x[2] * y[1][2];
    result[1] += x[3] * y[1][3];
    return result;
}
float4 mul(float2x4 x, float2 y) {
    float4 result;
    result[0] = 0;
    result[0] += x[0][0] * y[0];
    result[0] += x[1][0] * y[1];
    result[1] = 0;
    result[1] += x[0][1] * y[0];
    result[1] += x[1][1] * y[1];
    result[2] = 0;
    result[2] += x[0][2] * y[0];
    result[2] += x[1][2] * y[1];
    result[3] = 0;
    result[3] += x[0][3] * y[0];
    result[3] += x[1][3] * y[1];
    return result;
}
float3 mul(float4 x, float3x4 y) {
    float3 result;
    result[0] = 0;
    result[0] += x[0] * y[0][0];
    result[0] += x[1] * y[0][1];
    result[0] += x[2] * y[0][2];
    result[0] += x[3] * y[0][3];
    result[1] = 0;
    result[1] += x[0] * y[1][0];
    result[1] += x[1] * y[1][1];
    result[1] += x[2] * y[1][2];
    result[1] += x[3] * y[1][3];
    result[2] = 0;
    result[2] += x[0] * y[2][0];
    result[2] += x[1] * y[2][1];
    result[2] += x[2] * y[2][2];
    result[2] += x[3] * y[2][3];
    return result;
}
float4 mul(float3x4 x, float3 y) {
    float4 result;
    result[0] = 0;
    result[0] += x[0][0] * y[0];
    result[0] += x[1][0] * y[1];
    result[0] += x[2][0] * y[2];
    result[1] = 0;
    result[1] += x[0][1] * y[0];
    result[1] += x[1][1] * y[1];
    result[1] += x[2][1] * y[2];
    result[2] = 0;
    result[2] += x[0][2] * y[0];
    result[2] += x[1][2] * y[1];
    result[2] += x[2][2] * y[2];
    result[3] = 0;
    result[3] += x[0][3] * y[0];
    result[3] += x[1][3] * y[1];
    result[3] += x[2][3] * 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[0][1];
    result[0] += x[2] * y[0][2];
    result[0] += x[3] * y[0][3];
    result[1] = 0;
    result[1] += x[0] * y[1][0];
    result[1] += x[1] * y[1][1];
    result[1] += x[2] * y[1][2];
    result[1] += x[3] * y[1][3];
    result[2] = 0;
    result[2] += x[0] * y[2][0];
    result[2] += x[1] * y[2][1];
    result[2] += x[2] * y[2][2];
    result[2] += x[3] * y[2][3];
    result[3] = 0;
    result[3] += x[0] * y[3][0];
    result[3] += x[1] * y[3][1];
    result[3] += x[2] * y[3][2];
    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[1][0] * y[1];
    result[0] += x[2][0] * y[2];
    result[0] += x[3][0] * y[3];
    result[1] = 0;
    result[1] += x[0][1] * y[0];
    result[1] += x[1][1] * y[1];
    result[1] += x[2][1] * y[2];
    result[1] += x[3][1] * y[3];
    result[2] = 0;
    result[2] += x[0][2] * y[0];
    result[2] += x[1][2] * y[1];
    result[2] += x[2][2] * y[2];
    result[2] += x[3][2] * y[3];
    result[3] = 0;
    result[3] += x[0][3] * y[0];
    result[3] += x[1][3] * y[1];
    result[3] += x[2][3] * 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[1][0] * y[0][1];
    result[1][0] = 0;
    result[1][0] += x[0][0] * y[1][0];
    result[1][0] += x[1][0] * y[1][1];
    result[0][1] = 0;
    result[0][1] += x[0][1] * y[0][0];
    result[0][1] += x[1][1] * y[0][1];
    result[1][1] = 0;
    result[1][1] += x[0][1] * y[1][0];
    result[1][1] += x[1][1] * y[1][1];
    return result;
}
float3x2 mul(float2x2 x, float3x2 y) {
    float3x2 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[1][0] * y[0][1];
    result[1][0] = 0;
    result[1][0] += x[0][0] * y[1][0];
    result[1][0] += x[1][0] * y[1][1];
    result[2][0] = 0;
    result[2][0] += x[0][0] * y[2][0];
    result[2][0] += x[1][0] * y[2][1];
    result[0][1] = 0;
    result[0][1] += x[0][1] * y[0][0];
    result[0][1] += x[1][1] * y[0][1];
    result[1][1] = 0;
    result[1][1] += x[0][1] * y[1][0];
    result[1][1] += x[1][1] * y[1][1];
    result[2][1] = 0;
    result[2][1] += x[0][1] * y[2][0];
    result[2][1] += x[1][1] * y[2][1];
    return result;
}
float4x2 mul(float2x2 x, float4x2 y) {
    float4x2 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[1][0] * y[0][1];
    result[1][0] = 0;
    result[1][0] += x[0][0] * y[1][0];
    result[1][0] += x[1][0] * y[1][1];
    result[2][0] = 0;
    result[2][0] += x[0][0] * y[2][0];
    result[2][0] += x[1][0] * y[2][1];
    result[3][0] = 0;
    result[3][0] += x[0][0] * y[3][0];
    result[3][0] += x[1][0] * y[3][1];
    result[0][1] = 0;
    result[0][1] += x[0][1] * y[0][0];
    result[0][1] += x[1][1] * y[0][1];
    result[1][1] = 0;
    result[1][1] += x[0][1] * y[1][0];
    result[1][1] += x[1][1] * y[1][1];
    result[2][1] = 0;
    result[2][1] += x[0][1] * y[2][0];
    result[2][1] += x[1][1] * y[2][1];
    result[3][1] = 0;
    result[3][1] += x[0][1] * y[3][0];
    result[3][1] += x[1][1] * y[3][1];
    return result;
}
float2x2 mul(float3x2 x, float2x3 y) {
    float2x2 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[1][0] * y[0][1];
    result[0][0] += x[2][0] * y[0][2];
    result[1][0] = 0;
    result[1][0] += x[0][0] * y[1][0];
    result[1][0] += x[1][0] * y[1][1];
    result[1][0] += x[2][0] * y[1][2];
    result[0][1] = 0;
    result[0][1] += x[0][1] * y[0][0];
    result[0][1] += x[1][1] * y[0][1];
    result[0][1] += x[2][1] * y[0][2];
    result[1][1] = 0;
    result[1][1] += x[0][1] * y[1][0];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[2][1] * y[1][2];
    return result;
}
float3x2 mul(float3x2 x, float3x3 y) {
    float3x2 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[1][0] * y[0][1];
    result[0][0] += x[2][0] * y[0][2];
    result[1][0] = 0;
    result[1][0] += x[0][0] * y[1][0];
    result[1][0] += x[1][0] * y[1][1];
    result[1][0] += x[2][0] * y[1][2];
    result[2][0] = 0;
    result[2][0] += x[0][0] * y[2][0];
    result[2][0] += x[1][0] * y[2][1];
    result[2][0] += x[2][0] * y[2][2];
    result[0][1] = 0;
    result[0][1] += x[0][1] * y[0][0];
    result[0][1] += x[1][1] * y[0][1];
    result[0][1] += x[2][1] * y[0][2];
    result[1][1] = 0;
    result[1][1] += x[0][1] * y[1][0];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[2][1] * y[1][2];
    result[2][1] = 0;
    result[2][1] += x[0][1] * y[2][0];
    result[2][1] += x[1][1] * y[2][1];
    result[2][1] += x[2][1] * y[2][2];
    return result;
}
float4x2 mul(float3x2 x, float4x3 y) {
    float4x2 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[1][0] * y[0][1];
    result[0][0] += x[2][0] * y[0][2];
    result[1][0] = 0;
    result[1][0] += x[0][0] * y[1][0];
    result[1][0] += x[1][0] * y[1][1];
    result[1][0] += x[2][0] * y[1][2];
    result[2][0] = 0;
    result[2][0] += x[0][0] * y[2][0];
    result[2][0] += x[1][0] * y[2][1];
    result[2][0] += x[2][0] * y[2][2];
    result[3][0] = 0;
    result[3][0] += x[0][0] * y[3][0];
    result[3][0] += x[1][0] * y[3][1];
    result[3][0] += x[2][0] * y[3][2];
    result[0][1] = 0;
    result[0][1] += x[0][1] * y[0][0];
    result[0][1] += x[1][1] * y[0][1];
    result[0][1] += x[2][1] * y[0][2];
    result[1][1] = 0;
    result[1][1] += x[0][1] * y[1][0];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[2][1] * y[1][2];
    result[2][1] = 0;
    result[2][1] += x[0][1] * y[2][0];
    result[2][1] += x[1][1] * y[2][1];
    result[2][1] += x[2][1] * y[2][2];
    result[3][1] = 0;
    result[3][1] += x[0][1] * y[3][0];
    result[3][1] += x[1][1] * y[3][1];
    result[3][1] += x[2][1] * y[3][2];
    return result;
}
float2x2 mul(float4x2 x, float2x4 y) {
    float2x2 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[1][0] * y[0][1];
    result[0][0] += x[2][0] * y[0][2];
    result[0][0] += x[3][0] * y[0][3];
    result[1][0] = 0;
    result[1][0] += x[0][0] * y[1][0];
    result[1][0] += x[1][0] * y[1][1];
    result[1][0] += x[2][0] * y[1][2];
    result[1][0] += x[3][0] * y[1][3];
    result[0][1] = 0;
    result[0][1] += x[0][1] * y[0][0];
    result[0][1] += x[1][1] * y[0][1];
    result[0][1] += x[2][1] * y[0][2];
    result[0][1] += x[3][1] * y[0][3];
    result[1][1] = 0;
    result[1][1] += x[0][1] * y[1][0];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[2][1] * y[1][2];
    result[1][1] += x[3][1] * y[1][3];
    return result;
}
float3x2 mul(float4x2 x, float3x4 y) {
    float3x2 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[1][0] * y[0][1];
    result[0][0] += x[2][0] * y[0][2];
    result[0][0] += x[3][0] * y[0][3];
    result[1][0] = 0;
    result[1][0] += x[0][0] * y[1][0];
    result[1][0] += x[1][0] * y[1][1];
    result[1][0] += x[2][0] * y[1][2];
    result[1][0] += x[3][0] * y[1][3];
    result[2][0] = 0;
    result[2][0] += x[0][0] * y[2][0];
    result[2][0] += x[1][0] * y[2][1];
    result[2][0] += x[2][0] * y[2][2];
    result[2][0] += x[3][0] * y[2][3];
    result[0][1] = 0;
    result[0][1] += x[0][1] * y[0][0];
    result[0][1] += x[1][1] * y[0][1];
    result[0][1] += x[2][1] * y[0][2];
    result[0][1] += x[3][1] * y[0][3];
    result[1][1] = 0;
    result[1][1] += x[0][1] * y[1][0];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[2][1] * y[1][2];
    result[1][1] += x[3][1] * y[1][3];
    result[2][1] = 0;
    result[2][1] += x[0][1] * y[2][0];
    result[2][1] += x[1][1] * y[2][1];
    result[2][1] += x[2][1] * y[2][2];
    result[2][1] += x[3][1] * y[2][3];
    return result;
}
float4x2 mul(float4x2 x, float4x4 y) {
    float4x2 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[1][0] * y[0][1];
    result[0][0] += x[2][0] * y[0][2];
    result[0][0] += x[3][0] * y[0][3];
    result[1][0] = 0;
    result[1][0] += x[0][0] * y[1][0];
    result[1][0] += x[1][0] * y[1][1];
    result[1][0] += x[2][0] * y[1][2];
    result[1][0] += x[3][0] * y[1][3];
    result[2][0] = 0;
    result[2][0] += x[0][0] * y[2][0];
    result[2][0] += x[1][0] * y[2][1];
    result[2][0] += x[2][0] * y[2][2];
    result[2][0] += x[3][0] * y[2][3];
    result[3][0] = 0;
    result[3][0] += x[0][0] * y[3][0];
    result[3][0] += x[1][0] * y[3][1];
    result[3][0] += x[2][0] * y[3][2];
    result[3][0] += x[3][0] * y[3][3];
    result[0][1] = 0;
    result[0][1] += x[0][1] * y[0][0];
    result[0][1] += x[1][1] * y[0][1];
    result[0][1] += x[2][1] * y[0][2];
    result[0][1] += x[3][1] * y[0][3];
    result[1][1] = 0;
    result[1][1] += x[0][1] * y[1][0];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[2][1] * y[1][2];
    result[1][1] += x[3][1] * y[1][3];
    result[2][1] = 0;
    result[2][1] += x[0][1] * y[2][0];
    result[2][1] += x[1][1] * y[2][1];
    result[2][1] += x[2][1] * y[2][2];
    result[2][1] += x[3][1] * y[2][3];
    result[3][1] = 0;
    result[3][1] += x[0][1] * y[3][0];
    result[3][1] += x[1][1] * y[3][1];
    result[3][1] += x[2][1] * y[3][2];
    result[3][1] += x[3][1] * y[3][3];
    return result;
}
float2x3 mul(float2x3 x, float2x2 y) {
    float2x3 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[1][0] * y[0][1];
    result[1][0] = 0;
    result[1][0] += x[0][0] * y[1][0];
    result[1][0] += x[1][0] * y[1][1];
    result[0][1] = 0;
    result[0][1] += x[0][1] * y[0][0];
    result[0][1] += x[1][1] * y[0][1];
    result[1][1] = 0;
    result[1][1] += x[0][1] * y[1][0];
    result[1][1] += x[1][1] * y[1][1];
    result[0][2] = 0;
    result[0][2] += x[0][2] * y[0][0];
    result[0][2] += x[1][2] * y[0][1];
    result[1][2] = 0;
    result[1][2] += x[0][2] * y[1][0];
    result[1][2] += x[1][2] * y[1][1];
    return result;
}
float3x3 mul(float2x3 x, float3x2 y) {
    float3x3 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[1][0] * y[0][1];
    result[1][0] = 0;
    result[1][0] += x[0][0] * y[1][0];
    result[1][0] += x[1][0] * y[1][1];
    result[2][0] = 0;
    result[2][0] += x[0][0] * y[2][0];
    result[2][0] += x[1][0] * y[2][1];
    result[0][1] = 0;
    result[0][1] += x[0][1] * y[0][0];
    result[0][1] += x[1][1] * y[0][1];
    result[1][1] = 0;
    result[1][1] += x[0][1] * y[1][0];
    result[1][1] += x[1][1] * y[1][1];
    result[2][1] = 0;
    result[2][1] += x[0][1] * y[2][0];
    result[2][1] += x[1][1] * y[2][1];
    result[0][2] = 0;
    result[0][2] += x[0][2] * y[0][0];
    result[0][2] += x[1][2] * y[0][1];
    result[1][2] = 0;
    result[1][2] += x[0][2] * y[1][0];
    result[1][2] += x[1][2] * y[1][1];
    result[2][2] = 0;
    result[2][2] += x[0][2] * y[2][0];
    result[2][2] += x[1][2] * y[2][1];
    return result;
}
float4x3 mul(float2x3 x, float4x2 y) {
    float4x3 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[1][0] * y[0][1];
    result[1][0] = 0;
    result[1][0] += x[0][0] * y[1][0];
    result[1][0] += x[1][0] * y[1][1];
    result[2][0] = 0;
    result[2][0] += x[0][0] * y[2][0];
    result[2][0] += x[1][0] * y[2][1];
    result[3][0] = 0;
    result[3][0] += x[0][0] * y[3][0];
    result[3][0] += x[1][0] * y[3][1];
    result[0][1] = 0;
    result[0][1] += x[0][1] * y[0][0];
    result[0][1] += x[1][1] * y[0][1];
    result[1][1] = 0;
    result[1][1] += x[0][1] * y[1][0];
    result[1][1] += x[1][1] * y[1][1];
    result[2][1] = 0;
    result[2][1] += x[0][1] * y[2][0];
    result[2][1] += x[1][1] * y[2][1];
    result[3][1] = 0;
    result[3][1] += x[0][1] * y[3][0];
    result[3][1] += x[1][1] * y[3][1];
    result[0][2] = 0;
    result[0][2] += x[0][2] * y[0][0];
    result[0][2] += x[1][2] * y[0][1];
    result[1][2] = 0;
    result[1][2] += x[0][2] * y[1][0];
    result[1][2] += x[1][2] * y[1][1];
    result[2][2] = 0;
    result[2][2] += x[0][2] * y[2][0];
    result[2][2] += x[1][2] * y[2][1];
    result[3][2] = 0;
    result[3][2] += x[0][2] * y[3][0];
    result[3][2] += x[1][2] * y[3][1];
    return result;
}
float2x3 mul(float3x3 x, float2x3 y) {
    float2x3 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[1][0] * y[0][1];
    result[0][0] += x[2][0] * y[0][2];
    result[1][0] = 0;
    result[1][0] += x[0][0] * y[1][0];
    result[1][0] += x[1][0] * y[1][1];
    result[1][0] += x[2][0] * y[1][2];
    result[0][1] = 0;
    result[0][1] += x[0][1] * y[0][0];
    result[0][1] += x[1][1] * y[0][1];
    result[0][1] += x[2][1] * y[0][2];
    result[1][1] = 0;
    result[1][1] += x[0][1] * y[1][0];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[2][1] * y[1][2];
    result[0][2] = 0;
    result[0][2] += x[0][2] * y[0][0];
    result[0][2] += x[1][2] * y[0][1];
    result[0][2] += x[2][2] * y[0][2];
    result[1][2] = 0;
    result[1][2] += x[0][2] * y[1][0];
    result[1][2] += x[1][2] * y[1][1];
    result[1][2] += x[2][2] * y[1][2];
    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[1][0] * y[0][1];
    result[0][0] += x[2][0] * y[0][2];
    result[1][0] = 0;
    result[1][0] += x[0][0] * y[1][0];
    result[1][0] += x[1][0] * y[1][1];
    result[1][0] += x[2][0] * y[1][2];
    result[2][0] = 0;
    result[2][0] += x[0][0] * y[2][0];
    result[2][0] += x[1][0] * y[2][1];
    result[2][0] += x[2][0] * y[2][2];
    result[0][1] = 0;
    result[0][1] += x[0][1] * y[0][0];
    result[0][1] += x[1][1] * y[0][1];
    result[0][1] += x[2][1] * y[0][2];
    result[1][1] = 0;
    result[1][1] += x[0][1] * y[1][0];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[2][1] * y[1][2];
    result[2][1] = 0;
    result[2][1] += x[0][1] * y[2][0];
    result[2][1] += x[1][1] * y[2][1];
    result[2][1] += x[2][1] * y[2][2];
    result[0][2] = 0;
    result[0][2] += x[0][2] * y[0][0];
    result[0][2] += x[1][2] * y[0][1];
    result[0][2] += x[2][2] * y[0][2];
    result[1][2] = 0;
    result[1][2] += x[0][2] * y[1][0];
    result[1][2] += x[1][2] * y[1][1];
    result[1][2] += x[2][2] * y[1][2];
    result[2][2] = 0;
    result[2][2] += x[0][2] * y[2][0];
    result[2][2] += x[1][2] * y[2][1];
    result[2][2] += x[2][2] * y[2][2];
    return result;
}
float4x3 mul(float3x3 x, float4x3 y) {
    float4x3 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[1][0] * y[0][1];
    result[0][0] += x[2][0] * y[0][2];
    result[1][0] = 0;
    result[1][0] += x[0][0] * y[1][0];
    result[1][0] += x[1][0] * y[1][1];
    result[1][0] += x[2][0] * y[1][2];
    result[2][0] = 0;
    result[2][0] += x[0][0] * y[2][0];
    result[2][0] += x[1][0] * y[2][1];
    result[2][0] += x[2][0] * y[2][2];
    result[3][0] = 0;
    result[3][0] += x[0][0] * y[3][0];
    result[3][0] += x[1][0] * y[3][1];
    result[3][0] += x[2][0] * y[3][2];
    result[0][1] = 0;
    result[0][1] += x[0][1] * y[0][0];
    result[0][1] += x[1][1] * y[0][1];
    result[0][1] += x[2][1] * y[0][2];
    result[1][1] = 0;
    result[1][1] += x[0][1] * y[1][0];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[2][1] * y[1][2];
    result[2][1] = 0;
    result[2][1] += x[0][1] * y[2][0];
    result[2][1] += x[1][1] * y[2][1];
    result[2][1] += x[2][1] * y[2][2];
    result[3][1] = 0;
    result[3][1] += x[0][1] * y[3][0];
    result[3][1] += x[1][1] * y[3][1];
    result[3][1] += x[2][1] * y[3][2];
    result[0][2] = 0;
    result[0][2] += x[0][2] * y[0][0];
    result[0][2] += x[1][2] * y[0][1];
    result[0][2] += x[2][2] * y[0][2];
    result[1][2] = 0;
    result[1][2] += x[0][2] * y[1][0];
    result[1][2] += x[1][2] * y[1][1];
    result[1][2] += x[2][2] * y[1][2];
    result[2][2] = 0;
    result[2][2] += x[0][2] * y[2][0];
    result[2][2] += x[1][2] * y[2][1];
    result[2][2] += x[2][2] * y[2][2];
    result[3][2] = 0;
    result[3][2] += x[0][2] * y[3][0];
    result[3][2] += x[1][2] * y[3][1];
    result[3][2] += x[2][2] * y[3][2];
    return result;
}
float2x3 mul(float4x3 x, float2x4 y) {
    float2x3 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[1][0] * y[0][1];
    result[0][0] += x[2][0] * y[0][2];
    result[0][0] += x[3][0] * y[0][3];
    result[1][0] = 0;
    result[1][0] += x[0][0] * y[1][0];
    result[1][0] += x[1][0] * y[1][1];
    result[1][0] += x[2][0] * y[1][2];
    result[1][0] += x[3][0] * y[1][3];
    result[0][1] = 0;
    result[0][1] += x[0][1] * y[0][0];
    result[0][1] += x[1][1] * y[0][1];
    result[0][1] += x[2][1] * y[0][2];
    result[0][1] += x[3][1] * y[0][3];
    result[1][1] = 0;
    result[1][1] += x[0][1] * y[1][0];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[2][1] * y[1][2];
    result[1][1] += x[3][1] * y[1][3];
    result[0][2] = 0;
    result[0][2] += x[0][2] * y[0][0];
    result[0][2] += x[1][2] * y[0][1];
    result[0][2] += x[2][2] * y[0][2];
    result[0][2] += x[3][2] * y[0][3];
    result[1][2] = 0;
    result[1][2] += x[0][2] * y[1][0];
    result[1][2] += x[1][2] * y[1][1];
    result[1][2] += x[2][2] * y[1][2];
    result[1][2] += x[3][2] * y[1][3];
    return result;
}
float3x3 mul(float4x3 x, float3x4 y) {
    float3x3 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[1][0] * y[0][1];
    result[0][0] += x[2][0] * y[0][2];
    result[0][0] += x[3][0] * y[0][3];
    result[1][0] = 0;
    result[1][0] += x[0][0] * y[1][0];
    result[1][0] += x[1][0] * y[1][1];
    result[1][0] += x[2][0] * y[1][2];
    result[1][0] += x[3][0] * y[1][3];
    result[2][0] = 0;
    result[2][0] += x[0][0] * y[2][0];
    result[2][0] += x[1][0] * y[2][1];
    result[2][0] += x[2][0] * y[2][2];
    result[2][0] += x[3][0] * y[2][3];
    result[0][1] = 0;
    result[0][1] += x[0][1] * y[0][0];
    result[0][1] += x[1][1] * y[0][1];
    result[0][1] += x[2][1] * y[0][2];
    result[0][1] += x[3][1] * y[0][3];
    result[1][1] = 0;
    result[1][1] += x[0][1] * y[1][0];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[2][1] * y[1][2];
    result[1][1] += x[3][1] * y[1][3];
    result[2][1] = 0;
    result[2][1] += x[0][1] * y[2][0];
    result[2][1] += x[1][1] * y[2][1];
    result[2][1] += x[2][1] * y[2][2];
    result[2][1] += x[3][1] * y[2][3];
    result[0][2] = 0;
    result[0][2] += x[0][2] * y[0][0];
    result[0][2] += x[1][2] * y[0][1];
    result[0][2] += x[2][2] * y[0][2];
    result[0][2] += x[3][2] * y[0][3];
    result[1][2] = 0;
    result[1][2] += x[0][2] * y[1][0];
    result[1][2] += x[1][2] * y[1][1];
    result[1][2] += x[2][2] * y[1][2];
    result[1][2] += x[3][2] * y[1][3];
    result[2][2] = 0;
    result[2][2] += x[0][2] * y[2][0];
    result[2][2] += x[1][2] * y[2][1];
    result[2][2] += x[2][2] * y[2][2];
    result[2][2] += x[3][2] * y[2][3];
    return result;
}
float4x3 mul(float4x3 x, float4x4 y) {
    float4x3 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[1][0] * y[0][1];
    result[0][0] += x[2][0] * y[0][2];
    result[0][0] += x[3][0] * y[0][3];
    result[1][0] = 0;
    result[1][0] += x[0][0] * y[1][0];
    result[1][0] += x[1][0] * y[1][1];
    result[1][0] += x[2][0] * y[1][2];
    result[1][0] += x[3][0] * y[1][3];
    result[2][0] = 0;
    result[2][0] += x[0][0] * y[2][0];
    result[2][0] += x[1][0] * y[2][1];
    result[2][0] += x[2][0] * y[2][2];
    result[2][0] += x[3][0] * y[2][3];
    result[3][0] = 0;
    result[3][0] += x[0][0] * y[3][0];
    result[3][0] += x[1][0] * y[3][1];
    result[3][0] += x[2][0] * y[3][2];
    result[3][0] += x[3][0] * y[3][3];
    result[0][1] = 0;
    result[0][1] += x[0][1] * y[0][0];
    result[0][1] += x[1][1] * y[0][1];
    result[0][1] += x[2][1] * y[0][2];
    result[0][1] += x[3][1] * y[0][3];
    result[1][1] = 0;
    result[1][1] += x[0][1] * y[1][0];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[2][1] * y[1][2];
    result[1][1] += x[3][1] * y[1][3];
    result[2][1] = 0;
    result[2][1] += x[0][1] * y[2][0];
    result[2][1] += x[1][1] * y[2][1];
    result[2][1] += x[2][1] * y[2][2];
    result[2][1] += x[3][1] * y[2][3];
    result[3][1] = 0;
    result[3][1] += x[0][1] * y[3][0];
    result[3][1] += x[1][1] * y[3][1];
    result[3][1] += x[2][1] * y[3][2];
    result[3][1] += x[3][1] * y[3][3];
    result[0][2] = 0;
    result[0][2] += x[0][2] * y[0][0];
    result[0][2] += x[1][2] * y[0][1];
    result[0][2] += x[2][2] * y[0][2];
    result[0][2] += x[3][2] * y[0][3];
    result[1][2] = 0;
    result[1][2] += x[0][2] * y[1][0];
    result[1][2] += x[1][2] * y[1][1];
    result[1][2] += x[2][2] * y[1][2];
    result[1][2] += x[3][2] * y[1][3];
    result[2][2] = 0;
    result[2][2] += x[0][2] * y[2][0];
    result[2][2] += x[1][2] * y[2][1];
    result[2][2] += x[2][2] * y[2][2];
    result[2][2] += x[3][2] * y[2][3];
    result[3][2] = 0;
    result[3][2] += x[0][2] * y[3][0];
    result[3][2] += x[1][2] * y[3][1];
    result[3][2] += x[2][2] * y[3][2];
    result[3][2] += x[3][2] * y[3][3];
    return result;
}
float2x4 mul(float2x4 x, float2x2 y) {
    float2x4 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[1][0] * y[0][1];
    result[1][0] = 0;
    result[1][0] += x[0][0] * y[1][0];
    result[1][0] += x[1][0] * y[1][1];
    result[0][1] = 0;
    result[0][1] += x[0][1] * y[0][0];
    result[0][1] += x[1][1] * y[0][1];
    result[1][1] = 0;
    result[1][1] += x[0][1] * y[1][0];
    result[1][1] += x[1][1] * y[1][1];
    result[0][2] = 0;
    result[0][2] += x[0][2] * y[0][0];
    result[0][2] += x[1][2] * y[0][1];
    result[1][2] = 0;
    result[1][2] += x[0][2] * y[1][0];
    result[1][2] += x[1][2] * y[1][1];
    result[0][3] = 0;
    result[0][3] += x[0][3] * y[0][0];
    result[0][3] += x[1][3] * y[0][1];
    result[1][3] = 0;
    result[1][3] += x[0][3] * y[1][0];
    result[1][3] += x[1][3] * y[1][1];
    return result;
}
float3x4 mul(float2x4 x, float3x2 y) {
    float3x4 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[1][0] * y[0][1];
    result[1][0] = 0;
    result[1][0] += x[0][0] * y[1][0];
    result[1][0] += x[1][0] * y[1][1];
    result[2][0] = 0;
    result[2][0] += x[0][0] * y[2][0];
    result[2][0] += x[1][0] * y[2][1];
    result[0][1] = 0;
    result[0][1] += x[0][1] * y[0][0];
    result[0][1] += x[1][1] * y[0][1];
    result[1][1] = 0;
    result[1][1] += x[0][1] * y[1][0];
    result[1][1] += x[1][1] * y[1][1];
    result[2][1] = 0;
    result[2][1] += x[0][1] * y[2][0];
    result[2][1] += x[1][1] * y[2][1];
    result[0][2] = 0;
    result[0][2] += x[0][2] * y[0][0];
    result[0][2] += x[1][2] * y[0][1];
    result[1][2] = 0;
    result[1][2] += x[0][2] * y[1][0];
    result[1][2] += x[1][2] * y[1][1];
    result[2][2] = 0;
    result[2][2] += x[0][2] * y[2][0];
    result[2][2] += x[1][2] * y[2][1];
    result[0][3] = 0;
    result[0][3] += x[0][3] * y[0][0];
    result[0][3] += x[1][3] * y[0][1];
    result[1][3] = 0;
    result[1][3] += x[0][3] * y[1][0];
    result[1][3] += x[1][3] * y[1][1];
    result[2][3] = 0;
    result[2][3] += x[0][3] * y[2][0];
    result[2][3] += x[1][3] * y[2][1];
    return result;
}
float4x4 mul(float2x4 x, float4x2 y) {
    float4x4 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[1][0] * y[0][1];
    result[1][0] = 0;
    result[1][0] += x[0][0] * y[1][0];
    result[1][0] += x[1][0] * y[1][1];
    result[2][0] = 0;
    result[2][0] += x[0][0] * y[2][0];
    result[2][0] += x[1][0] * y[2][1];
    result[3][0] = 0;
    result[3][0] += x[0][0] * y[3][0];
    result[3][0] += x[1][0] * y[3][1];
    result[0][1] = 0;
    result[0][1] += x[0][1] * y[0][0];
    result[0][1] += x[1][1] * y[0][1];
    result[1][1] = 0;
    result[1][1] += x[0][1] * y[1][0];
    result[1][1] += x[1][1] * y[1][1];
    result[2][1] = 0;
    result[2][1] += x[0][1] * y[2][0];
    result[2][1] += x[1][1] * y[2][1];
    result[3][1] = 0;
    result[3][1] += x[0][1] * y[3][0];
    result[3][1] += x[1][1] * y[3][1];
    result[0][2] = 0;
    result[0][2] += x[0][2] * y[0][0];
    result[0][2] += x[1][2] * y[0][1];
    result[1][2] = 0;
    result[1][2] += x[0][2] * y[1][0];
    result[1][2] += x[1][2] * y[1][1];
    result[2][2] = 0;
    result[2][2] += x[0][2] * y[2][0];
    result[2][2] += x[1][2] * y[2][1];
    result[3][2] = 0;
    result[3][2] += x[0][2] * y[3][0];
    result[3][2] += x[1][2] * y[3][1];
    result[0][3] = 0;
    result[0][3] += x[0][3] * y[0][0];
    result[0][3] += x[1][3] * y[0][1];
    result[1][3] = 0;
    result[1][3] += x[0][3] * y[1][0];
    result[1][3] += x[1][3] * y[1][1];
    result[2][3] = 0;
    result[2][3] += x[0][3] * y[2][0];
    result[2][3] += x[1][3] * y[2][1];
    result[3][3] = 0;
    result[3][3] += x[0][3] * y[3][0];
    result[3][3] += x[1][3] * y[3][1];
    return result;
}
float2x4 mul(float3x4 x, float2x3 y) {
    float2x4 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[1][0] * y[0][1];
    result[0][0] += x[2][0] * y[0][2];
    result[1][0] = 0;
    result[1][0] += x[0][0] * y[1][0];
    result[1][0] += x[1][0] * y[1][1];
    result[1][0] += x[2][0] * y[1][2];
    result[0][1] = 0;
    result[0][1] += x[0][1] * y[0][0];
    result[0][1] += x[1][1] * y[0][1];
    result[0][1] += x[2][1] * y[0][2];
    result[1][1] = 0;
    result[1][1] += x[0][1] * y[1][0];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[2][1] * y[1][2];
    result[0][2] = 0;
    result[0][2] += x[0][2] * y[0][0];
    result[0][2] += x[1][2] * y[0][1];
    result[0][2] += x[2][2] * y[0][2];
    result[1][2] = 0;
    result[1][2] += x[0][2] * y[1][0];
    result[1][2] += x[1][2] * y[1][1];
    result[1][2] += x[2][2] * y[1][2];
    result[0][3] = 0;
    result[0][3] += x[0][3] * y[0][0];
    result[0][3] += x[1][3] * y[0][1];
    result[0][3] += x[2][3] * y[0][2];
    result[1][3] = 0;
    result[1][3] += x[0][3] * y[1][0];
    result[1][3] += x[1][3] * y[1][1];
    result[1][3] += x[2][3] * y[1][2];
    return result;
}
float3x4 mul(float3x4 x, float3x3 y) {
    float3x4 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[1][0] * y[0][1];
    result[0][0] += x[2][0] * y[0][2];
    result[1][0] = 0;
    result[1][0] += x[0][0] * y[1][0];
    result[1][0] += x[1][0] * y[1][1];
    result[1][0] += x[2][0] * y[1][2];
    result[2][0] = 0;
    result[2][0] += x[0][0] * y[2][0];
    result[2][0] += x[1][0] * y[2][1];
    result[2][0] += x[2][0] * y[2][2];
    result[0][1] = 0;
    result[0][1] += x[0][1] * y[0][0];
    result[0][1] += x[1][1] * y[0][1];
    result[0][1] += x[2][1] * y[0][2];
    result[1][1] = 0;
    result[1][1] += x[0][1] * y[1][0];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[2][1] * y[1][2];
    result[2][1] = 0;
    result[2][1] += x[0][1] * y[2][0];
    result[2][1] += x[1][1] * y[2][1];
    result[2][1] += x[2][1] * y[2][2];
    result[0][2] = 0;
    result[0][2] += x[0][2] * y[0][0];
    result[0][2] += x[1][2] * y[0][1];
    result[0][2] += x[2][2] * y[0][2];
    result[1][2] = 0;
    result[1][2] += x[0][2] * y[1][0];
    result[1][2] += x[1][2] * y[1][1];
    result[1][2] += x[2][2] * y[1][2];
    result[2][2] = 0;
    result[2][2] += x[0][2] * y[2][0];
    result[2][2] += x[1][2] * y[2][1];
    result[2][2] += x[2][2] * y[2][2];
    result[0][3] = 0;
    result[0][3] += x[0][3] * y[0][0];
    result[0][3] += x[1][3] * y[0][1];
    result[0][3] += x[2][3] * y[0][2];
    result[1][3] = 0;
    result[1][3] += x[0][3] * y[1][0];
    result[1][3] += x[1][3] * y[1][1];
    result[1][3] += x[2][3] * y[1][2];
    result[2][3] = 0;
    result[2][3] += x[0][3] * y[2][0];
    result[2][3] += x[1][3] * y[2][1];
    result[2][3] += x[2][3] * y[2][2];
    return result;
}
float4x4 mul(float3x4 x, float4x3 y) {
    float4x4 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[1][0] * y[0][1];
    result[0][0] += x[2][0] * y[0][2];
    result[1][0] = 0;
    result[1][0] += x[0][0] * y[1][0];
    result[1][0] += x[1][0] * y[1][1];
    result[1][0] += x[2][0] * y[1][2];
    result[2][0] = 0;
    result[2][0] += x[0][0] * y[2][0];
    result[2][0] += x[1][0] * y[2][1];
    result[2][0] += x[2][0] * y[2][2];
    result[3][0] = 0;
    result[3][0] += x[0][0] * y[3][0];
    result[3][0] += x[1][0] * y[3][1];
    result[3][0] += x[2][0] * y[3][2];
    result[0][1] = 0;
    result[0][1] += x[0][1] * y[0][0];
    result[0][1] += x[1][1] * y[0][1];
    result[0][1] += x[2][1] * y[0][2];
    result[1][1] = 0;
    result[1][1] += x[0][1] * y[1][0];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[2][1] * y[1][2];
    result[2][1] = 0;
    result[2][1] += x[0][1] * y[2][0];
    result[2][1] += x[1][1] * y[2][1];
    result[2][1] += x[2][1] * y[2][2];
    result[3][1] = 0;
    result[3][1] += x[0][1] * y[3][0];
    result[3][1] += x[1][1] * y[3][1];
    result[3][1] += x[2][1] * y[3][2];
    result[0][2] = 0;
    result[0][2] += x[0][2] * y[0][0];
    result[0][2] += x[1][2] * y[0][1];
    result[0][2] += x[2][2] * y[0][2];
    result[1][2] = 0;
    result[1][2] += x[0][2] * y[1][0];
    result[1][2] += x[1][2] * y[1][1];
    result[1][2] += x[2][2] * y[1][2];
    result[2][2] = 0;
    result[2][2] += x[0][2] * y[2][0];
    result[2][2] += x[1][2] * y[2][1];
    result[2][2] += x[2][2] * y[2][2];
    result[3][2] = 0;
    result[3][2] += x[0][2] * y[3][0];
    result[3][2] += x[1][2] * y[3][1];
    result[3][2] += x[2][2] * y[3][2];
    result[0][3] = 0;
    result[0][3] += x[0][3] * y[0][0];
    result[0][3] += x[1][3] * y[0][1];
    result[0][3] += x[2][3] * y[0][2];
    result[1][3] = 0;
    result[1][3] += x[0][3] * y[1][0];
    result[1][3] += x[1][3] * y[1][1];
    result[1][3] += x[2][3] * y[1][2];
    result[2][3] = 0;
    result[2][3] += x[0][3] * y[2][0];
    result[2][3] += x[1][3] * y[2][1];
    result[2][3] += x[2][3] * y[2][2];
    result[3][3] = 0;
    result[3][3] += x[0][3] * y[3][0];
    result[3][3] += x[1][3] * y[3][1];
    result[3][3] += x[2][3] * y[3][2];
    return result;
}
float2x4 mul(float4x4 x, float2x4 y) {
    float2x4 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[1][0] * y[0][1];
    result[0][0] += x[2][0] * y[0][2];
    result[0][0] += x[3][0] * y[0][3];
    result[1][0] = 0;
    result[1][0] += x[0][0] * y[1][0];
    result[1][0] += x[1][0] * y[1][1];
    result[1][0] += x[2][0] * y[1][2];
    result[1][0] += x[3][0] * y[1][3];
    result[0][1] = 0;
    result[0][1] += x[0][1] * y[0][0];
    result[0][1] += x[1][1] * y[0][1];
    result[0][1] += x[2][1] * y[0][2];
    result[0][1] += x[3][1] * y[0][3];
    result[1][1] = 0;
    result[1][1] += x[0][1] * y[1][0];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[2][1] * y[1][2];
    result[1][1] += x[3][1] * y[1][3];
    result[0][2] = 0;
    result[0][2] += x[0][2] * y[0][0];
    result[0][2] += x[1][2] * y[0][1];
    result[0][2] += x[2][2] * y[0][2];
    result[0][2] += x[3][2] * y[0][3];
    result[1][2] = 0;
    result[1][2] += x[0][2] * y[1][0];
    result[1][2] += x[1][2] * y[1][1];
    result[1][2] += x[2][2] * y[1][2];
    result[1][2] += x[3][2] * y[1][3];
    result[0][3] = 0;
    result[0][3] += x[0][3] * y[0][0];
    result[0][3] += x[1][3] * y[0][1];
    result[0][3] += x[2][3] * y[0][2];
    result[0][3] += x[3][3] * y[0][3];
    result[1][3] = 0;
    result[1][3] += x[0][3] * y[1][0];
    result[1][3] += x[1][3] * y[1][1];
    result[1][3] += x[2][3] * y[1][2];
    result[1][3] += x[3][3] * y[1][3];
    return result;
}
float3x4 mul(float4x4 x, float3x4 y) {
    float3x4 result;
    result[0][0] = 0;
    result[0][0] += x[0][0] * y[0][0];
    result[0][0] += x[1][0] * y[0][1];
    result[0][0] += x[2][0] * y[0][2];
    result[0][0] += x[3][0] * y[0][3];
    result[1][0] = 0;
    result[1][0] += x[0][0] * y[1][0];
    result[1][0] += x[1][0] * y[1][1];
    result[1][0] += x[2][0] * y[1][2];
    result[1][0] += x[3][0] * y[1][3];
    result[2][0] = 0;
    result[2][0] += x[0][0] * y[2][0];
    result[2][0] += x[1][0] * y[2][1];
    result[2][0] += x[2][0] * y[2][2];
    result[2][0] += x[3][0] * y[2][3];
    result[0][1] = 0;
    result[0][1] += x[0][1] * y[0][0];
    result[0][1] += x[1][1] * y[0][1];
    result[0][1] += x[2][1] * y[0][2];
    result[0][1] += x[3][1] * y[0][3];
    result[1][1] = 0;
    result[1][1] += x[0][1] * y[1][0];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[2][1] * y[1][2];
    result[1][1] += x[3][1] * y[1][3];
    result[2][1] = 0;
    result[2][1] += x[0][1] * y[2][0];
    result[2][1] += x[1][1] * y[2][1];
    result[2][1] += x[2][1] * y[2][2];
    result[2][1] += x[3][1] * y[2][3];
    result[0][2] = 0;
    result[0][2] += x[0][2] * y[0][0];
    result[0][2] += x[1][2] * y[0][1];
    result[0][2] += x[2][2] * y[0][2];
    result[0][2] += x[3][2] * y[0][3];
    result[1][2] = 0;
    result[1][2] += x[0][2] * y[1][0];
    result[1][2] += x[1][2] * y[1][1];
    result[1][2] += x[2][2] * y[1][2];
    result[1][2] += x[3][2] * y[1][3];
    result[2][2] = 0;
    result[2][2] += x[0][2] * y[2][0];
    result[2][2] += x[1][2] * y[2][1];
    result[2][2] += x[2][2] * y[2][2];
    result[2][2] += x[3][2] * y[2][3];
    result[0][3] = 0;
    result[0][3] += x[0][3] * y[0][0];
    result[0][3] += x[1][3] * y[0][1];
    result[0][3] += x[2][3] * y[0][2];
    result[0][3] += x[3][3] * y[0][3];
    result[1][3] = 0;
    result[1][3] += x[0][3] * y[1][0];
    result[1][3] += x[1][3] * y[1][1];
    result[1][3] += x[2][3] * y[1][2];
    result[1][3] += x[3][3] * y[1][3];
    result[2][3] = 0;
    result[2][3] += x[0][3] * y[2][0];
    result[2][3] += x[1][3] * y[2][1];
    result[2][3] += x[2][3] * y[2][2];
    result[2][3] += x[3][3] * y[2][3];
    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[1][0] * y[0][1];
    result[0][0] += x[2][0] * y[0][2];
    result[0][0] += x[3][0] * y[0][3];
    result[1][0] = 0;
    result[1][0] += x[0][0] * y[1][0];
    result[1][0] += x[1][0] * y[1][1];
    result[1][0] += x[2][0] * y[1][2];
    result[1][0] += x[3][0] * y[1][3];
    result[2][0] = 0;
    result[2][0] += x[0][0] * y[2][0];
    result[2][0] += x[1][0] * y[2][1];
    result[2][0] += x[2][0] * y[2][2];
    result[2][0] += x[3][0] * y[2][3];
    result[3][0] = 0;
    result[3][0] += x[0][0] * y[3][0];
    result[3][0] += x[1][0] * y[3][1];
    result[3][0] += x[2][0] * y[3][2];
    result[3][0] += x[3][0] * y[3][3];
    result[0][1] = 0;
    result[0][1] += x[0][1] * y[0][0];
    result[0][1] += x[1][1] * y[0][1];
    result[0][1] += x[2][1] * y[0][2];
    result[0][1] += x[3][1] * y[0][3];
    result[1][1] = 0;
    result[1][1] += x[0][1] * y[1][0];
    result[1][1] += x[1][1] * y[1][1];
    result[1][1] += x[2][1] * y[1][2];
    result[1][1] += x[3][1] * y[1][3];
    result[2][1] = 0;
    result[2][1] += x[0][1] * y[2][0];
    result[2][1] += x[1][1] * y[2][1];
    result[2][1] += x[2][1] * y[2][2];
    result[2][1] += x[3][1] * y[2][3];
    result[3][1] = 0;
    result[3][1] += x[0][1] * y[3][0];
    result[3][1] += x[1][1] * y[3][1];
    result[3][1] += x[2][1] * y[3][2];
    result[3][1] += x[3][1] * y[3][3];
    result[0][2] = 0;
    result[0][2] += x[0][2] * y[0][0];
    result[0][2] += x[1][2] * y[0][1];
    result[0][2] += x[2][2] * y[0][2];
    result[0][2] += x[3][2] * y[0][3];
    result[1][2] = 0;
    result[1][2] += x[0][2] * y[1][0];
    result[1][2] += x[1][2] * y[1][1];
    result[1][2] += x[2][2] * y[1][2];
    result[1][2] += x[3][2] * y[1][3];
    result[2][2] = 0;
    result[2][2] += x[0][2] * y[2][0];
    result[2][2] += x[1][2] * y[2][1];
    result[2][2] += x[2][2] * y[2][2];
    result[2][2] += x[3][2] * y[2][3];
    result[3][2] = 0;
    result[3][2] += x[0][2] * y[3][0];
    result[3][2] += x[1][2] * y[3][1];
    result[3][2] += x[2][2] * y[3][2];
    result[3][2] += x[3][2] * y[3][3];
    result[0][3] = 0;
    result[0][3] += x[0][3] * y[0][0];
    result[0][3] += x[1][3] * y[0][1];
    result[0][3] += x[2][3] * y[0][2];
    result[0][3] += x[3][3] * y[0][3];
    result[1][3] = 0;
    result[1][3] += x[0][3] * y[1][0];
    result[1][3] += x[1][3] * y[1][1];
    result[1][3] += x[2][3] * y[1][2];
    result[1][3] += x[3][3] * y[1][3];
    result[2][3] = 0;
    result[2][3] += x[0][3] * y[2][0];
    result[2][3] += x[1][3] * y[2][1];
    result[2][3] += x[2][3] * y[2][2];
    result[2][3] += x[3][3] * y[2][3];
    result[3][3] = 0;
    result[3][3] += x[0][3] * y[3][0];
    result[3][3] += x[1][3] * y[3][1];
    result[3][3] += x[2][3] * y[3][2];
    result[3][3] += x[3][3] * y[3][3];
    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[1][0] = radians(x[1][0]);
    result[0][1] = radians(x[0][1]);
    result[1][1] = radians(x[1][1]);
    return result;
}
float3x2 radians(float3x2 x) {
    float3x2 result;
    result[0][0] = radians(x[0][0]);
    result[1][0] = radians(x[1][0]);
    result[2][0] = radians(x[2][0]);
    result[0][1] = radians(x[0][1]);
    result[1][1] = radians(x[1][1]);
    result[2][1] = radians(x[2][1]);
    return result;
}
float4x2 radians(float4x2 x) {
    float4x2 result;
    result[0][0] = radians(x[0][0]);
    result[1][0] = radians(x[1][0]);
    result[2][0] = radians(x[2][0]);
    result[3][0] = radians(x[3][0]);
    result[0][1] = radians(x[0][1]);
    result[1][1] = radians(x[1][1]);
    result[2][1] = radians(x[2][1]);
    result[3][1] = radians(x[3][1]);
    return result;
}
float2x3 radians(float2x3 x) {
    float2x3 result;
    result[0][0] = radians(x[0][0]);
    result[1][0] = radians(x[1][0]);
    result[0][1] = radians(x[0][1]);
    result[1][1] = radians(x[1][1]);
    result[0][2] = radians(x[0][2]);
    result[1][2] = radians(x[1][2]);
    return result;
}
float3x3 radians(float3x3 x) {
    float3x3 result;
    result[0][0] = radians(x[0][0]);
    result[1][0] = radians(x[1][0]);
    result[2][0] = radians(x[2][0]);
    result[0][1] = radians(x[0][1]);
    result[1][1] = radians(x[1][1]);
    result[2][1] = radians(x[2][1]);
    result[0][2] = radians(x[0][2]);
    result[1][2] = radians(x[1][2]);
    result[2][2] = radians(x[2][2]);
    return result;
}
float4x3 radians(float4x3 x) {
    float4x3 result;
    result[0][0] = radians(x[0][0]);
    result[1][0] = radians(x[1][0]);
    result[2][0] = radians(x[2][0]);
    result[3][0] = radians(x[3][0]);
    result[0][1] = radians(x[0][1]);
    result[1][1] = radians(x[1][1]);
    result[2][1] = radians(x[2][1]);
    result[3][1] = radians(x[3][1]);
    result[0][2] = radians(x[0][2]);
    result[1][2] = radians(x[1][2]);
    result[2][2] = radians(x[2][2]);
    result[3][2] = radians(x[3][2]);
    return result;
}
float2x4 radians(float2x4 x) {
    float2x4 result;
    result[0][0] = radians(x[0][0]);
    result[1][0] = radians(x[1][0]);
    result[0][1] = radians(x[0][1]);
    result[1][1] = radians(x[1][1]);
    result[0][2] = radians(x[0][2]);
    result[1][2] = radians(x[1][2]);
    result[0][3] = radians(x[0][3]);
    result[1][3] = radians(x[1][3]);
    return result;
}
float3x4 radians(float3x4 x) {
    float3x4 result;
    result[0][0] = radians(x[0][0]);
    result[1][0] = radians(x[1][0]);
    result[2][0] = radians(x[2][0]);
    result[0][1] = radians(x[0][1]);
    result[1][1] = radians(x[1][1]);
    result[2][1] = radians(x[2][1]);
    result[0][2] = radians(x[0][2]);
    result[1][2] = radians(x[1][2]);
    result[2][2] = radians(x[2][2]);
    result[0][3] = radians(x[0][3]);
    result[1][3] = radians(x[1][3]);
    result[2][3] = radians(x[2][3]);
    return result;
}
float4x4 radians(float4x4 x) {
    float4x4 result;
    result[0][0] = radians(x[0][0]);
    result[1][0] = radians(x[1][0]);
    result[2][0] = radians(x[2][0]);
    result[3][0] = radians(x[3][0]);
    result[0][1] = radians(x[0][1]);
    result[1][1] = radians(x[1][1]);
    result[2][1] = radians(x[2][1]);
    result[3][1] = radians(x[3][1]);
    result[0][2] = radians(x[0][2]);
    result[1][2] = radians(x[1][2]);
    result[2][2] = radians(x[2][2]);
    result[3][2] = radians(x[3][2]);
    result[0][3] = radians(x[0][3]);
    result[1][3] = radians(x[1][3]);
    result[2][3] = radians(x[2][3]);
    result[3][3] = radians(x[3][3]);
    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[1][0] = ceil(x[1][0]);
    result[0][1] = ceil(x[0][1]);
    result[1][1] = ceil(x[1][1]);
    return result;
}
float3x2 ceil(float3x2 x) {
    float3x2 result;
    result[0][0] = ceil(x[0][0]);
    result[1][0] = ceil(x[1][0]);
    result[2][0] = ceil(x[2][0]);
    result[0][1] = ceil(x[0][1]);
    result[1][1] = ceil(x[1][1]);
    result[2][1] = ceil(x[2][1]);
    return result;
}
float4x2 ceil(float4x2 x) {
    float4x2 result;
    result[0][0] = ceil(x[0][0]);
    result[1][0] = ceil(x[1][0]);
    result[2][0] = ceil(x[2][0]);
    result[3][0] = ceil(x[3][0]);
    result[0][1] = ceil(x[0][1]);
    result[1][1] = ceil(x[1][1]);
    result[2][1] = ceil(x[2][1]);
    result[3][1] = ceil(x[3][1]);
    return result;
}
float2x3 ceil(float2x3 x) {
    float2x3 result;
    result[0][0] = ceil(x[0][0]);
    result[1][0] = ceil(x[1][0]);
    result[0][1] = ceil(x[0][1]);
    result[1][1] = ceil(x[1][1]);
    result[0][2] = ceil(x[0][2]);
    result[1][2] = ceil(x[1][2]);
    return result;
}
float3x3 ceil(float3x3 x) {
    float3x3 result;
    result[0][0] = ceil(x[0][0]);
    result[1][0] = ceil(x[1][0]);
    result[2][0] = ceil(x[2][0]);
    result[0][1] = ceil(x[0][1]);
    result[1][1] = ceil(x[1][1]);
    result[2][1] = ceil(x[2][1]);
    result[0][2] = ceil(x[0][2]);
    result[1][2] = ceil(x[1][2]);
    result[2][2] = ceil(x[2][2]);
    return result;
}
float4x3 ceil(float4x3 x) {
    float4x3 result;
    result[0][0] = ceil(x[0][0]);
    result[1][0] = ceil(x[1][0]);
    result[2][0] = ceil(x[2][0]);
    result[3][0] = ceil(x[3][0]);
    result[0][1] = ceil(x[0][1]);
    result[1][1] = ceil(x[1][1]);
    result[2][1] = ceil(x[2][1]);
    result[3][1] = ceil(x[3][1]);
    result[0][2] = ceil(x[0][2]);
    result[1][2] = ceil(x[1][2]);
    result[2][2] = ceil(x[2][2]);
    result[3][2] = ceil(x[3][2]);
    return result;
}
float2x4 ceil(float2x4 x) {
    float2x4 result;
    result[0][0] = ceil(x[0][0]);
    result[1][0] = ceil(x[1][0]);
    result[0][1] = ceil(x[0][1]);
    result[1][1] = ceil(x[1][1]);
    result[0][2] = ceil(x[0][2]);
    result[1][2] = ceil(x[1][2]);
    result[0][3] = ceil(x[0][3]);
    result[1][3] = ceil(x[1][3]);
    return result;
}
float3x4 ceil(float3x4 x) {
    float3x4 result;
    result[0][0] = ceil(x[0][0]);
    result[1][0] = ceil(x[1][0]);
    result[2][0] = ceil(x[2][0]);
    result[0][1] = ceil(x[0][1]);
    result[1][1] = ceil(x[1][1]);
    result[2][1] = ceil(x[2][1]);
    result[0][2] = ceil(x[0][2]);
    result[1][2] = ceil(x[1][2]);
    result[2][2] = ceil(x[2][2]);
    result[0][3] = ceil(x[0][3]);
    result[1][3] = ceil(x[1][3]);
    result[2][3] = ceil(x[2][3]);
    return result;
}
float4x4 ceil(float4x4 x) {
    float4x4 result;
    result[0][0] = ceil(x[0][0]);
    result[1][0] = ceil(x[1][0]);
    result[2][0] = ceil(x[2][0]);
    result[3][0] = ceil(x[3][0]);
    result[0][1] = ceil(x[0][1]);
    result[1][1] = ceil(x[1][1]);
    result[2][1] = ceil(x[2][1]);
    result[3][1] = ceil(x[3][1]);
    result[0][2] = ceil(x[0][2]);
    result[1][2] = ceil(x[1][2]);
    result[2][2] = ceil(x[2][2]);
    result[3][2] = ceil(x[3][2]);
    result[0][3] = ceil(x[0][3]);
    result[1][3] = ceil(x[1][3]);
    result[2][3] = ceil(x[2][3]);
    result[3][3] = ceil(x[3][3]);
    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[1][0] = asin(x[1][0]);
    result[0][1] = asin(x[0][1]);
    result[1][1] = asin(x[1][1]);
    return result;
}
float3x2 asin(float3x2 x) {
    float3x2 result;
    result[0][0] = asin(x[0][0]);
    result[1][0] = asin(x[1][0]);
    result[2][0] = asin(x[2][0]);
    result[0][1] = asin(x[0][1]);
    result[1][1] = asin(x[1][1]);
    result[2][1] = asin(x[2][1]);
    return result;
}
float4x2 asin(float4x2 x) {
    float4x2 result;
    result[0][0] = asin(x[0][0]);
    result[1][0] = asin(x[1][0]);
    result[2][0] = asin(x[2][0]);
    result[3][0] = asin(x[3][0]);
    result[0][1] = asin(x[0][1]);
    result[1][1] = asin(x[1][1]);
    result[2][1] = asin(x[2][1]);
    result[3][1] = asin(x[3][1]);
    return result;
}
float2x3 asin(float2x3 x) {
    float2x3 result;
    result[0][0] = asin(x[0][0]);
    result[1][0] = asin(x[1][0]);
    result[0][1] = asin(x[0][1]);
    result[1][1] = asin(x[1][1]);
    result[0][2] = asin(x[0][2]);
    result[1][2] = asin(x[1][2]);
    return result;
}
float3x3 asin(float3x3 x) {
    float3x3 result;
    result[0][0] = asin(x[0][0]);
    result[1][0] = asin(x[1][0]);
    result[2][0] = asin(x[2][0]);
    result[0][1] = asin(x[0][1]);
    result[1][1] = asin(x[1][1]);
    result[2][1] = asin(x[2][1]);
    result[0][2] = asin(x[0][2]);
    result[1][2] = asin(x[1][2]);
    result[2][2] = asin(x[2][2]);
    return result;
}
float4x3 asin(float4x3 x) {
    float4x3 result;
    result[0][0] = asin(x[0][0]);
    result[1][0] = asin(x[1][0]);
    result[2][0] = asin(x[2][0]);
    result[3][0] = asin(x[3][0]);
    result[0][1] = asin(x[0][1]);
    result[1][1] = asin(x[1][1]);
    result[2][1] = asin(x[2][1]);
    result[3][1] = asin(x[3][1]);
    result[0][2] = asin(x[0][2]);
    result[1][2] = asin(x[1][2]);
    result[2][2] = asin(x[2][2]);
    result[3][2] = asin(x[3][2]);
    return result;
}
float2x4 asin(float2x4 x) {
    float2x4 result;
    result[0][0] = asin(x[0][0]);
    result[1][0] = asin(x[1][0]);
    result[0][1] = asin(x[0][1]);
    result[1][1] = asin(x[1][1]);
    result[0][2] = asin(x[0][2]);
    result[1][2] = asin(x[1][2]);
    result[0][3] = asin(x[0][3]);
    result[1][3] = asin(x[1][3]);
    return result;
}
float3x4 asin(float3x4 x) {
    float3x4 result;
    result[0][0] = asin(x[0][0]);
    result[1][0] = asin(x[1][0]);
    result[2][0] = asin(x[2][0]);
    result[0][1] = asin(x[0][1]);
    result[1][1] = asin(x[1][1]);
    result[2][1] = asin(x[2][1]);
    result[0][2] = asin(x[0][2]);
    result[1][2] = asin(x[1][2]);
    result[2][2] = asin(x[2][2]);
    result[0][3] = asin(x[0][3]);
    result[1][3] = asin(x[1][3]);
    result[2][3] = asin(x[2][3]);
    return result;
}
float4x4 asin(float4x4 x) {
    float4x4 result;
    result[0][0] = asin(x[0][0]);
    result[1][0] = asin(x[1][0]);
    result[2][0] = asin(x[2][0]);
    result[3][0] = asin(x[3][0]);
    result[0][1] = asin(x[0][1]);
    result[1][1] = asin(x[1][1]);
    result[2][1] = asin(x[2][1]);
    result[3][1] = asin(x[3][1]);
    result[0][2] = asin(x[0][2]);
    result[1][2] = asin(x[1][2]);
    result[2][2] = asin(x[2][2]);
    result[3][2] = asin(x[3][2]);
    result[0][3] = asin(x[0][3]);
    result[1][3] = asin(x[1][3]);
    result[2][3] = asin(x[2][3]);
    result[3][3] = asin(x[3][3]);
    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 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[1][0] = pow(x[1][0], y[1][0]);
    result[0][1] = pow(x[0][1], y[0][1]);
    result[1][1] = pow(x[1][1], y[1][1]);
    return result;
}
float3x2 pow(float3x2 x, float3x2 y) {
    float3x2 result;
    result[0][0] = pow(x[0][0], y[0][0]);
    result[1][0] = pow(x[1][0], y[1][0]);
    result[2][0] = pow(x[2][0], y[2][0]);
    result[0][1] = pow(x[0][1], y[0][1]);
    result[1][1] = pow(x[1][1], y[1][1]);
    result[2][1] = pow(x[2][1], y[2][1]);
    return result;
}
float4x2 pow(float4x2 x, float4x2 y) {
    float4x2 result;
    result[0][0] = pow(x[0][0], y[0][0]);
    result[1][0] = pow(x[1][0], y[1][0]);
    result[2][0] = pow(x[2][0], y[2][0]);
    result[3][0] = pow(x[3][0], y[3][0]);
    result[0][1] = pow(x[0][1], y[0][1]);
    result[1][1] = pow(x[1][1], y[1][1]);
    result[2][1] = pow(x[2][1], y[2][1]);
    result[3][1] = pow(x[3][1], y[3][1]);
    return result;
}
float2x3 pow(float2x3 x, float2x3 y) {
    float2x3 result;
    result[0][0] = pow(x[0][0], y[0][0]);
    result[1][0] = pow(x[1][0], y[1][0]);
    result[0][1] = pow(x[0][1], y[0][1]);
    result[1][1] = pow(x[1][1], y[1][1]);
    result[0][2] = pow(x[0][2], y[0][2]);
    result[1][2] = pow(x[1][2], y[1][2]);
    return result;
}
float3x3 pow(float3x3 x, float3x3 y) {
    float3x3 result;
    result[0][0] = pow(x[0][0], y[0][0]);
    result[1][0] = pow(x[1][0], y[1][0]);
    result[2][0] = pow(x[2][0], y[2][0]);
    result[0][1] = pow(x[0][1], y[0][1]);
    result[1][1] = pow(x[1][1], y[1][1]);
    result[2][1] = pow(x[2][1], y[2][1]);
    result[0][2] = pow(x[0][2], y[0][2]);
    result[1][2] = pow(x[1][2], y[1][2]);
    result[2][2] = pow(x[2][2], y[2][2]);
    return result;
}
float4x3 pow(float4x3 x, float4x3 y) {
    float4x3 result;
    result[0][0] = pow(x[0][0], y[0][0]);
    result[1][0] = pow(x[1][0], y[1][0]);
    result[2][0] = pow(x[2][0], y[2][0]);
    result[3][0] = pow(x[3][0], y[3][0]);
    result[0][1] = pow(x[0][1], y[0][1]);
    result[1][1] = pow(x[1][1], y[1][1]);
    result[2][1] = pow(x[2][1], y[2][1]);
    result[3][1] = pow(x[3][1], y[3][1]);
    result[0][2] = pow(x[0][2], y[0][2]);
    result[1][2] = pow(x[1][2], y[1][2]);
    result[2][2] = pow(x[2][2], y[2][2]);
    result[3][2] = pow(x[3][2], y[3][2]);
    return result;
}
float2x4 pow(float2x4 x, float2x4 y) {
    float2x4 result;
    result[0][0] = pow(x[0][0], y[0][0]);
    result[1][0] = pow(x[1][0], y[1][0]);
    result[0][1] = pow(x[0][1], y[0][1]);
    result[1][1] = pow(x[1][1], y[1][1]);
    result[0][2] = pow(x[0][2], y[0][2]);
    result[1][2] = pow(x[1][2], y[1][2]);
    result[0][3] = pow(x[0][3], y[0][3]);
    result[1][3] = pow(x[1][3], y[1][3]);
    return result;
}
float3x4 pow(float3x4 x, float3x4 y) {
    float3x4 result;
    result[0][0] = pow(x[0][0], y[0][0]);
    result[1][0] = pow(x[1][0], y[1][0]);
    result[2][0] = pow(x[2][0], y[2][0]);
    result[0][1] = pow(x[0][1], y[0][1]);
    result[1][1] = pow(x[1][1], y[1][1]);
    result[2][1] = pow(x[2][1], y[2][1]);
    result[0][2] = pow(x[0][2], y[0][2]);
    result[1][2] = pow(x[1][2], y[1][2]);
    result[2][2] = pow(x[2][2], y[2][2]);
    result[0][3] = pow(x[0][3], y[0][3]);
    result[1][3] = pow(x[1][3], y[1][3]);
    result[2][3] = pow(x[2][3], y[2][3]);
    return result;
}
float4x4 pow(float4x4 x, float4x4 y) {
    float4x4 result;
    result[0][0] = pow(x[0][0], y[0][0]);
    result[1][0] = pow(x[1][0], y[1][0]);
    result[2][0] = pow(x[2][0], y[2][0]);
    result[3][0] = pow(x[3][0], y[3][0]);
    result[0][1] = pow(x[0][1], y[0][1]);
    result[1][1] = pow(x[1][1], y[1][1]);
    result[2][1] = pow(x[2][1], y[2][1]);
    result[3][1] = pow(x[3][1], y[3][1]);
    result[0][2] = pow(x[0][2], y[0][2]);
    result[1][2] = pow(x[1][2], y[1][2]);
    result[2][2] = pow(x[2][2], y[2][2]);
    result[3][2] = pow(x[3][2], y[3][2]);
    result[0][3] = pow(x[0][3], y[0][3]);
    result[1][3] = pow(x[1][3], y[1][3]);
    result[2][3] = pow(x[2][3], y[2][3]);
    result[3][3] = pow(x[3][3], y[3][3]);
    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[1][0] = tan(x[1][0]);
    result[0][1] = tan(x[0][1]);
    result[1][1] = tan(x[1][1]);
    return result;
}
float3x2 tan(float3x2 x) {
    float3x2 result;
    result[0][0] = tan(x[0][0]);
    result[1][0] = tan(x[1][0]);
    result[2][0] = tan(x[2][0]);
    result[0][1] = tan(x[0][1]);
    result[1][1] = tan(x[1][1]);
    result[2][1] = tan(x[2][1]);
    return result;
}
float4x2 tan(float4x2 x) {
    float4x2 result;
    result[0][0] = tan(x[0][0]);
    result[1][0] = tan(x[1][0]);
    result[2][0] = tan(x[2][0]);
    result[3][0] = tan(x[3][0]);
    result[0][1] = tan(x[0][1]);
    result[1][1] = tan(x[1][1]);
    result[2][1] = tan(x[2][1]);
    result[3][1] = tan(x[3][1]);
    return result;
}
float2x3 tan(float2x3 x) {
    float2x3 result;
    result[0][0] = tan(x[0][0]);
    result[1][0] = tan(x[1][0]);
    result[0][1] = tan(x[0][1]);
    result[1][1] = tan(x[1][1]);
    result[0][2] = tan(x[0][2]);
    result[1][2] = tan(x[1][2]);
    return result;
}
float3x3 tan(float3x3 x) {
    float3x3 result;
    result[0][0] = tan(x[0][0]);
    result[1][0] = tan(x[1][0]);
    result[2][0] = tan(x[2][0]);
    result[0][1] = tan(x[0][1]);
    result[1][1] = tan(x[1][1]);
    result[2][1] = tan(x[2][1]);
    result[0][2] = tan(x[0][2]);
    result[1][2] = tan(x[1][2]);
    result[2][2] = tan(x[2][2]);
    return result;
}
float4x3 tan(float4x3 x) {
    float4x3 result;
    result[0][0] = tan(x[0][0]);
    result[1][0] = tan(x[1][0]);
    result[2][0] = tan(x[2][0]);
    result[3][0] = tan(x[3][0]);
    result[0][1] = tan(x[0][1]);
    result[1][1] = tan(x[1][1]);
    result[2][1] = tan(x[2][1]);
    result[3][1] = tan(x[3][1]);
    result[0][2] = tan(x[0][2]);
    result[1][2] = tan(x[1][2]);
    result[2][2] = tan(x[2][2]);
    result[3][2] = tan(x[3][2]);
    return result;
}
float2x4 tan(float2x4 x) {
    float2x4 result;
    result[0][0] = tan(x[0][0]);
    result[1][0] = tan(x[1][0]);
    result[0][1] = tan(x[0][1]);
    result[1][1] = tan(x[1][1]);
    result[0][2] = tan(x[0][2]);
    result[1][2] = tan(x[1][2]);
    result[0][3] = tan(x[0][3]);
    result[1][3] = tan(x[1][3]);
    return result;
}
float3x4 tan(float3x4 x) {
    float3x4 result;
    result[0][0] = tan(x[0][0]);
    result[1][0] = tan(x[1][0]);
    result[2][0] = tan(x[2][0]);
    result[0][1] = tan(x[0][1]);
    result[1][1] = tan(x[1][1]);
    result[2][1] = tan(x[2][1]);
    result[0][2] = tan(x[0][2]);
    result[1][2] = tan(x[1][2]);
    result[2][2] = tan(x[2][2]);
    result[0][3] = tan(x[0][3]);
    result[1][3] = tan(x[1][3]);
    result[2][3] = tan(x[2][3]);
    return result;
}
float4x4 tan(float4x4 x) {
    float4x4 result;
    result[0][0] = tan(x[0][0]);
    result[1][0] = tan(x[1][0]);
    result[2][0] = tan(x[2][0]);
    result[3][0] = tan(x[3][0]);
    result[0][1] = tan(x[0][1]);
    result[1][1] = tan(x[1][1]);
    result[2][1] = tan(x[2][1]);
    result[3][1] = tan(x[3][1]);
    result[0][2] = tan(x[0][2]);
    result[1][2] = tan(x[1][2]);
    result[2][2] = tan(x[2][2]);
    result[3][2] = tan(x[3][2]);
    result[0][3] = tan(x[0][3]);
    result[1][3] = tan(x[1][3]);
    result[2][3] = tan(x[2][3]);
    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[1][0] = fma(x[1][0], y[1][0], z[1][0]);
    result[0][1] = fma(x[0][1], y[0][1], z[0][1]);
    result[1][1] = fma(x[1][1], y[1][1], z[1][1]);
    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[1][0] = fma(x[1][0], y[1][0], z[1][0]);
    result[2][0] = fma(x[2][0], y[2][0], z[2][0]);
    result[0][1] = fma(x[0][1], y[0][1], z[0][1]);
    result[1][1] = fma(x[1][1], y[1][1], z[1][1]);
    result[2][1] = fma(x[2][1], y[2][1], z[2][1]);
    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[1][0] = fma(x[1][0], y[1][0], z[1][0]);
    result[2][0] = fma(x[2][0], y[2][0], z[2][0]);
    result[3][0] = fma(x[3][0], y[3][0], z[3][0]);
    result[0][1] = fma(x[0][1], y[0][1], z[0][1]);
    result[1][1] = fma(x[1][1], y[1][1], z[1][1]);
    result[2][1] = fma(x[2][1], y[2][1], z[2][1]);
    result[3][1] = fma(x[3][1], y[3][1], z[3][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[1][0] = fma(x[1][0], y[1][0], z[1][0]);
    result[0][1] = fma(x[0][1], y[0][1], z[0][1]);
    result[1][1] = fma(x[1][1], y[1][1], z[1][1]);
    result[0][2] = fma(x[0][2], y[0][2], z[0][2]);
    result[1][2] = fma(x[1][2], y[1][2], z[1][2]);
    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[1][0] = fma(x[1][0], y[1][0], z[1][0]);
    result[2][0] = fma(x[2][0], y[2][0], z[2][0]);
    result[0][1] = fma(x[0][1], y[0][1], z[0][1]);
    result[1][1] = fma(x[1][1], y[1][1], z[1][1]);
    result[2][1] = fma(x[2][1], y[2][1], z[2][1]);
    result[0][2] = fma(x[0][2], y[0][2], z[0][2]);
    result[1][2] = fma(x[1][2], y[1][2], z[1][2]);
    result[2][2] = fma(x[2][2], y[2][2], z[2][2]);
    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[1][0] = fma(x[1][0], y[1][0], z[1][0]);
    result[2][0] = fma(x[2][0], y[2][0], z[2][0]);
    result[3][0] = fma(x[3][0], y[3][0], z[3][0]);
    result[0][1] = fma(x[0][1], y[0][1], z[0][1]);
    result[1][1] = fma(x[1][1], y[1][1], z[1][1]);
    result[2][1] = fma(x[2][1], y[2][1], z[2][1]);
    result[3][1] = fma(x[3][1], y[3][1], z[3][1]);
    result[0][2] = fma(x[0][2], y[0][2], z[0][2]);
    result[1][2] = fma(x[1][2], y[1][2], z[1][2]);
    result[2][2] = fma(x[2][2], y[2][2], z[2][2]);
    result[3][2] = fma(x[3][2], y[3][2], z[3][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[1][0] = fma(x[1][0], y[1][0], z[1][0]);
    result[0][1] = fma(x[0][1], y[0][1], z[0][1]);
    result[1][1] = fma(x[1][1], y[1][1], z[1][1]);
    result[0][2] = fma(x[0][2], y[0][2], z[0][2]);
    result[1][2] = fma(x[1][2], y[1][2], z[1][2]);
    result[0][3] = fma(x[0][3], y[0][3], z[0][3]);
    result[1][3] = fma(x[1][3], y[1][3], z[1][3]);
    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[1][0] = fma(x[1][0], y[1][0], z[1][0]);
    result[2][0] = fma(x[2][0], y[2][0], z[2][0]);
    result[0][1] = fma(x[0][1], y[0][1], z[0][1]);
    result[1][1] = fma(x[1][1], y[1][1], z[1][1]);
    result[2][1] = fma(x[2][1], y[2][1], z[2][1]);
    result[0][2] = fma(x[0][2], y[0][2], z[0][2]);
    result[1][2] = fma(x[1][2], y[1][2], z[1][2]);
    result[2][2] = fma(x[2][2], y[2][2], z[2][2]);
    result[0][3] = fma(x[0][3], y[0][3], z[0][3]);
    result[1][3] = fma(x[1][3], y[1][3], z[1][3]);
    result[2][3] = fma(x[2][3], y[2][3], z[2][3]);
    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[1][0] = fma(x[1][0], y[1][0], z[1][0]);
    result[2][0] = fma(x[2][0], y[2][0], z[2][0]);
    result[3][0] = fma(x[3][0], y[3][0], z[3][0]);
    result[0][1] = fma(x[0][1], y[0][1], z[0][1]);
    result[1][1] = fma(x[1][1], y[1][1], z[1][1]);
    result[2][1] = fma(x[2][1], y[2][1], z[2][1]);
    result[3][1] = fma(x[3][1], y[3][1], z[3][1]);
    result[0][2] = fma(x[0][2], y[0][2], z[0][2]);
    result[1][2] = fma(x[1][2], y[1][2], z[1][2]);
    result[2][2] = fma(x[2][2], y[2][2], z[2][2]);
    result[3][2] = fma(x[3][2], y[3][2], z[3][2]);
    result[0][3] = fma(x[0][3], y[0][3], z[0][3]);
    result[1][3] = fma(x[1][3], y[1][3], z[1][3]);
    result[2][3] = fma(x[2][3], y[2][3], z[2][3]);
    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[1][0] * x[0][1];
}
float determinant(float3x3 x) {
    return x[0][0] * x[1][1] * x[2][2] +
           x[1][0] * x[2][1] * x[0][2] +
           x[2][0] * x[0][1] * x[1][2] -
           x[0][2] * x[1][1] * x[2][0] -
           x[1][2] * x[2][1] * x[0][0] -
           x[2][2] * x[0][1] * x[1][0];
}
float determinant(float4x4 x) {
    float result;
    float3x3 minor;
    minor[0][0] = x[1][1];
    minor[1][0] = x[2][1];
    minor[2][0] = x[3][1];
    minor[0][1] = x[1][2];
    minor[1][1] = x[2][2];
    minor[2][1] = x[3][2];
    minor[0][2] = x[1][3];
    minor[1][2] = x[2][3];
    minor[2][2] = x[3][3];
    result = result + x[0][0] * determinant(minor);
    minor[0][0] = x[0][1];
    minor[1][0] = x[2][1];
    minor[2][0] = x[3][1];
    minor[0][1] = x[0][2];
    minor[1][1] = x[2][2];
    minor[2][1] = x[3][2];
    minor[0][2] = x[0][3];
    minor[1][2] = x[2][3];
    minor[2][2] = x[3][3];
    result = result - x[1][0] * determinant(minor);
    minor[0][0] = x[0][1];
    minor[1][0] = x[1][1];
    minor[2][0] = x[3][1];
    minor[0][1] = x[0][2];
    minor[1][1] = x[1][2];
    minor[2][1] = x[3][2];
    minor[0][2] = x[0][3];
    minor[1][2] = x[1][3];
    minor[2][2] = x[3][3];
    result = result + x[2][0] * determinant(minor);
    minor[0][0] = x[0][1];
    minor[1][0] = x[1][1];
    minor[2][0] = x[2][1];
    minor[0][1] = x[0][2];
    minor[1][1] = x[1][2];
    minor[2][1] = x[2][2];
    minor[0][2] = x[0][3];
    minor[1][2] = x[1][3];
    minor[2][2] = x[2][3];
    result = result - x[3][0] * determinant(minor);
    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[1][0] = floor(x[1][0]);
    result[0][1] = floor(x[0][1]);
    result[1][1] = floor(x[1][1]);
    return result;
}
float3x2 floor(float3x2 x) {
    float3x2 result;
    result[0][0] = floor(x[0][0]);
    result[1][0] = floor(x[1][0]);
    result[2][0] = floor(x[2][0]);
    result[0][1] = floor(x[0][1]);
    result[1][1] = floor(x[1][1]);
    result[2][1] = floor(x[2][1]);
    return result;
}
float4x2 floor(float4x2 x) {
    float4x2 result;
    result[0][0] = floor(x[0][0]);
    result[1][0] = floor(x[1][0]);
    result[2][0] = floor(x[2][0]);
    result[3][0] = floor(x[3][0]);
    result[0][1] = floor(x[0][1]);
    result[1][1] = floor(x[1][1]);
    result[2][1] = floor(x[2][1]);
    result[3][1] = floor(x[3][1]);
    return result;
}
float2x3 floor(float2x3 x) {
    float2x3 result;
    result[0][0] = floor(x[0][0]);
    result[1][0] = floor(x[1][0]);
    result[0][1] = floor(x[0][1]);
    result[1][1] = floor(x[1][1]);
    result[0][2] = floor(x[0][2]);
    result[1][2] = floor(x[1][2]);
    return result;
}
float3x3 floor(float3x3 x) {
    float3x3 result;
    result[0][0] = floor(x[0][0]);
    result[1][0] = floor(x[1][0]);
    result[2][0] = floor(x[2][0]);
    result[0][1] = floor(x[0][1]);
    result[1][1] = floor(x[1][1]);
    result[2][1] = floor(x[2][1]);
    result[0][2] = floor(x[0][2]);
    result[1][2] = floor(x[1][2]);
    result[2][2] = floor(x[2][2]);
    return result;
}
float4x3 floor(float4x3 x) {
    float4x3 result;
    result[0][0] = floor(x[0][0]);
    result[1][0] = floor(x[1][0]);
    result[2][0] = floor(x[2][0]);
    result[3][0] = floor(x[3][0]);
    result[0][1] = floor(x[0][1]);
    result[1][1] = floor(x[1][1]);
    result[2][1] = floor(x[2][1]);
    result[3][1] = floor(x[3][1]);
    result[0][2] = floor(x[0][2]);
    result[1][2] = floor(x[1][2]);
    result[2][2] = floor(x[2][2]);
    result[3][2] = floor(x[3][2]);
    return result;
}
float2x4 floor(float2x4 x) {
    float2x4 result;
    result[0][0] = floor(x[0][0]);
    result[1][0] = floor(x[1][0]);
    result[0][1] = floor(x[0][1]);
    result[1][1] = floor(x[1][1]);
    result[0][2] = floor(x[0][2]);
    result[1][2] = floor(x[1][2]);
    result[0][3] = floor(x[0][3]);
    result[1][3] = floor(x[1][3]);
    return result;
}
float3x4 floor(float3x4 x) {
    float3x4 result;
    result[0][0] = floor(x[0][0]);
    result[1][0] = floor(x[1][0]);
    result[2][0] = floor(x[2][0]);
    result[0][1] = floor(x[0][1]);
    result[1][1] = floor(x[1][1]);
    result[2][1] = floor(x[2][1]);
    result[0][2] = floor(x[0][2]);
    result[1][2] = floor(x[1][2]);
    result[2][2] = floor(x[2][2]);
    result[0][3] = floor(x[0][3]);
    result[1][3] = floor(x[1][3]);
    result[2][3] = floor(x[2][3]);
    return result;
}
float4x4 floor(float4x4 x) {
    float4x4 result;
    result[0][0] = floor(x[0][0]);
    result[1][0] = floor(x[1][0]);
    result[2][0] = floor(x[2][0]);
    result[3][0] = floor(x[3][0]);
    result[0][1] = floor(x[0][1]);
    result[1][1] = floor(x[1][1]);
    result[2][1] = floor(x[2][1]);
    result[3][1] = floor(x[3][1]);
    result[0][2] = floor(x[0][2]);
    result[1][2] = floor(x[1][2]);
    result[2][2] = floor(x[2][2]);
    result[3][2] = floor(x[3][2]);
    result[0][3] = floor(x[0][3]);
    result[1][3] = floor(x[1][3]);
    result[2][3] = floor(x[2][3]);
    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 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 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 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[1][0] = atan2(x[1][0], y[1][0]);
    result[0][1] = atan2(x[0][1], y[0][1]);
    result[1][1] = atan2(x[1][1], y[1][1]);
    return result;
}
float3x2 atan2(float3x2 x, float3x2 y) {
    float3x2 result;
    result[0][0] = atan2(x[0][0], y[0][0]);
    result[1][0] = atan2(x[1][0], y[1][0]);
    result[2][0] = atan2(x[2][0], y[2][0]);
    result[0][1] = atan2(x[0][1], y[0][1]);
    result[1][1] = atan2(x[1][1], y[1][1]);
    result[2][1] = atan2(x[2][1], y[2][1]);
    return result;
}
float4x2 atan2(float4x2 x, float4x2 y) {
    float4x2 result;
    result[0][0] = atan2(x[0][0], y[0][0]);
    result[1][0] = atan2(x[1][0], y[1][0]);
    result[2][0] = atan2(x[2][0], y[2][0]);
    result[3][0] = atan2(x[3][0], y[3][0]);
    result[0][1] = atan2(x[0][1], y[0][1]);
    result[1][1] = atan2(x[1][1], y[1][1]);
    result[2][1] = atan2(x[2][1], y[2][1]);
    result[3][1] = atan2(x[3][1], y[3][1]);
    return result;
}
float2x3 atan2(float2x3 x, float2x3 y) {
    float2x3 result;
    result[0][0] = atan2(x[0][0], y[0][0]);
    result[1][0] = atan2(x[1][0], y[1][0]);
    result[0][1] = atan2(x[0][1], y[0][1]);
    result[1][1] = atan2(x[1][1], y[1][1]);
    result[0][2] = atan2(x[0][2], y[0][2]);
    result[1][2] = atan2(x[1][2], y[1][2]);
    return result;
}
float3x3 atan2(float3x3 x, float3x3 y) {
    float3x3 result;
    result[0][0] = atan2(x[0][0], y[0][0]);
    result[1][0] = atan2(x[1][0], y[1][0]);
    result[2][0] = atan2(x[2][0], y[2][0]);
    result[0][1] = atan2(x[0][1], y[0][1]);
    result[1][1] = atan2(x[1][1], y[1][1]);
    result[2][1] = atan2(x[2][1], y[2][1]);
    result[0][2] = atan2(x[0][2], y[0][2]);
    result[1][2] = atan2(x[1][2], y[1][2]);
    result[2][2] = atan2(x[2][2], y[2][2]);
    return result;
}
float4x3 atan2(float4x3 x, float4x3 y) {
    float4x3 result;
    result[0][0] = atan2(x[0][0], y[0][0]);
    result[1][0] = atan2(x[1][0], y[1][0]);
    result[2][0] = atan2(x[2][0], y[2][0]);
    result[3][0] = atan2(x[3][0], y[3][0]);
    result[0][1] = atan2(x[0][1], y[0][1]);
    result[1][1] = atan2(x[1][1], y[1][1]);
    result[2][1] = atan2(x[2][1], y[2][1]);
    result[3][1] = atan2(x[3][1], y[3][1]);
    result[0][2] = atan2(x[0][2], y[0][2]);
    result[1][2] = atan2(x[1][2], y[1][2]);
    result[2][2] = atan2(x[2][2], y[2][2]);
    result[3][2] = atan2(x[3][2], y[3][2]);
    return result;
}
float2x4 atan2(float2x4 x, float2x4 y) {
    float2x4 result;
    result[0][0] = atan2(x[0][0], y[0][0]);
    result[1][0] = atan2(x[1][0], y[1][0]);
    result[0][1] = atan2(x[0][1], y[0][1]);
    result[1][1] = atan2(x[1][1], y[1][1]);
    result[0][2] = atan2(x[0][2], y[0][2]);
    result[1][2] = atan2(x[1][2], y[1][2]);
    result[0][3] = atan2(x[0][3], y[0][3]);
    result[1][3] = atan2(x[1][3], y[1][3]);
    return result;
}
float3x4 atan2(float3x4 x, float3x4 y) {
    float3x4 result;
    result[0][0] = atan2(x[0][0], y[0][0]);
    result[1][0] = atan2(x[1][0], y[1][0]);
    result[2][0] = atan2(x[2][0], y[2][0]);
    result[0][1] = atan2(x[0][1], y[0][1]);
    result[1][1] = atan2(x[1][1], y[1][1]);
    result[2][1] = atan2(x[2][1], y[2][1]);
    result[0][2] = atan2(x[0][2], y[0][2]);
    result[1][2] = atan2(x[1][2], y[1][2]);
    result[2][2] = atan2(x[2][2], y[2][2]);
    result[0][3] = atan2(x[0][3], y[0][3]);
    result[1][3] = atan2(x[1][3], y[1][3]);
    result[2][3] = atan2(x[2][3], y[2][3]);
    return result;
}
float4x4 atan2(float4x4 x, float4x4 y) {
    float4x4 result;
    result[0][0] = atan2(x[0][0], y[0][0]);
    result[1][0] = atan2(x[1][0], y[1][0]);
    result[2][0] = atan2(x[2][0], y[2][0]);
    result[3][0] = atan2(x[3][0], y[3][0]);
    result[0][1] = atan2(x[0][1], y[0][1]);
    result[1][1] = atan2(x[1][1], y[1][1]);
    result[2][1] = atan2(x[2][1], y[2][1]);
    result[3][1] = atan2(x[3][1], y[3][1]);
    result[0][2] = atan2(x[0][2], y[0][2]);
    result[1][2] = atan2(x[1][2], y[1][2]);
    result[2][2] = atan2(x[2][2], y[2][2]);
    result[3][2] = atan2(x[3][2], y[3][2]);
    result[0][3] = atan2(x[0][3], y[0][3]);
    result[1][3] = atan2(x[1][3], y[1][3]);
    result[2][3] = atan2(x[2][3], y[2][3]);
    result[3][3] = atan2(x[3][3], y[3][3]);
    return result;
}

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

/* 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[1][0] = fmod(x[1][0], y[1][0]);
    result[0][1] = fmod(x[0][1], y[0][1]);
    result[1][1] = fmod(x[1][1], y[1][1]);
    return result;
}
float3x2 fmod(float3x2 x, float3x2 y) {
    float3x2 result;
    result[0][0] = fmod(x[0][0], y[0][0]);
    result[1][0] = fmod(x[1][0], y[1][0]);
    result[2][0] = fmod(x[2][0], y[2][0]);
    result[0][1] = fmod(x[0][1], y[0][1]);
    result[1][1] = fmod(x[1][1], y[1][1]);
    result[2][1] = fmod(x[2][1], y[2][1]);
    return result;
}
float4x2 fmod(float4x2 x, float4x2 y) {
    float4x2 result;
    result[0][0] = fmod(x[0][0], y[0][0]);
    result[1][0] = fmod(x[1][0], y[1][0]);
    result[2][0] = fmod(x[2][0], y[2][0]);
    result[3][0] = fmod(x[3][0], y[3][0]);
    result[0][1] = fmod(x[0][1], y[0][1]);
    result[1][1] = fmod(x[1][1], y[1][1]);
    result[2][1] = fmod(x[2][1], y[2][1]);
    result[3][1] = fmod(x[3][1], y[3][1]);
    return result;
}
float2x3 fmod(float2x3 x, float2x3 y) {
    float2x3 result;
    result[0][0] = fmod(x[0][0], y[0][0]);
    result[1][0] = fmod(x[1][0], y[1][0]);
    result[0][1] = fmod(x[0][1], y[0][1]);
    result[1][1] = fmod(x[1][1], y[1][1]);
    result[0][2] = fmod(x[0][2], y[0][2]);
    result[1][2] = fmod(x[1][2], y[1][2]);
    return result;
}
float3x3 fmod(float3x3 x, float3x3 y) {
    float3x3 result;
    result[0][0] = fmod(x[0][0], y[0][0]);
    result[1][0] = fmod(x[1][0], y[1][0]);
    result[2][0] = fmod(x[2][0], y[2][0]);
    result[0][1] = fmod(x[0][1], y[0][1]);
    result[1][1] = fmod(x[1][1], y[1][1]);
    result[2][1] = fmod(x[2][1], y[2][1]);
    result[0][2] = fmod(x[0][2], y[0][2]);
    result[1][2] = fmod(x[1][2], y[1][2]);
    result[2][2] = fmod(x[2][2], y[2][2]);
    return result;
}
float4x3 fmod(float4x3 x, float4x3 y) {
    float4x3 result;
    result[0][0] = fmod(x[0][0], y[0][0]);
    result[1][0] = fmod(x[1][0], y[1][0]);
    result[2][0] = fmod(x[2][0], y[2][0]);
    result[3][0] = fmod(x[3][0], y[3][0]);
    result[0][1] = fmod(x[0][1], y[0][1]);
    result[1][1] = fmod(x[1][1], y[1][1]);
    result[2][1] = fmod(x[2][1], y[2][1]);
    result[3][1] = fmod(x[3][1], y[3][1]);
    result[0][2] = fmod(x[0][2], y[0][2]);
    result[1][2] = fmod(x[1][2], y[1][2]);
    result[2][2] = fmod(x[2][2], y[2][2]);
    result[3][2] = fmod(x[3][2], y[3][2]);
    return result;
}
float2x4 fmod(float2x4 x, float2x4 y) {
    float2x4 result;
    result[0][0] = fmod(x[0][0], y[0][0]);
    result[1][0] = fmod(x[1][0], y[1][0]);
    result[0][1] = fmod(x[0][1], y[0][1]);
    result[1][1] = fmod(x[1][1], y[1][1]);
    result[0][2] = fmod(x[0][2], y[0][2]);
    result[1][2] = fmod(x[1][2], y[1][2]);
    result[0][3] = fmod(x[0][3], y[0][3]);
    result[1][3] = fmod(x[1][3], y[1][3]);
    return result;
}
float3x4 fmod(float3x4 x, float3x4 y) {
    float3x4 result;
    result[0][0] = fmod(x[0][0], y[0][0]);
    result[1][0] = fmod(x[1][0], y[1][0]);
    result[2][0] = fmod(x[2][0], y[2][0]);
    result[0][1] = fmod(x[0][1], y[0][1]);
    result[1][1] = fmod(x[1][1], y[1][1]);
    result[2][1] = fmod(x[2][1], y[2][1]);
    result[0][2] = fmod(x[0][2], y[0][2]);
    result[1][2] = fmod(x[1][2], y[1][2]);
    result[2][2] = fmod(x[2][2], y[2][2]);
    result[0][3] = fmod(x[0][3], y[0][3]);
    result[1][3] = fmod(x[1][3], y[1][3]);
    result[2][3] = fmod(x[2][3], y[2][3]);
    return result;
}
float4x4 fmod(float4x4 x, float4x4 y) {
    float4x4 result;
    result[0][0] = fmod(x[0][0], y[0][0]);
    result[1][0] = fmod(x[1][0], y[1][0]);
    result[2][0] = fmod(x[2][0], y[2][0]);
    result[3][0] = fmod(x[3][0], y[3][0]);
    result[0][1] = fmod(x[0][1], y[0][1]);
    result[1][1] = fmod(x[1][1], y[1][1]);
    result[2][1] = fmod(x[2][1], y[2][1]);
    result[3][1] = fmod(x[3][1], y[3][1]);
    result[0][2] = fmod(x[0][2], y[0][2]);
    result[1][2] = fmod(x[1][2], y[1][2]);
    result[2][2] = fmod(x[2][2], y[2][2]);
    result[3][2] = fmod(x[3][2], y[3][2]);
    result[0][3] = fmod(x[0][3], y[0][3]);
    result[1][3] = fmod(x[1][3], y[1][3]);
    result[2][3] = fmod(x[2][3], y[2][3]);
    result[3][3] = fmod(x[3][3], y[3][3]);
    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);
native uint2 operator-(uint2, uint2);
native uint2 operator-(uint, uint2);
native uint2 operator-(uint2, uint);
native uint3 operator-(uint3, uint3);
native uint3 operator-(uint, uint3);
native uint3 operator-(uint3, uint);
native uint4 operator-(uint4, uint4);
native uint4 operator-(uint, uint4);
native uint4 operator-(uint4, uint);
native int2 operator-(int2, int2);
native int2 operator-(int, int2);
native int2 operator-(int2, int);
native int3 operator-(int3, int3);
native int3 operator-(int, int3);
native int3 operator-(int3, int);
native int4 operator-(int4, int4);
native int4 operator-(int, int4);
native int4 operator-(int4, int);
native float2 operator-(float2, float2);
native float2 operator-(float, float2);
native float2 operator-(float2, float);
native float3 operator-(float3, float3);
native float3 operator-(float, float3);
native float3 operator-(float3, float);
native float4 operator-(float4, float4);
native float4 operator-(float, float4);
native float4 operator-(float4, float);
native int2 operator-(int2);
native int3 operator-(int3);
native int4 operator-(int4);
native float2 operator-(float2);
native float3 operator-(float3);
native float4 operator-(float4);
native float2x2 operator-(float2x2, float2x2);
native float2x2 operator-(float2x2, float);
native float2x2 operator-(float, float2x2);
native float2x2 operator-(float2x2);
native float3x2 operator-(float3x2, float3x2);
native float3x2 operator-(float, float3x2);
native float3x2 operator-(float3x2, float);
native float3x2 operator-(float3x2);
native float4x2 operator-(float4x2, float4x2);
native float4x2 operator-(float, float4x2);
native float4x2 operator-(float4x2, float);
native float4x2 operator-(float4x2);
native float2x3 operator-(float2x3, float2x3);
native float2x3 operator-(float, float2x3);
native float2x3 operator-(float2x3, float);
native float2x3 operator-(float2x3);
native float3x3 operator-(float3x3, float3x3);
native float3x3 operator-(float, float3x3);
native float3x3 operator-(float3x3, float);
native float3x3 operator-(float3x3);
native float4x3 operator-(float4x3, float4x3);
native float4x3 operator-(float, float4x3);
native float4x3 operator-(float4x3, float);
native float4x3 operator-(float4x3);
native float2x4 operator-(float2x4, float2x4);
native float2x4 operator-(float, float2x4);
native float2x4 operator-(float2x4, float);
native float2x4 operator-(float2x4);
native float3x4 operator-(float3x4, float3x4);
native float3x4 operator-(float, float3x4);
native float3x4 operator-(float3x4, float);
native float3x4 operator-(float3x4);
native float4x4 operator-(float4x4, float4x4);
native float4x4 operator-(float, float4x4);
native float4x4 operator-(float4x4, float);
native float4x4 operator-(float4x4);

/* 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[1][0] = min(x[1][0], y[1][0]);
    result[0][1] = min(x[0][1], y[0][1]);
    result[1][1] = min(x[1][1], y[1][1]);
    return result;
}
float3x2 min(float3x2 x, float3x2 y) {
    float3x2 result;
    result[0][0] = min(x[0][0], y[0][0]);
    result[1][0] = min(x[1][0], y[1][0]);
    result[2][0] = min(x[2][0], y[2][0]);
    result[0][1] = min(x[0][1], y[0][1]);
    result[1][1] = min(x[1][1], y[1][1]);
    result[2][1] = min(x[2][1], y[2][1]);
    return result;
}
float4x2 min(float4x2 x, float4x2 y) {
    float4x2 result;
    result[0][0] = min(x[0][0], y[0][0]);
    result[1][0] = min(x[1][0], y[1][0]);
    result[2][0] = min(x[2][0], y[2][0]);
    result[3][0] = min(x[3][0], y[3][0]);
    result[0][1] = min(x[0][1], y[0][1]);
    result[1][1] = min(x[1][1], y[1][1]);
    result[2][1] = min(x[2][1], y[2][1]);
    result[3][1] = min(x[3][1], y[3][1]);
    return result;
}
float2x3 min(float2x3 x, float2x3 y) {
    float2x3 result;
    result[0][0] = min(x[0][0], y[0][0]);
    result[1][0] = min(x[1][0], y[1][0]);
    result[0][1] = min(x[0][1], y[0][1]);
    result[1][1] = min(x[1][1], y[1][1]);
    result[0][2] = min(x[0][2], y[0][2]);
    result[1][2] = min(x[1][2], y[1][2]);
    return result;
}
float3x3 min(float3x3 x, float3x3 y) {
    float3x3 result;
    result[0][0] = min(x[0][0], y[0][0]);
    result[1][0] = min(x[1][0], y[1][0]);
    result[2][0] = min(x[2][0], y[2][0]);
    result[0][1] = min(x[0][1], y[0][1]);
    result[1][1] = min(x[1][1], y[1][1]);
    result[2][1] = min(x[2][1], y[2][1]);
    result[0][2] = min(x[0][2], y[0][2]);
    result[1][2] = min(x[1][2], y[1][2]);
    result[2][2] = min(x[2][2], y[2][2]);
    return result;
}
float4x3 min(float4x3 x, float4x3 y) {
    float4x3 result;
    result[0][0] = min(x[0][0], y[0][0]);
    result[1][0] = min(x[1][0], y[1][0]);
    result[2][0] = min(x[2][0], y[2][0]);
    result[3][0] = min(x[3][0], y[3][0]);
    result[0][1] = min(x[0][1], y[0][1]);
    result[1][1] = min(x[1][1], y[1][1]);
    result[2][1] = min(x[2][1], y[2][1]);
    result[3][1] = min(x[3][1], y[3][1]);
    result[0][2] = min(x[0][2], y[0][2]);
    result[1][2] = min(x[1][2], y[1][2]);
    result[2][2] = min(x[2][2], y[2][2]);
    result[3][2] = min(x[3][2], y[3][2]);
    return result;
}
float2x4 min(float2x4 x, float2x4 y) {
    float2x4 result;
    result[0][0] = min(x[0][0], y[0][0]);
    result[1][0] = min(x[1][0], y[1][0]);
    result[0][1] = min(x[0][1], y[0][1]);
    result[1][1] = min(x[1][1], y[1][1]);
    result[0][2] = min(x[0][2], y[0][2]);
    result[1][2] = min(x[1][2], y[1][2]);
    result[0][3] = min(x[0][3], y[0][3]);
    result[1][3] = min(x[1][3], y[1][3]);
    return result;
}
float3x4 min(float3x4 x, float3x4 y) {
    float3x4 result;
    result[0][0] = min(x[0][0], y[0][0]);
    result[1][0] = min(x[1][0], y[1][0]);
    result[2][0] = min(x[2][0], y[2][0]);
    result[0][1] = min(x[0][1], y[0][1]);
    result[1][1] = min(x[1][1], y[1][1]);
    result[2][1] = min(x[2][1], y[2][1]);
    result[0][2] = min(x[0][2], y[0][2]);
    result[1][2] = min(x[1][2], y[1][2]);
    result[2][2] = min(x[2][2], y[2][2]);
    result[0][3] = min(x[0][3], y[0][3]);
    result[1][3] = min(x[1][3], y[1][3]);
    result[2][3] = min(x[2][3], y[2][3]);
    return result;
}
float4x4 min(float4x4 x, float4x4 y) {
    float4x4 result;
    result[0][0] = min(x[0][0], y[0][0]);
    result[1][0] = min(x[1][0], y[1][0]);
    result[2][0] = min(x[2][0], y[2][0]);
    result[3][0] = min(x[3][0], y[3][0]);
    result[0][1] = min(x[0][1], y[0][1]);
    result[1][1] = min(x[1][1], y[1][1]);
    result[2][1] = min(x[2][1], y[2][1]);
    result[3][1] = min(x[3][1], y[3][1]);
    result[0][2] = min(x[0][2], y[0][2]);
    result[1][2] = min(x[1][2], y[1][2]);
    result[2][2] = min(x[2][2], y[2][2]);
    result[3][2] = min(x[3][2], y[3][2]);
    result[0][3] = min(x[0][3], y[0][3]);
    result[1][3] = min(x[1][3], y[1][3]);
    result[2][3] = min(x[2][3], y[2][3]);
    result[3][3] = min(x[3][3], y[3][3]);
    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 GroupMemoryBarrierWithGroupSync */
native void GroupMemoryBarrierWithGroupSync();

/* 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[1][0] = trunc(x[1][0]);
    result[0][1] = trunc(x[0][1]);
    result[1][1] = trunc(x[1][1]);
    return result;
}
float3x2 trunc(float3x2 x) {
    float3x2 result;
    result[0][0] = trunc(x[0][0]);
    result[1][0] = trunc(x[1][0]);
    result[2][0] = trunc(x[2][0]);
    result[0][1] = trunc(x[0][1]);
    result[1][1] = trunc(x[1][1]);
    result[2][1] = trunc(x[2][1]);
    return result;
}
float4x2 trunc(float4x2 x) {
    float4x2 result;
    result[0][0] = trunc(x[0][0]);
    result[1][0] = trunc(x[1][0]);
    result[2][0] = trunc(x[2][0]);
    result[3][0] = trunc(x[3][0]);
    result[0][1] = trunc(x[0][1]);
    result[1][1] = trunc(x[1][1]);
    result[2][1] = trunc(x[2][1]);
    result[3][1] = trunc(x[3][1]);
    return result;
}
float2x3 trunc(float2x3 x) {
    float2x3 result;
    result[0][0] = trunc(x[0][0]);
    result[1][0] = trunc(x[1][0]);
    result[0][1] = trunc(x[0][1]);
    result[1][1] = trunc(x[1][1]);
    result[0][2] = trunc(x[0][2]);
    result[1][2] = trunc(x[1][2]);
    return result;
}
float3x3 trunc(float3x3 x) {
    float3x3 result;
    result[0][0] = trunc(x[0][0]);
    result[1][0] = trunc(x[1][0]);
    result[2][0] = trunc(x[2][0]);
    result[0][1] = trunc(x[0][1]);
    result[1][1] = trunc(x[1][1]);
    result[2][1] = trunc(x[2][1]);
    result[0][2] = trunc(x[0][2]);
    result[1][2] = trunc(x[1][2]);
    result[2][2] = trunc(x[2][2]);
    return result;
}
float4x3 trunc(float4x3 x) {
    float4x3 result;
    result[0][0] = trunc(x[0][0]);
    result[1][0] = trunc(x[1][0]);
    result[2][0] = trunc(x[2][0]);
    result[3][0] = trunc(x[3][0]);
    result[0][1] = trunc(x[0][1]);
    result[1][1] = trunc(x[1][1]);
    result[2][1] = trunc(x[2][1]);
    result[3][1] = trunc(x[3][1]);
    result[0][2] = trunc(x[0][2]);
    result[1][2] = trunc(x[1][2]);
    result[2][2] = trunc(x[2][2]);
    result[3][2] = trunc(x[3][2]);
    return result;
}
float2x4 trunc(float2x4 x) {
    float2x4 result;
    result[0][0] = trunc(x[0][0]);
    result[1][0] = trunc(x[1][0]);
    result[0][1] = trunc(x[0][1]);
    result[1][1] = trunc(x[1][1]);
    result[0][2] = trunc(x[0][2]);
    result[1][2] = trunc(x[1][2]);
    result[0][3] = trunc(x[0][3]);
    result[1][3] = trunc(x[1][3]);
    return result;
}
float3x4 trunc(float3x4 x) {
    float3x4 result;
    result[0][0] = trunc(x[0][0]);
    result[1][0] = trunc(x[1][0]);
    result[2][0] = trunc(x[2][0]);
    result[0][1] = trunc(x[0][1]);
    result[1][1] = trunc(x[1][1]);
    result[2][1] = trunc(x[2][1]);
    result[0][2] = trunc(x[0][2]);
    result[1][2] = trunc(x[1][2]);
    result[2][2] = trunc(x[2][2]);
    result[0][3] = trunc(x[0][3]);
    result[1][3] = trunc(x[1][3]);
    result[2][3] = trunc(x[2][3]);
    return result;
}
float4x4 trunc(float4x4 x) {
    float4x4 result;
    result[0][0] = trunc(x[0][0]);
    result[1][0] = trunc(x[1][0]);
    result[2][0] = trunc(x[2][0]);
    result[3][0] = trunc(x[3][0]);
    result[0][1] = trunc(x[0][1]);
    result[1][1] = trunc(x[1][1]);
    result[2][1] = trunc(x[2][1]);
    result[3][1] = trunc(x[3][1]);
    result[0][2] = trunc(x[0][2]);
    result[1][2] = trunc(x[1][2]);
    result[2][2] = trunc(x[2][2]);
    result[3][2] = trunc(x[3][2]);
    result[0][3] = trunc(x[0][3]);
    result[1][3] = trunc(x[1][3]);
    result[2][3] = trunc(x[2][3]);
    result[3][3] = trunc(x[3][3]);
    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[1][0] = max(x[1][0], y[1][0]);
    result[0][1] = max(x[0][1], y[0][1]);
    result[1][1] = max(x[1][1], y[1][1]);
    return result;
}
float3x2 max(float3x2 x, float3x2 y) {
    float3x2 result;
    result[0][0] = max(x[0][0], y[0][0]);
    result[1][0] = max(x[1][0], y[1][0]);
    result[2][0] = max(x[2][0], y[2][0]);
    result[0][1] = max(x[0][1], y[0][1]);
    result[1][1] = max(x[1][1], y[1][1]);
    result[2][1] = max(x[2][1], y[2][1]);
    return result;
}
float4x2 max(float4x2 x, float4x2 y) {
    float4x2 result;
    result[0][0] = max(x[0][0], y[0][0]);
    result[1][0] = max(x[1][0], y[1][0]);
    result[2][0] = max(x[2][0], y[2][0]);
    result[3][0] = max(x[3][0], y[3][0]);
    result[0][1] = max(x[0][1], y[0][1]);
    result[1][1] = max(x[1][1], y[1][1]);
    result[2][1] = max(x[2][1], y[2][1]);
    result[3][1] = max(x[3][1], y[3][1]);
    return result;
}
float2x3 max(float2x3 x, float2x3 y) {
    float2x3 result;
    result[0][0] = max(x[0][0], y[0][0]);
    result[1][0] = max(x[1][0], y[1][0]);
    result[0][1] = max(x[0][1], y[0][1]);
    result[1][1] = max(x[1][1], y[1][1]);
    result[0][2] = max(x[0][2], y[0][2]);
    result[1][2] = max(x[1][2], y[1][2]);
    return result;
}
float3x3 max(float3x3 x, float3x3 y) {
    float3x3 result;
    result[0][0] = max(x[0][0], y[0][0]);
    result[1][0] = max(x[1][0], y[1][0]);
    result[2][0] = max(x[2][0], y[2][0]);
    result[0][1] = max(x[0][1], y[0][1]);
    result[1][1] = max(x[1][1], y[1][1]);
    result[2][1] = max(x[2][1], y[2][1]);
    result[0][2] = max(x[0][2], y[0][2]);
    result[1][2] = max(x[1][2], y[1][2]);
    result[2][2] = max(x[2][2], y[2][2]);
    return result;
}
float4x3 max(float4x3 x, float4x3 y) {
    float4x3 result;
    result[0][0] = max(x[0][0], y[0][0]);
    result[1][0] = max(x[1][0], y[1][0]);
    result[2][0] = max(x[2][0], y[2][0]);
    result[3][0] = max(x[3][0], y[3][0]);
    result[0][1] = max(x[0][1], y[0][1]);
    result[1][1] = max(x[1][1], y[1][1]);
    result[2][1] = max(x[2][1], y[2][1]);
    result[3][1] = max(x[3][1], y[3][1]);
    result[0][2] = max(x[0][2], y[0][2]);
    result[1][2] = max(x[1][2], y[1][2]);
    result[2][2] = max(x[2][2], y[2][2]);
    result[3][2] = max(x[3][2], y[3][2]);
    return result;
}
float2x4 max(float2x4 x, float2x4 y) {
    float2x4 result;
    result[0][0] = max(x[0][0], y[0][0]);
    result[1][0] = max(x[1][0], y[1][0]);
    result[0][1] = max(x[0][1], y[0][1]);
    result[1][1] = max(x[1][1], y[1][1]);
    result[0][2] = max(x[0][2], y[0][2]);
    result[1][2] = max(x[1][2], y[1][2]);
    result[0][3] = max(x[0][3], y[0][3]);
    result[1][3] = max(x[1][3], y[1][3]);
    return result;
}
float3x4 max(float3x4 x, float3x4 y) {
    float3x4 result;
    result[0][0] = max(x[0][0], y[0][0]);
    result[1][0] = max(x[1][0], y[1][0]);
    result[2][0] = max(x[2][0], y[2][0]);
    result[0][1] = max(x[0][1], y[0][1]);
    result[1][1] = max(x[1][1], y[1][1]);
    result[2][1] = max(x[2][1], y[2][1]);
    result[0][2] = max(x[0][2], y[0][2]);
    result[1][2] = max(x[1][2], y[1][2]);
    result[2][2] = max(x[2][2], y[2][2]);
    result[0][3] = max(x[0][3], y[0][3]);
    result[1][3] = max(x[1][3], y[1][3]);
    result[2][3] = max(x[2][3], y[2][3]);
    return result;
}
float4x4 max(float4x4 x, float4x4 y) {
    float4x4 result;
    result[0][0] = max(x[0][0], y[0][0]);
    result[1][0] = max(x[1][0], y[1][0]);
    result[2][0] = max(x[2][0], y[2][0]);
    result[3][0] = max(x[3][0], y[3][0]);
    result[0][1] = max(x[0][1], y[0][1]);
    result[1][1] = max(x[1][1], y[1][1]);
    result[2][1] = max(x[2][1], y[2][1]);
    result[3][1] = max(x[3][1], y[3][1]);
    result[0][2] = max(x[0][2], y[0][2]);
    result[1][2] = max(x[1][2], y[1][2]);
    result[2][2] = max(x[2][2], y[2][2]);
    result[3][2] = max(x[3][2], y[3][2]);
    result[0][3] = max(x[0][3], y[0][3]);
    result[1][3] = max(x[1][3], y[1][3]);
    result[2][3] = max(x[2][3], y[2][3]);
    result[3][3] = max(x[3][3], y[3][3]);
    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 clamp */
native uint clamp(uint, uint, uint);
native uint2 clamp(uint2, uint2, uint2);
native uint3 clamp(uint3, uint3, uint3);
native uint4 clamp(uint4, uint4, uint4);
native int clamp(int, int, int);
native int2 clamp(int2, int2, int2);
native int3 clamp(int3, int3, int3);
native int4 clamp(int4, int4, int4);
native float clamp(float, float, float);
native float2 clamp(float2, float2, float2);
native float3 clamp(float3, float3, float3);
native float4 clamp(float4, float4, float4);
native float2x2 clamp(float2x2, float2x2, float2x2);
native float3x2 clamp(float3x2, float3x2, float3x2);
native float4x2 clamp(float4x2, float4x2, float4x2);
native float2x3 clamp(float2x3, float2x3, float2x3);
native float3x3 clamp(float3x3, float3x3, float3x3);
native float4x3 clamp(float4x3, float4x3, float4x3);
native float2x4 clamp(float2x4, float2x4, float2x4);
native float3x4 clamp(float3x4, float3x4, float3x4);
native float4x4 clamp(float4x4, float4x4, float4x4);

/* Functions named operator< */
native bool operator<(int, int);
native bool operator<(uint, uint);
native bool operator<(float, float);
native bool2 operator<(uint2, uint2);
native bool3 operator<(uint3, uint3);
native bool4 operator<(uint4, uint4);
native bool2 operator<(int2, int2);
native bool3 operator<(int3, int3);
native bool4 operator<(int4, int4);
native bool2 operator<(float2, float2);
native bool3 operator<(float3, float3);
native bool4 operator<(float4, float4);
native bool2x2 operator<(float2x2, float2x2);
native bool3x2 operator<(float3x2, float3x2);
native bool4x2 operator<(float4x2, float4x2);
native bool2x3 operator<(float2x3, float2x3);
native bool3x3 operator<(float3x3, float3x3);
native bool4x3 operator<(float4x3, float4x3);
native bool2x4 operator<(float2x4, float2x4);
native bool3x4 operator<(float3x4, float3x4);
native bool4x4 operator<(float4x4, float4x4);

/* 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 AllMemoryBarrierWithGroupSync */
native void AllMemoryBarrierWithGroupSync();

/* 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 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 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[1][0] = degrees(x[1][0]);
    result[0][1] = degrees(x[0][1]);
    result[1][1] = degrees(x[1][1]);
    return result;
}
float3x2 degrees(float3x2 x) {
    float3x2 result;
    result[0][0] = degrees(x[0][0]);
    result[1][0] = degrees(x[1][0]);
    result[2][0] = degrees(x[2][0]);
    result[0][1] = degrees(x[0][1]);
    result[1][1] = degrees(x[1][1]);
    result[2][1] = degrees(x[2][1]);
    return result;
}
float4x2 degrees(float4x2 x) {
    float4x2 result;
    result[0][0] = degrees(x[0][0]);
    result[1][0] = degrees(x[1][0]);
    result[2][0] = degrees(x[2][0]);
    result[3][0] = degrees(x[3][0]);
    result[0][1] = degrees(x[0][1]);
    result[1][1] = degrees(x[1][1]);
    result[2][1] = degrees(x[2][1]);
    result[3][1] = degrees(x[3][1]);
    return result;
}
float2x3 degrees(float2x3 x) {
    float2x3 result;
    result[0][0] = degrees(x[0][0]);
    result[1][0] = degrees(x[1][0]);
    result[0][1] = degrees(x[0][1]);
    result[1][1] = degrees(x[1][1]);
    result[0][2] = degrees(x[0][2]);
    result[1][2] = degrees(x[1][2]);
    return result;
}
float3x3 degrees(float3x3 x) {
    float3x3 result;
    result[0][0] = degrees(x[0][0]);
    result[1][0] = degrees(x[1][0]);
    result[2][0] = degrees(x[2][0]);
    result[0][1] = degrees(x[0][1]);
    result[1][1] = degrees(x[1][1]);
    result[2][1] = degrees(x[2][1]);
    result[0][2] = degrees(x[0][2]);
    result[1][2] = degrees(x[1][2]);
    result[2][2] = degrees(x[2][2]);
    return result;
}
float4x3 degrees(float4x3 x) {
    float4x3 result;
    result[0][0] = degrees(x[0][0]);
    result[1][0] = degrees(x[1][0]);
    result[2][0] = degrees(x[2][0]);
    result[3][0] = degrees(x[3][0]);
    result[0][1] = degrees(x[0][1]);
    result[1][1] = degrees(x[1][1]);
    result[2][1] = degrees(x[2][1]);
    result[3][1] = degrees(x[3][1]);
    result[0][2] = degrees(x[0][2]);
    result[1][2] = degrees(x[1][2]);
    result[2][2] = degrees(x[2][2]);
    result[3][2] = degrees(x[3][2]);
    return result;
}
float2x4 degrees(float2x4 x) {
    float2x4 result;
    result[0][0] = degrees(x[0][0]);
    result[1][0] = degrees(x[1][0]);
    result[0][1] = degrees(x[0][1]);
    result[1][1] = degrees(x[1][1]);
    result[0][2] = degrees(x[0][2]);
    result[1][2] = degrees(x[1][2]);
    result[0][3] = degrees(x[0][3]);
    result[1][3] = degrees(x[1][3]);
    return result;
}
float3x4 degrees(float3x4 x) {
    float3x4 result;
    result[0][0] = degrees(x[0][0]);
    result[1][0] = degrees(x[1][0]);
    result[2][0] = degrees(x[2][0]);
    result[0][1] = degrees(x[0][1]);
    result[1][1] = degrees(x[1][1]);
    result[2][1] = degrees(x[2][1]);
    result[0][2] = degrees(x[0][2]);
    result[1][2] = degrees(x[1][2]);
    result[2][2] = degrees(x[2][2]);
    result[0][3] = degrees(x[0][3]);
    result[1][3] = degrees(x[1][3]);
    result[2][3] = degrees(x[2][3]);
    return result;
}
float4x4 degrees(float4x4 x) {
    float4x4 result;
    result[0][0] = degrees(x[0][0]);
    result[1][0] = degrees(x[1][0]);
    result[2][0] = degrees(x[2][0]);
    result[3][0] = degrees(x[3][0]);
    result[0][1] = degrees(x[0][1]);
    result[1][1] = degrees(x[1][1]);
    result[2][1] = degrees(x[2][1]);
    result[3][1] = degrees(x[3][1]);
    result[0][2] = degrees(x[0][2]);
    result[1][2] = degrees(x[1][2]);
    result[2][2] = degrees(x[2][2]);
    result[3][2] = degrees(x[3][2]);
    result[0][3] = degrees(x[0][3]);
    result[1][3] = degrees(x[1][3]);
    result[2][3] = degrees(x[2][3]);
    result[3][3] = degrees(x[3][3]);
    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 SampleLevel */
native uint SampleLevel(Texture2D<uint>, sampler, float2 location, float LOD);
native uint SampleLevel(Texture2D<uint>, sampler, float2 location, float LOD, int2 offset);
native uint SampleLevel(Texture2DArray<uint>, sampler, float3 location, float LOD);
native uint SampleLevel(Texture2DArray<uint>, sampler, float3 location, float LOD, int2 offset);
native uint SampleLevel(TextureCube<uint>, sampler, float3 location, float LOD);
native uint2 SampleLevel(Texture2D<uint2>, sampler, float2 location, float LOD);
native uint2 SampleLevel(Texture2D<uint2>, sampler, float2 location, float LOD, int2 offset);
native uint2 SampleLevel(Texture2DArray<uint2>, sampler, float3 location, float LOD);
native uint2 SampleLevel(Texture2DArray<uint2>, sampler, float3 location, float LOD, int2 offset);
native uint2 SampleLevel(TextureCube<uint2>, sampler, float3 location, float LOD);
native uint3 SampleLevel(Texture2D<uint3>, sampler, float2 location, float LOD);
native uint3 SampleLevel(Texture2D<uint3>, sampler, float2 location, float LOD, int2 offset);
native uint3 SampleLevel(Texture2DArray<uint3>, sampler, float3 location, float LOD);
native uint3 SampleLevel(Texture2DArray<uint3>, sampler, float3 location, float LOD, int2 offset);
native uint3 SampleLevel(TextureCube<uint3>, sampler, float3 location, float LOD);
native uint4 SampleLevel(Texture2D<uint4>, sampler, float2 location, float LOD);
native uint4 SampleLevel(Texture2D<uint4>, sampler, float2 location, float LOD, int2 offset);
native uint4 SampleLevel(Texture2DArray<uint4>, sampler, float3 location, float LOD);
native uint4 SampleLevel(Texture2DArray<uint4>, sampler, float3 location, float LOD, int2 offset);
native uint4 SampleLevel(TextureCube<uint4>, sampler, float3 location, float LOD);
native int SampleLevel(Texture2D<int>, sampler, float2 location, float LOD);
native int SampleLevel(Texture2D<int>, sampler, float2 location, float LOD, int2 offset);
native int SampleLevel(Texture2DArray<int>, sampler, float3 location, float LOD);
native int SampleLevel(Texture2DArray<int>, sampler, float3 location, float LOD, int2 offset);
native int SampleLevel(TextureCube<int>, sampler, float3 location, float LOD);
native int2 SampleLevel(Texture2D<int2>, sampler, float2 location, float LOD);
native int2 SampleLevel(Texture2D<int2>, sampler, float2 location, float LOD, int2 offset);
native int2 SampleLevel(Texture2DArray<int2>, sampler, float3 location, float LOD);
native int2 SampleLevel(Texture2DArray<int2>, sampler, float3 location, float LOD, int2 offset);
native int2 SampleLevel(TextureCube<int2>, sampler, float3 location, float LOD);
native int3 SampleLevel(Texture2D<int3>, sampler, float2 location, float LOD);
native int3 SampleLevel(Texture2D<int3>, sampler, float2 location, float LOD, int2 offset);
native int3 SampleLevel(Texture2DArray<int3>, sampler, float3 location, float LOD);
native int3 SampleLevel(Texture2DArray<int3>, sampler, float3 location, float LOD, int2 offset);
native int3 SampleLevel(TextureCube<int3>, sampler, float3 location, float LOD);
native int4 SampleLevel(Texture2D<int4>, sampler, float2 location, float LOD);
native int4 SampleLevel(Texture2D<int4>, sampler, float2 location, float LOD, int2 offset);
native int4 SampleLevel(Texture2DArray<int4>, sampler, float3 location, float LOD);
native int4 SampleLevel(Texture2DArray<int4>, sampler, float3 location, float LOD, int2 offset);
native int4 SampleLevel(TextureCube<int4>, sampler, float3 location, float LOD);
native float SampleLevel(Texture2D<float>, sampler, float2 location, float LOD);
native float SampleLevel(Texture2D<float>, sampler, float2 location, float LOD, int2 offset);
native float SampleLevel(Texture2DArray<float>, sampler, float3 location, float LOD);
native float SampleLevel(Texture2DArray<float>, sampler, float3 location, float LOD, int2 offset);
native float SampleLevel(TextureCube<float>, sampler, float3 location, float LOD);
native float2 SampleLevel(Texture2D<float2>, sampler, float2 location, float LOD);
native float2 SampleLevel(Texture2D<float2>, sampler, float2 location, float LOD, int2 offset);
native float2 SampleLevel(Texture2DArray<float2>, sampler, float3 location, float LOD);
native float2 SampleLevel(Texture2DArray<float2>, sampler, float3 location, float LOD, int2 offset);
native float2 SampleLevel(TextureCube<float2>, sampler, float3 location, float LOD);
native float3 SampleLevel(Texture2D<float3>, sampler, float2 location, float LOD);
native float3 SampleLevel(Texture2D<float3>, sampler, float2 location, float LOD, int2 offset);
native float3 SampleLevel(Texture2DArray<float3>, sampler, float3 location, float LOD);
native float3 SampleLevel(Texture2DArray<float3>, sampler, float3 location, float LOD, int2 offset);
native float3 SampleLevel(TextureCube<float3>, sampler, float3 location, float LOD);
native float4 SampleLevel(Texture2D<float4>, sampler, float2 location, float LOD);
native float4 SampleLevel(Texture2D<float4>, sampler, float2 location, float LOD, int2 offset);
native float4 SampleLevel(Texture2DArray<float4>, sampler, float3 location, float LOD);
native float4 SampleLevel(Texture2DArray<float4>, sampler, float3 location, float LOD, int2 offset);
native float4 SampleLevel(TextureCube<float4>, sampler, float3 location, float LOD);
native float SampleLevel(TextureDepth2D<float>, sampler, float2 location, float LOD);
native float SampleLevel(TextureDepth2D<float>, sampler, float2 location, float LOD, int2 offset);
native float SampleLevel(TextureDepth2DArray<float>, sampler, float3 location, float LOD);
native float SampleLevel(TextureDepth2DArray<float>, sampler, float3 location, float LOD, int2 offset);
native float SampleLevel(TextureDepthCube<float>, sampler, float3 location, float LOD);

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

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

/* 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[1][0] = sinh(x[1][0]);
    result[0][1] = sinh(x[0][1]);
    result[1][1] = sinh(x[1][1]);
    return result;
}
float3x2 sinh(float3x2 x) {
    float3x2 result;
    result[0][0] = sinh(x[0][0]);
    result[1][0] = sinh(x[1][0]);
    result[2][0] = sinh(x[2][0]);
    result[0][1] = sinh(x[0][1]);
    result[1][1] = sinh(x[1][1]);
    result[2][1] = sinh(x[2][1]);
    return result;
}
float4x2 sinh(float4x2 x) {
    float4x2 result;
    result[0][0] = sinh(x[0][0]);
    result[1][0] = sinh(x[1][0]);
    result[2][0] = sinh(x[2][0]);
    result[3][0] = sinh(x[3][0]);
    result[0][1] = sinh(x[0][1]);
    result[1][1] = sinh(x[1][1]);
    result[2][1] = sinh(x[2][1]);
    result[3][1] = sinh(x[3][1]);
    return result;
}
float2x3 sinh(float2x3 x) {
    float2x3 result;
    result[0][0] = sinh(x[0][0]);
    result[1][0] = sinh(x[1][0]);
    result[0][1] = sinh(x[0][1]);
    result[1][1] = sinh(x[1][1]);
    result[0][2] = sinh(x[0][2]);
    result[1][2] = sinh(x[1][2]);
    return result;
}
float3x3 sinh(float3x3 x) {
    float3x3 result;
    result[0][0] = sinh(x[0][0]);
    result[1][0] = sinh(x[1][0]);
    result[2][0] = sinh(x[2][0]);
    result[0][1] = sinh(x[0][1]);
    result[1][1] = sinh(x[1][1]);
    result[2][1] = sinh(x[2][1]);
    result[0][2] = sinh(x[0][2]);
    result[1][2] = sinh(x[1][2]);
    result[2][2] = sinh(x[2][2]);
    return result;
}
float4x3 sinh(float4x3 x) {
    float4x3 result;
    result[0][0] = sinh(x[0][0]);
    result[1][0] = sinh(x[1][0]);
    result[2][0] = sinh(x[2][0]);
    result[3][0] = sinh(x[3][0]);
    result[0][1] = sinh(x[0][1]);
    result[1][1] = sinh(x[1][1]);
    result[2][1] = sinh(x[2][1]);
    result[3][1] = sinh(x[3][1]);
    result[0][2] = sinh(x[0][2]);
    result[1][2] = sinh(x[1][2]);
    result[2][2] = sinh(x[2][2]);
    result[3][2] = sinh(x[3][2]);
    return result;
}
float2x4 sinh(float2x4 x) {
    float2x4 result;
    result[0][0] = sinh(x[0][0]);
    result[1][0] = sinh(x[1][0]);
    result[0][1] = sinh(x[0][1]);
    result[1][1] = sinh(x[1][1]);
    result[0][2] = sinh(x[0][2]);
    result[1][2] = sinh(x[1][2]);
    result[0][3] = sinh(x[0][3]);
    result[1][3] = sinh(x[1][3]);
    return result;
}
float3x4 sinh(float3x4 x) {
    float3x4 result;
    result[0][0] = sinh(x[0][0]);
    result[1][0] = sinh(x[1][0]);
    result[2][0] = sinh(x[2][0]);
    result[0][1] = sinh(x[0][1]);
    result[1][1] = sinh(x[1][1]);
    result[2][1] = sinh(x[2][1]);
    result[0][2] = sinh(x[0][2]);
    result[1][2] = sinh(x[1][2]);
    result[2][2] = sinh(x[2][2]);
    result[0][3] = sinh(x[0][3]);
    result[1][3] = sinh(x[1][3]);
    result[2][3] = sinh(x[2][3]);
    return result;
}
float4x4 sinh(float4x4 x) {
    float4x4 result;
    result[0][0] = sinh(x[0][0]);
    result[1][0] = sinh(x[1][0]);
    result[2][0] = sinh(x[2][0]);
    result[3][0] = sinh(x[3][0]);
    result[0][1] = sinh(x[0][1]);
    result[1][1] = sinh(x[1][1]);
    result[2][1] = sinh(x[2][1]);
    result[3][1] = sinh(x[3][1]);
    result[0][2] = sinh(x[0][2]);
    result[1][2] = sinh(x[1][2]);
    result[2][2] = sinh(x[2][2]);
    result[3][2] = sinh(x[3][2]);
    result[0][3] = sinh(x[0][3]);
    result[1][3] = sinh(x[1][3]);
    result[2][3] = sinh(x[2][3]);
    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[1][0] = ddy(x[1][0]);
    result[0][1] = ddy(x[0][1]);
    result[1][1] = ddy(x[1][1]);
    return result;
}
float3x2 ddy(float3x2 x) {
    float3x2 result;
    result[0][0] = ddy(x[0][0]);
    result[1][0] = ddy(x[1][0]);
    result[2][0] = ddy(x[2][0]);
    result[0][1] = ddy(x[0][1]);
    result[1][1] = ddy(x[1][1]);
    result[2][1] = ddy(x[2][1]);
    return result;
}
float4x2 ddy(float4x2 x) {
    float4x2 result;
    result[0][0] = ddy(x[0][0]);
    result[1][0] = ddy(x[1][0]);
    result[2][0] = ddy(x[2][0]);
    result[3][0] = ddy(x[3][0]);
    result[0][1] = ddy(x[0][1]);
    result[1][1] = ddy(x[1][1]);
    result[2][1] = ddy(x[2][1]);
    result[3][1] = ddy(x[3][1]);
    return result;
}
float2x3 ddy(float2x3 x) {
    float2x3 result;
    result[0][0] = ddy(x[0][0]);
    result[1][0] = ddy(x[1][0]);
    result[0][1] = ddy(x[0][1]);
    result[1][1] = ddy(x[1][1]);
    result[0][2] = ddy(x[0][2]);
    result[1][2] = ddy(x[1][2]);
    return result;
}
float3x3 ddy(float3x3 x) {
    float3x3 result;
    result[0][0] = ddy(x[0][0]);
    result[1][0] = ddy(x[1][0]);
    result[2][0] = ddy(x[2][0]);
    result[0][1] = ddy(x[0][1]);
    result[1][1] = ddy(x[1][1]);
    result[2][1] = ddy(x[2][1]);
    result[0][2] = ddy(x[0][2]);
    result[1][2] = ddy(x[1][2]);
    result[2][2] = ddy(x[2][2]);
    return result;
}
float4x3 ddy(float4x3 x) {
    float4x3 result;
    result[0][0] = ddy(x[0][0]);
    result[1][0] = ddy(x[1][0]);
    result[2][0] = ddy(x[2][0]);
    result[3][0] = ddy(x[3][0]);
    result[0][1] = ddy(x[0][1]);
    result[1][1] = ddy(x[1][1]);
    result[2][1] = ddy(x[2][1]);
    result[3][1] = ddy(x[3][1]);
    result[0][2] = ddy(x[0][2]);
    result[1][2] = ddy(x[1][2]);
    result[2][2] = ddy(x[2][2]);
    result[3][2] = ddy(x[3][2]);
    return result;
}
float2x4 ddy(float2x4 x) {
    float2x4 result;
    result[0][0] = ddy(x[0][0]);
    result[1][0] = ddy(x[1][0]);
    result[0][1] = ddy(x[0][1]);
    result[1][1] = ddy(x[1][1]);
    result[0][2] = ddy(x[0][2]);
    result[1][2] = ddy(x[1][2]);
    result[0][3] = ddy(x[0][3]);
    result[1][3] = ddy(x[1][3]);
    return result;
}
float3x4 ddy(float3x4 x) {
    float3x4 result;
    result[0][0] = ddy(x[0][0]);
    result[1][0] = ddy(x[1][0]);
    result[2][0] = ddy(x[2][0]);
    result[0][1] = ddy(x[0][1]);
    result[1][1] = ddy(x[1][1]);
    result[2][1] = ddy(x[2][1]);
    result[0][2] = ddy(x[0][2]);
    result[1][2] = ddy(x[1][2]);
    result[2][2] = ddy(x[2][2]);
    result[0][3] = ddy(x[0][3]);
    result[1][3] = ddy(x[1][3]);
    result[2][3] = ddy(x[2][3]);
    return result;
}
float4x4 ddy(float4x4 x) {
    float4x4 result;
    result[0][0] = ddy(x[0][0]);
    result[1][0] = ddy(x[1][0]);
    result[2][0] = ddy(x[2][0]);
    result[3][0] = ddy(x[3][0]);
    result[0][1] = ddy(x[0][1]);
    result[1][1] = ddy(x[1][1]);
    result[2][1] = ddy(x[2][1]);
    result[3][1] = ddy(x[3][1]);
    result[0][2] = ddy(x[0][2]);
    result[1][2] = ddy(x[1][2]);
    result[2][2] = ddy(x[2][2]);
    result[3][2] = ddy(x[3][2]);
    result[0][3] = ddy(x[0][3]);
    result[1][3] = ddy(x[1][3]);
    result[2][3] = ddy(x[2][3]);
    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);
native bool2 operator>=(uint2, uint2);
native bool3 operator>=(uint3, uint3);
native bool4 operator>=(uint4, uint4);
native bool2 operator>=(int2, int2);
native bool3 operator>=(int3, int3);
native bool4 operator>=(int4, int4);
native bool2 operator>=(float2, float2);
native bool3 operator>=(float3, float3);
native bool4 operator>=(float4, float4);
native bool2x2 operator>=(float2x2, float2x2);
native bool3x2 operator>=(float3x2, float3x2);
native bool4x2 operator>=(float4x2, float4x2);
native bool2x3 operator>=(float2x3, float2x3);
native bool3x3 operator>=(float3x3, float3x3);
native bool4x3 operator>=(float4x3, float4x3);
native bool2x4 operator>=(float2x4, float2x4);
native bool3x4 operator>=(float3x4, float3x4);
native bool4x4 operator>=(float4x4, float4x4);

/* 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 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 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;
}
float3x2 asfloat(float3x2 x) {
    return x;
}
float4x2 asfloat(float4x2 x) {
    return x;
}
float2x3 asfloat(float2x3 x) {
    return x;
}
float3x3 asfloat(float3x3 x) {
    return x;
}
float4x3 asfloat(float4x3 x) {
    return x;
}
float2x4 asfloat(float2x4 x) {
    return x;
}
float3x4 asfloat(float3x4 x) {
    return x;
}
float4x4 asfloat(float4x4 x) {
    return x;
}

/* 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 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+ */
native int operator+(int, int);
native uint operator+(uint, uint);
native float operator+(float, float);
native uint2 operator+(uint2, uint2);
native uint2 operator+(uint, uint2);
native uint2 operator+(uint2, uint);
native uint3 operator+(uint3, uint3);
native uint3 operator+(uint, uint3);
native uint3 operator+(uint3, uint);
native uint4 operator+(uint4, uint4);
native uint4 operator+(uint, uint4);
native uint4 operator+(uint4, uint);
native int2 operator+(int2, int2);
native int2 operator+(int, int2);
native int2 operator+(int2, int);
native int3 operator+(int3, int3);
native int3 operator+(int, int3);
native int3 operator+(int3, int);
native int4 operator+(int4, int4);
native int4 operator+(int, int4);
native int4 operator+(int4, int);
native float2 operator+(float2, float2);
native float2 operator+(float, float2);
native float2 operator+(float2, float);
native float3 operator+(float3, float3);
native float3 operator+(float, float3);
native float3 operator+(float3, float);
native float4 operator+(float4, float4);
native float4 operator+(float, float4);
native float4 operator+(float4, float);
native float2x2 operator+(float2x2, float2x2);
native float2x2 operator+(float, float2x2);
native float2x2 operator+(float2x2, float);
native float3x2 operator+(float3x2, float3x2);
native float3x2 operator+(float, float3x2);
native float3x2 operator+(float3x2, float);
native float4x2 operator+(float4x2, float4x2);
native float4x2 operator+(float, float4x2);
native float4x2 operator+(float4x2, float);
native float2x3 operator+(float2x3, float2x3);
native float2x3 operator+(float, float2x3);
native float2x3 operator+(float2x3, float);
native float3x3 operator+(float3x3, float3x3);
native float3x3 operator+(float, float3x3);
native float3x3 operator+(float3x3, float);
native float4x3 operator+(float4x3, float4x3);
native float4x3 operator+(float, float4x3);
native float4x3 operator+(float4x3, float);
native float2x4 operator+(float2x4, float2x4);
native float2x4 operator+(float, float2x4);
native float2x4 operator+(float2x4, float);
native float3x4 operator+(float3x4, float3x4);
native float3x4 operator+(float, float3x4);
native float3x4 operator+(float3x4, float);
native float4x4 operator+(float4x4, float4x4);
native float4x4 operator+(float, float4x4);
native float4x4 operator+(float4x4, float);
native uint2 operator+(uint2);
native uint3 operator+(uint3);
native uint4 operator+(uint4);
native int2 operator+(int2);
native int3 operator+(int3);
native int4 operator+(int4);
native float2 operator+(float2);
native float3 operator+(float3);
native float4 operator+(float4);
native float2x2 operator+(float2x2);
native float3x2 operator+(float3x2);
native float4x2 operator+(float4x2);
native float2x3 operator+(float2x3);
native float3x3 operator+(float3x3);
native float4x3 operator+(float4x3);
native float2x4 operator+(float2x4);
native float3x4 operator+(float3x4);
native float4x4 operator+(float4x4);

/* 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[1][0] = frac(x[1][0]);
    result[0][1] = frac(x[0][1]);
    result[1][1] = frac(x[1][1]);
    return result;
}
float3x2 frac(float3x2 x) {
    float3x2 result;
    result[0][0] = frac(x[0][0]);
    result[1][0] = frac(x[1][0]);
    result[2][0] = frac(x[2][0]);
    result[0][1] = frac(x[0][1]);
    result[1][1] = frac(x[1][1]);
    result[2][1] = frac(x[2][1]);
    return result;
}
float4x2 frac(float4x2 x) {
    float4x2 result;
    result[0][0] = frac(x[0][0]);
    result[1][0] = frac(x[1][0]);
    result[2][0] = frac(x[2][0]);
    result[3][0] = frac(x[3][0]);
    result[0][1] = frac(x[0][1]);
    result[1][1] = frac(x[1][1]);
    result[2][1] = frac(x[2][1]);
    result[3][1] = frac(x[3][1]);
    return result;
}
float2x3 frac(float2x3 x) {
    float2x3 result;
    result[0][0] = frac(x[0][0]);
    result[1][0] = frac(x[1][0]);
    result[0][1] = frac(x[0][1]);
    result[1][1] = frac(x[1][1]);
    result[0][2] = frac(x[0][2]);
    result[1][2] = frac(x[1][2]);
    return result;
}
float3x3 frac(float3x3 x) {
    float3x3 result;
    result[0][0] = frac(x[0][0]);
    result[1][0] = frac(x[1][0]);
    result[2][0] = frac(x[2][0]);
    result[0][1] = frac(x[0][1]);
    result[1][1] = frac(x[1][1]);
    result[2][1] = frac(x[2][1]);
    result[0][2] = frac(x[0][2]);
    result[1][2] = frac(x[1][2]);
    result[2][2] = frac(x[2][2]);
    return result;
}
float4x3 frac(float4x3 x) {
    float4x3 result;
    result[0][0] = frac(x[0][0]);
    result[1][0] = frac(x[1][0]);
    result[2][0] = frac(x[2][0]);
    result[3][0] = frac(x[3][0]);
    result[0][1] = frac(x[0][1]);
    result[1][1] = frac(x[1][1]);
    result[2][1] = frac(x[2][1]);
    result[3][1] = frac(x[3][1]);
    result[0][2] = frac(x[0][2]);
    result[1][2] = frac(x[1][2]);
    result[2][2] = frac(x[2][2]);
    result[3][2] = frac(x[3][2]);
    return result;
}
float2x4 frac(float2x4 x) {
    float2x4 result;
    result[0][0] = frac(x[0][0]);
    result[1][0] = frac(x[1][0]);
    result[0][1] = frac(x[0][1]);
    result[1][1] = frac(x[1][1]);
    result[0][2] = frac(x[0][2]);
    result[1][2] = frac(x[1][2]);
    result[0][3] = frac(x[0][3]);
    result[1][3] = frac(x[1][3]);
    return result;
}
float3x4 frac(float3x4 x) {
    float3x4 result;
    result[0][0] = frac(x[0][0]);
    result[1][0] = frac(x[1][0]);
    result[2][0] = frac(x[2][0]);
    result[0][1] = frac(x[0][1]);
    result[1][1] = frac(x[1][1]);
    result[2][1] = frac(x[2][1]);
    result[0][2] = frac(x[0][2]);
    result[1][2] = frac(x[1][2]);
    result[2][2] = frac(x[2][2]);
    result[0][3] = frac(x[0][3]);
    result[1][3] = frac(x[1][3]);
    result[2][3] = frac(x[2][3]);
    return result;
}
float4x4 frac(float4x4 x) {
    float4x4 result;
    result[0][0] = frac(x[0][0]);
    result[1][0] = frac(x[1][0]);
    result[2][0] = frac(x[2][0]);
    result[3][0] = frac(x[3][0]);
    result[0][1] = frac(x[0][1]);
    result[1][1] = frac(x[1][1]);
    result[2][1] = frac(x[2][1]);
    result[3][1] = frac(x[3][1]);
    result[0][2] = frac(x[0][2]);
    result[1][2] = frac(x[1][2]);
    result[2][2] = frac(x[2][2]);
    result[3][2] = frac(x[3][2]);
    result[0][3] = frac(x[0][3]);
    result[1][3] = frac(x[1][3]);
    result[2][3] = frac(x[2][3]);
    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 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 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[1][0] = log10(x[1][0]);
    result[0][1] = log10(x[0][1]);
    result[1][1] = log10(x[1][1]);
    return result;
}
float3x2 log10(float3x2 x) {
    float3x2 result;
    result[0][0] = log10(x[0][0]);
    result[1][0] = log10(x[1][0]);
    result[2][0] = log10(x[2][0]);
    result[0][1] = log10(x[0][1]);
    result[1][1] = log10(x[1][1]);
    result[2][1] = log10(x[2][1]);
    return result;
}
float4x2 log10(float4x2 x) {
    float4x2 result;
    result[0][0] = log10(x[0][0]);
    result[1][0] = log10(x[1][0]);
    result[2][0] = log10(x[2][0]);
    result[3][0] = log10(x[3][0]);
    result[0][1] = log10(x[0][1]);
    result[1][1] = log10(x[1][1]);
    result[2][1] = log10(x[2][1]);
    result[3][1] = log10(x[3][1]);
    return result;
}
float2x3 log10(float2x3 x) {
    float2x3 result;
    result[0][0] = log10(x[0][0]);
    result[1][0] = log10(x[1][0]);
    result[0][1] = log10(x[0][1]);
    result[1][1] = log10(x[1][1]);
    result[0][2] = log10(x[0][2]);
    result[1][2] = log10(x[1][2]);
    return result;
}
float3x3 log10(float3x3 x) {
    float3x3 result;
    result[0][0] = log10(x[0][0]);
    result[1][0] = log10(x[1][0]);
    result[2][0] = log10(x[2][0]);
    result[0][1] = log10(x[0][1]);
    result[1][1] = log10(x[1][1]);
    result[2][1] = log10(x[2][1]);
    result[0][2] = log10(x[0][2]);
    result[1][2] = log10(x[1][2]);
    result[2][2] = log10(x[2][2]);
    return result;
}
float4x3 log10(float4x3 x) {
    float4x3 result;
    result[0][0] = log10(x[0][0]);
    result[1][0] = log10(x[1][0]);
    result[2][0] = log10(x[2][0]);
    result[3][0] = log10(x[3][0]);
    result[0][1] = log10(x[0][1]);
    result[1][1] = log10(x[1][1]);
    result[2][1] = log10(x[2][1]);
    result[3][1] = log10(x[3][1]);
    result[0][2] = log10(x[0][2]);
    result[1][2] = log10(x[1][2]);
    result[2][2] = log10(x[2][2]);
    result[3][2] = log10(x[3][2]);
    return result;
}
float2x4 log10(float2x4 x) {
    float2x4 result;
    result[0][0] = log10(x[0][0]);
    result[1][0] = log10(x[1][0]);
    result[0][1] = log10(x[0][1]);
    result[1][1] = log10(x[1][1]);
    result[0][2] = log10(x[0][2]);
    result[1][2] = log10(x[1][2]);
    result[0][3] = log10(x[0][3]);
    result[1][3] = log10(x[1][3]);
    return result;
}
float3x4 log10(float3x4 x) {
    float3x4 result;
    result[0][0] = log10(x[0][0]);
    result[1][0] = log10(x[1][0]);
    result[2][0] = log10(x[2][0]);
    result[0][1] = log10(x[0][1]);
    result[1][1] = log10(x[1][1]);
    result[2][1] = log10(x[2][1]);
    result[0][2] = log10(x[0][2]);
    result[1][2] = log10(x[1][2]);
    result[2][2] = log10(x[2][2]);
    result[0][3] = log10(x[0][3]);
    result[1][3] = log10(x[1][3]);
    result[2][3] = log10(x[2][3]);
    return result;
}
float4x4 log10(float4x4 x) {
    float4x4 result;
    result[0][0] = log10(x[0][0]);
    result[1][0] = log10(x[1][0]);
    result[2][0] = log10(x[2][0]);
    result[3][0] = log10(x[3][0]);
    result[0][1] = log10(x[0][1]);
    result[1][1] = log10(x[1][1]);
    result[2][1] = log10(x[2][1]);
    result[3][1] = log10(x[3][1]);
    result[0][2] = log10(x[0][2]);
    result[1][2] = log10(x[1][2]);
    result[2][2] = log10(x[2][2]);
    result[3][2] = log10(x[3][2]);
    result[0][3] = log10(x[0][3]);
    result[1][3] = log10(x[1][3]);
    result[2][3] = log10(x[2][3]);
    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);
native uint2 operator/(uint2, uint2);
native uint2 operator/(uint2, uint);
native uint2 operator/(uint, uint2);
native uint3 operator/(uint3, uint3);
native uint3 operator/(uint3, uint);
native uint3 operator/(uint, uint3);
native uint4 operator/(uint4, uint4);
native uint4 operator/(uint4, uint);
native uint4 operator/(uint, uint4);
native int2 operator/(int2, int2);
native int2 operator/(int2, int);
native int2 operator/(int, int2);
native int3 operator/(int3, int3);
native int3 operator/(int3, int);
native int3 operator/(int, int3);
native int4 operator/(int4, int4);
native int4 operator/(int4, int);
native int4 operator/(int, int4);
native float2 operator/(float2, float2);
native float2 operator/(float2, float);
native float2 operator/(float, float2);
native float3 operator/(float3, float3);
native float3 operator/(float3, float);
native float3 operator/(float, float3);
native float4 operator/(float4, float4);
native float4 operator/(float4, float);
native float4 operator/(float, float4);
native float2x2 operator/(float2x2, float2x2);
native float2x2 operator/(float2x2, float);
native float2x2 operator/(float, float2x2);
native float3x2 operator/(float3x2, float3x2);
native float3x2 operator/(float3x2, float);
native float3x2 operator/(float, float3x2);
native float4x2 operator/(float4x2, float4x2);
native float4x2 operator/(float4x2, float);
native float4x2 operator/(float, float4x2);
native float2x3 operator/(float2x3, float2x3);
native float2x3 operator/(float2x3, float);
native float2x3 operator/(float, float2x3);
native float3x3 operator/(float3x3, float3x3);
native float3x3 operator/(float3x3, float);
native float3x3 operator/(float, float3x3);
native float4x3 operator/(float4x3, float4x3);
native float4x3 operator/(float4x3, float);
native float4x3 operator/(float, float4x3);
native float2x4 operator/(float2x4, float2x4);
native float2x4 operator/(float2x4, float);
native float2x4 operator/(float, float2x4);
native float3x4 operator/(float3x4, float3x4);
native float3x4 operator/(float3x4, float);
native float3x4 operator/(float, float3x4);
native float4x4 operator/(float4x4, float4x4);
native float4x4 operator/(float4x4, float);
native float4x4 operator/(float, float4x4);

/* 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[1][0] = ddy_fine(x[1][0]);
    result[0][1] = ddy_fine(x[0][1]);
    result[1][1] = ddy_fine(x[1][1]);
    return result;
}
float3x2 ddy_fine(float3x2 x) {
    float3x2 result;
    result[0][0] = ddy_fine(x[0][0]);
    result[1][0] = ddy_fine(x[1][0]);
    result[2][0] = ddy_fine(x[2][0]);
    result[0][1] = ddy_fine(x[0][1]);
    result[1][1] = ddy_fine(x[1][1]);
    result[2][1] = ddy_fine(x[2][1]);
    return result;
}
float4x2 ddy_fine(float4x2 x) {
    float4x2 result;
    result[0][0] = ddy_fine(x[0][0]);
    result[1][0] = ddy_fine(x[1][0]);
    result[2][0] = ddy_fine(x[2][0]);
    result[3][0] = ddy_fine(x[3][0]);
    result[0][1] = ddy_fine(x[0][1]);
    result[1][1] = ddy_fine(x[1][1]);
    result[2][1] = ddy_fine(x[2][1]);
    result[3][1] = ddy_fine(x[3][1]);
    return result;
}
float2x3 ddy_fine(float2x3 x) {
    float2x3 result;
    result[0][0] = ddy_fine(x[0][0]);
    result[1][0] = ddy_fine(x[1][0]);
    result[0][1] = ddy_fine(x[0][1]);
    result[1][1] = ddy_fine(x[1][1]);
    result[0][2] = ddy_fine(x[0][2]);
    result[1][2] = ddy_fine(x[1][2]);
    return result;
}
float3x3 ddy_fine(float3x3 x) {
    float3x3 result;
    result[0][0] = ddy_fine(x[0][0]);
    result[1][0] = ddy_fine(x[1][0]);
    result[2][0] = ddy_fine(x[2][0]);
    result[0][1] = ddy_fine(x[0][1]);
    result[1][1] = ddy_fine(x[1][1]);
    result[2][1] = ddy_fine(x[2][1]);
    result[0][2] = ddy_fine(x[0][2]);
    result[1][2] = ddy_fine(x[1][2]);
    result[2][2] = ddy_fine(x[2][2]);
    return result;
}
float4x3 ddy_fine(float4x3 x) {
    float4x3 result;
    result[0][0] = ddy_fine(x[0][0]);
    result[1][0] = ddy_fine(x[1][0]);
    result[2][0] = ddy_fine(x[2][0]);
    result[3][0] = ddy_fine(x[3][0]);
    result[0][1] = ddy_fine(x[0][1]);
    result[1][1] = ddy_fine(x[1][1]);
    result[2][1] = ddy_fine(x[2][1]);
    result[3][1] = ddy_fine(x[3][1]);
    result[0][2] = ddy_fine(x[0][2]);
    result[1][2] = ddy_fine(x[1][2]);
    result[2][2] = ddy_fine(x[2][2]);
    result[3][2] = ddy_fine(x[3][2]);
    return result;
}
float2x4 ddy_fine(float2x4 x) {
    float2x4 result;
    result[0][0] = ddy_fine(x[0][0]);
    result[1][0] = ddy_fine(x[1][0]);
    result[0][1] = ddy_fine(x[0][1]);
    result[1][1] = ddy_fine(x[1][1]);
    result[0][2] = ddy_fine(x[0][2]);
    result[1][2] = ddy_fine(x[1][2]);
    result[0][3] = ddy_fine(x[0][3]);
    result[1][3] = ddy_fine(x[1][3]);
    return result;
}
float3x4 ddy_fine(float3x4 x) {
    float3x4 result;
    result[0][0] = ddy_fine(x[0][0]);
    result[1][0] = ddy_fine(x[1][0]);
    result[2][0] = ddy_fine(x[2][0]);
    result[0][1] = ddy_fine(x[0][1]);
    result[1][1] = ddy_fine(x[1][1]);
    result[2][1] = ddy_fine(x[2][1]);
    result[0][2] = ddy_fine(x[0][2]);
    result[1][2] = ddy_fine(x[1][2]);
    result[2][2] = ddy_fine(x[2][2]);
    result[0][3] = ddy_fine(x[0][3]);
    result[1][3] = ddy_fine(x[1][3]);
    result[2][3] = ddy_fine(x[2][3]);
    return result;
}
float4x4 ddy_fine(float4x4 x) {
    float4x4 result;
    result[0][0] = ddy_fine(x[0][0]);
    result[1][0] = ddy_fine(x[1][0]);
    result[2][0] = ddy_fine(x[2][0]);
    result[3][0] = ddy_fine(x[3][0]);
    result[0][1] = ddy_fine(x[0][1]);
    result[1][1] = ddy_fine(x[1][1]);
    result[2][1] = ddy_fine(x[2][1]);
    result[3][1] = ddy_fine(x[3][1]);
    result[0][2] = ddy_fine(x[0][2]);
    result[1][2] = ddy_fine(x[1][2]);
    result[2][2] = ddy_fine(x[2][2]);
    result[3][2] = ddy_fine(x[3][2]);
    result[0][3] = ddy_fine(x[0][3]);
    result[1][3] = ddy_fine(x[1][3]);
    result[2][3] = ddy_fine(x[2][3]);
    result[3][3] = ddy_fine(x[3][3]);
    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[1][0] != 0);
    result = result || (x[0][1] != 0);
    result = result || (x[1][1] != 0);
    return result;
}
bool any(float3x2 x) {
    bool result = false;
    result = result || (x[0][0] != 0);
    result = result || (x[1][0] != 0);
    result = result || (x[2][0] != 0);
    result = result || (x[0][1] != 0);
    result = result || (x[1][1] != 0);
    result = result || (x[2][1] != 0);
    return result;
}
bool any(float4x2 x) {
    bool result = false;
    result = result || (x[0][0] != 0);
    result = result || (x[1][0] != 0);
    result = result || (x[2][0] != 0);
    result = result || (x[3][0] != 0);
    result = result || (x[0][1] != 0);
    result = result || (x[1][1] != 0);
    result = result || (x[2][1] != 0);
    result = result || (x[3][1] != 0);
    return result;
}
bool any(float2x3 x) {
    bool result = false;
    result = result || (x[0][0] != 0);
    result = result || (x[1][0] != 0);
    result = result || (x[0][1] != 0);
    result = result || (x[1][1] != 0);
    result = result || (x[0][2] != 0);
    result = result || (x[1][2] != 0);
    return result;
}
bool any(float3x3 x) {
    bool result = false;
    result = result || (x[0][0] != 0);
    result = result || (x[1][0] != 0);
    result = result || (x[2][0] != 0);
    result = result || (x[0][1] != 0);
    result = result || (x[1][1] != 0);
    result = result || (x[2][1] != 0);
    result = result || (x[0][2] != 0);
    result = result || (x[1][2] != 0);
    result = result || (x[2][2] != 0);
    return result;
}
bool any(float4x3 x) {
    bool result = false;
    result = result || (x[0][0] != 0);
    result = result || (x[1][0] != 0);
    result = result || (x[2][0] != 0);
    result = result || (x[3][0] != 0);
    result = result || (x[0][1] != 0);
    result = result || (x[1][1] != 0);
    result = result || (x[2][1] != 0);
    result = result || (x[3][1] != 0);
    result = result || (x[0][2] != 0);
    result = result || (x[1][2] != 0);
    result = result || (x[2][2] != 0);
    result = result || (x[3][2] != 0);
    return result;
}
bool any(float2x4 x) {
    bool result = false;
    result = result || (x[0][0] != 0);
    result = result || (x[1][0] != 0);
    result = result || (x[0][1] != 0);
    result = result || (x[1][1] != 0);
    result = result || (x[0][2] != 0);
    result = result || (x[1][2] != 0);
    result = result || (x[0][3] != 0);
    result = result || (x[1][3] != 0);
    return result;
}
bool any(float3x4 x) {
    bool result = false;
    result = result || (x[0][0] != 0);
    result = result || (x[1][0] != 0);
    result = result || (x[2][0] != 0);
    result = result || (x[0][1] != 0);
    result = result || (x[1][1] != 0);
    result = result || (x[2][1] != 0);
    result = result || (x[0][2] != 0);
    result = result || (x[1][2] != 0);
    result = result || (x[2][2] != 0);
    result = result || (x[0][3] != 0);
    result = result || (x[1][3] != 0);
    result = result || (x[2][3] != 0);
    return result;
}
bool any(float4x4 x) {
    bool result = false;
    result = result || (x[0][0] != 0);
    result = result || (x[1][0] != 0);
    result = result || (x[2][0] != 0);
    result = result || (x[3][0] != 0);
    result = result || (x[0][1] != 0);
    result = result || (x[1][1] != 0);
    result = result || (x[2][1] != 0);
    result = result || (x[3][1] != 0);
    result = result || (x[0][2] != 0);
    result = result || (x[1][2] != 0);
    result = result || (x[2][2] != 0);
    result = result || (x[3][2] != 0);
    result = result || (x[0][3] != 0);
    result = result || (x[1][3] != 0);
    result = result || (x[2][3] != 0);
    result = result || (x[3][3] != 0);
    return result;
}
bool any(bool2x2 x) {
    bool result = false;
    result = result || x[0][0];
    result = result || x[1][0];
    result = result || x[0][1];
    result = result || x[1][1];
    return result;
}
bool any(bool3x2 x) {
    bool result = false;
    result = result || x[0][0];
    result = result || x[1][0];
    result = result || x[2][0];
    result = result || x[0][1];
    result = result || x[1][1];
    result = result || x[2][1];
    return result;
}
bool any(bool4x2 x) {
    bool result = false;
    result = result || x[0][0];
    result = result || x[1][0];
    result = result || x[2][0];
    result = result || x[3][0];
    result = result || x[0][1];
    result = result || x[1][1];
    result = result || x[2][1];
    result = result || x[3][1];
    return result;
}
bool any(bool2x3 x) {
    bool result = false;
    result = result || x[0][0];
    result = result || x[1][0];
    result = result || x[0][1];
    result = result || x[1][1];
    result = result || x[0][2];
    result = result || x[1][2];
    return result;
}
bool any(bool3x3 x) {
    bool result = false;
    result = result || x[0][0];
    result = result || x[1][0];
    result = result || x[2][0];
    result = result || x[0][1];
    result = result || x[1][1];
    result = result || x[2][1];
    result = result || x[0][2];
    result = result || x[1][2];
    result = result || x[2][2];
    return result;
}
bool any(bool4x3 x) {
    bool result = false;
    result = result || x[0][0];
    result = result || x[1][0];
    result = result || x[2][0];
    result = result || x[3][0];
    result = result || x[0][1];
    result = result || x[1][1];
    result = result || x[2][1];
    result = result || x[3][1];
    result = result || x[0][2];
    result = result || x[1][2];
    result = result || x[2][2];
    result = result || x[3][2];
    return result;
}
bool any(bool2x4 x) {
    bool result = false;
    result = result || x[0][0];
    result = result || x[1][0];
    result = result || x[0][1];
    result = result || x[1][1];
    result = result || x[0][2];
    result = result || x[1][2];
    result = result || x[0][3];
    result = result || x[1][3];
    return result;
}
bool any(bool3x4 x) {
    bool result = false;
    result = result || x[0][0];
    result = result || x[1][0];
    result = result || x[2][0];
    result = result || x[0][1];
    result = result || x[1][1];
    result = result || x[2][1];
    result = result || x[0][2];
    result = result || x[1][2];
    result = result || x[2][2];
    result = result || x[0][3];
    result = result || x[1][3];
    result = result || x[2][3];
    return result;
}
bool any(bool4x4 x) {
    bool result = false;
    result = result || x[0][0];
    result = result || x[1][0];
    result = result || x[2][0];
    result = result || x[3][0];
    result = result || x[0][1];
    result = result || x[1][1];
    result = result || x[2][1];
    result = result || x[3][1];
    result = result || x[0][2];
    result = result || x[1][2];
    result = result || x[2][2];
    result = result || x[3][2];
    result = result || x[0][3];
    result = result || x[1][3];
    result = result || x[2][3];
    result = result || x[3][3];
    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[1][0] = ddy_coarse(x[1][0]);
    result[0][1] = ddy_coarse(x[0][1]);
    result[1][1] = ddy_coarse(x[1][1]);
    return result;
}
float3x2 ddy_coarse(float3x2 x) {
    float3x2 result;
    result[0][0] = ddy_coarse(x[0][0]);
    result[1][0] = ddy_coarse(x[1][0]);
    result[2][0] = ddy_coarse(x[2][0]);
    result[0][1] = ddy_coarse(x[0][1]);
    result[1][1] = ddy_coarse(x[1][1]);
    result[2][1] = ddy_coarse(x[2][1]);
    return result;
}
float4x2 ddy_coarse(float4x2 x) {
    float4x2 result;
    result[0][0] = ddy_coarse(x[0][0]);
    result[1][0] = ddy_coarse(x[1][0]);
    result[2][0] = ddy_coarse(x[2][0]);
    result[3][0] = ddy_coarse(x[3][0]);
    result[0][1] = ddy_coarse(x[0][1]);
    result[1][1] = ddy_coarse(x[1][1]);
    result[2][1] = ddy_coarse(x[2][1]);
    result[3][1] = ddy_coarse(x[3][1]);
    return result;
}
float2x3 ddy_coarse(float2x3 x) {
    float2x3 result;
    result[0][0] = ddy_coarse(x[0][0]);
    result[1][0] = ddy_coarse(x[1][0]);
    result[0][1] = ddy_coarse(x[0][1]);
    result[1][1] = ddy_coarse(x[1][1]);
    result[0][2] = ddy_coarse(x[0][2]);
    result[1][2] = ddy_coarse(x[1][2]);
    return result;
}
float3x3 ddy_coarse(float3x3 x) {
    float3x3 result;
    result[0][0] = ddy_coarse(x[0][0]);
    result[1][0] = ddy_coarse(x[1][0]);
    result[2][0] = ddy_coarse(x[2][0]);
    result[0][1] = ddy_coarse(x[0][1]);
    result[1][1] = ddy_coarse(x[1][1]);
    result[2][1] = ddy_coarse(x[2][1]);
    result[0][2] = ddy_coarse(x[0][2]);
    result[1][2] = ddy_coarse(x[1][2]);
    result[2][2] = ddy_coarse(x[2][2]);
    return result;
}
float4x3 ddy_coarse(float4x3 x) {
    float4x3 result;
    result[0][0] = ddy_coarse(x[0][0]);
    result[1][0] = ddy_coarse(x[1][0]);
    result[2][0] = ddy_coarse(x[2][0]);
    result[3][0] = ddy_coarse(x[3][0]);
    result[0][1] = ddy_coarse(x[0][1]);
    result[1][1] = ddy_coarse(x[1][1]);
    result[2][1] = ddy_coarse(x[2][1]);
    result[3][1] = ddy_coarse(x[3][1]);
    result[0][2] = ddy_coarse(x[0][2]);
    result[1][2] = ddy_coarse(x[1][2]);
    result[2][2] = ddy_coarse(x[2][2]);
    result[3][2] = ddy_coarse(x[3][2]);
    return result;
}
float2x4 ddy_coarse(float2x4 x) {
    float2x4 result;
    result[0][0] = ddy_coarse(x[0][0]);
    result[1][0] = ddy_coarse(x[1][0]);
    result[0][1] = ddy_coarse(x[0][1]);
    result[1][1] = ddy_coarse(x[1][1]);
    result[0][2] = ddy_coarse(x[0][2]);
    result[1][2] = ddy_coarse(x[1][2]);
    result[0][3] = ddy_coarse(x[0][3]);
    result[1][3] = ddy_coarse(x[1][3]);
    return result;
}
float3x4 ddy_coarse(float3x4 x) {
    float3x4 result;
    result[0][0] = ddy_coarse(x[0][0]);
    result[1][0] = ddy_coarse(x[1][0]);
    result[2][0] = ddy_coarse(x[2][0]);
    result[0][1] = ddy_coarse(x[0][1]);
    result[1][1] = ddy_coarse(x[1][1]);
    result[2][1] = ddy_coarse(x[2][1]);
    result[0][2] = ddy_coarse(x[0][2]);
    result[1][2] = ddy_coarse(x[1][2]);
    result[2][2] = ddy_coarse(x[2][2]);
    result[0][3] = ddy_coarse(x[0][3]);
    result[1][3] = ddy_coarse(x[1][3]);
    result[2][3] = ddy_coarse(x[2][3]);
    return result;
}
float4x4 ddy_coarse(float4x4 x) {
    float4x4 result;
    result[0][0] = ddy_coarse(x[0][0]);
    result[1][0] = ddy_coarse(x[1][0]);
    result[2][0] = ddy_coarse(x[2][0]);
    result[3][0] = ddy_coarse(x[3][0]);
    result[0][1] = ddy_coarse(x[0][1]);
    result[1][1] = ddy_coarse(x[1][1]);
    result[2][1] = ddy_coarse(x[2][1]);
    result[3][1] = ddy_coarse(x[3][1]);
    result[0][2] = ddy_coarse(x[0][2]);
    result[1][2] = ddy_coarse(x[1][2]);
    result[2][2] = ddy_coarse(x[2][2]);
    result[3][2] = ddy_coarse(x[3][2]);
    result[0][3] = ddy_coarse(x[0][3]);
    result[1][3] = ddy_coarse(x[1][3]);
    result[2][3] = ddy_coarse(x[2][3]);
    result[3][3] = ddy_coarse(x[3][3]);
    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~ */
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[1][0] = ddx(x[1][0]);
    result[0][1] = ddx(x[0][1]);
    result[1][1] = ddx(x[1][1]);
    return result;
}
float3x2 ddx(float3x2 x) {
    float3x2 result;
    result[0][0] = ddx(x[0][0]);
    result[1][0] = ddx(x[1][0]);
    result[2][0] = ddx(x[2][0]);
    result[0][1] = ddx(x[0][1]);
    result[1][1] = ddx(x[1][1]);
    result[2][1] = ddx(x[2][1]);
    return result;
}
float4x2 ddx(float4x2 x) {
    float4x2 result;
    result[0][0] = ddx(x[0][0]);
    result[1][0] = ddx(x[1][0]);
    result[2][0] = ddx(x[2][0]);
    result[3][0] = ddx(x[3][0]);
    result[0][1] = ddx(x[0][1]);
    result[1][1] = ddx(x[1][1]);
    result[2][1] = ddx(x[2][1]);
    result[3][1] = ddx(x[3][1]);
    return result;
}
float2x3 ddx(float2x3 x) {
    float2x3 result;
    result[0][0] = ddx(x[0][0]);
    result[1][0] = ddx(x[1][0]);
    result[0][1] = ddx(x[0][1]);
    result[1][1] = ddx(x[1][1]);
    result[0][2] = ddx(x[0][2]);
    result[1][2] = ddx(x[1][2]);
    return result;
}
float3x3 ddx(float3x3 x) {
    float3x3 result;
    result[0][0] = ddx(x[0][0]);
    result[1][0] = ddx(x[1][0]);
    result[2][0] = ddx(x[2][0]);
    result[0][1] = ddx(x[0][1]);
    result[1][1] = ddx(x[1][1]);
    result[2][1] = ddx(x[2][1]);
    result[0][2] = ddx(x[0][2]);
    result[1][2] = ddx(x[1][2]);
    result[2][2] = ddx(x[2][2]);
    return result;
}
float4x3 ddx(float4x3 x) {
    float4x3 result;
    result[0][0] = ddx(x[0][0]);
    result[1][0] = ddx(x[1][0]);
    result[2][0] = ddx(x[2][0]);
    result[3][0] = ddx(x[3][0]);
    result[0][1] = ddx(x[0][1]);
    result[1][1] = ddx(x[1][1]);
    result[2][1] = ddx(x[2][1]);
    result[3][1] = ddx(x[3][1]);
    result[0][2] = ddx(x[0][2]);
    result[1][2] = ddx(x[1][2]);
    result[2][2] = ddx(x[2][2]);
    result[3][2] = ddx(x[3][2]);
    return result;
}
float2x4 ddx(float2x4 x) {
    float2x4 result;
    result[0][0] = ddx(x[0][0]);
    result[1][0] = ddx(x[1][0]);
    result[0][1] = ddx(x[0][1]);
    result[1][1] = ddx(x[1][1]);
    result[0][2] = ddx(x[0][2]);
    result[1][2] = ddx(x[1][2]);
    result[0][3] = ddx(x[0][3]);
    result[1][3] = ddx(x[1][3]);
    return result;
}
float3x4 ddx(float3x4 x) {
    float3x4 result;
    result[0][0] = ddx(x[0][0]);
    result[1][0] = ddx(x[1][0]);
    result[2][0] = ddx(x[2][0]);
    result[0][1] = ddx(x[0][1]);
    result[1][1] = ddx(x[1][1]);
    result[2][1] = ddx(x[2][1]);
    result[0][2] = ddx(x[0][2]);
    result[1][2] = ddx(x[1][2]);
    result[2][2] = ddx(x[2][2]);
    result[0][3] = ddx(x[0][3]);
    result[1][3] = ddx(x[1][3]);
    result[2][3] = ddx(x[2][3]);
    return result;
}
float4x4 ddx(float4x4 x) {
    float4x4 result;
    result[0][0] = ddx(x[0][0]);
    result[1][0] = ddx(x[1][0]);
    result[2][0] = ddx(x[2][0]);
    result[3][0] = ddx(x[3][0]);
    result[0][1] = ddx(x[0][1]);
    result[1][1] = ddx(x[1][1]);
    result[2][1] = ddx(x[2][1]);
    result[3][1] = ddx(x[3][1]);
    result[0][2] = ddx(x[0][2]);
    result[1][2] = ddx(x[1][2]);
    result[2][2] = ddx(x[2][2]);
    result[3][2] = ddx(x[3][2]);
    result[0][3] = ddx(x[0][3]);
    result[1][3] = ddx(x[1][3]);
    result[2][3] = ddx(x[2][3]);
    result[3][3] = ddx(x[3][3]);
    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[1][0] = cosh(x[1][0]);
    result[0][1] = cosh(x[0][1]);
    result[1][1] = cosh(x[1][1]);
    return result;
}
float3x2 cosh(float3x2 x) {
    float3x2 result;
    result[0][0] = cosh(x[0][0]);
    result[1][0] = cosh(x[1][0]);
    result[2][0] = cosh(x[2][0]);
    result[0][1] = cosh(x[0][1]);
    result[1][1] = cosh(x[1][1]);
    result[2][1] = cosh(x[2][1]);
    return result;
}
float4x2 cosh(float4x2 x) {
    float4x2 result;
    result[0][0] = cosh(x[0][0]);
    result[1][0] = cosh(x[1][0]);
    result[2][0] = cosh(x[2][0]);
    result[3][0] = cosh(x[3][0]);
    result[0][1] = cosh(x[0][1]);
    result[1][1] = cosh(x[1][1]);
    result[2][1] = cosh(x[2][1]);
    result[3][1] = cosh(x[3][1]);
    return result;
}
float2x3 cosh(float2x3 x) {
    float2x3 result;
    result[0][0] = cosh(x[0][0]);
    result[1][0] = cosh(x[1][0]);
    result[0][1] = cosh(x[0][1]);
    result[1][1] = cosh(x[1][1]);
    result[0][2] = cosh(x[0][2]);
    result[1][2] = cosh(x[1][2]);
    return result;
}
float3x3 cosh(float3x3 x) {
    float3x3 result;
    result[0][0] = cosh(x[0][0]);
    result[1][0] = cosh(x[1][0]);
    result[2][0] = cosh(x[2][0]);
    result[0][1] = cosh(x[0][1]);
    result[1][1] = cosh(x[1][1]);
    result[2][1] = cosh(x[2][1]);
    result[0][2] = cosh(x[0][2]);
    result[1][2] = cosh(x[1][2]);
    result[2][2] = cosh(x[2][2]);
    return result;
}
float4x3 cosh(float4x3 x) {
    float4x3 result;
    result[0][0] = cosh(x[0][0]);
    result[1][0] = cosh(x[1][0]);
    result[2][0] = cosh(x[2][0]);
    result[3][0] = cosh(x[3][0]);
    result[0][1] = cosh(x[0][1]);
    result[1][1] = cosh(x[1][1]);
    result[2][1] = cosh(x[2][1]);
    result[3][1] = cosh(x[3][1]);
    result[0][2] = cosh(x[0][2]);
    result[1][2] = cosh(x[1][2]);
    result[2][2] = cosh(x[2][2]);
    result[3][2] = cosh(x[3][2]);
    return result;
}
float2x4 cosh(float2x4 x) {
    float2x4 result;
    result[0][0] = cosh(x[0][0]);
    result[1][0] = cosh(x[1][0]);
    result[0][1] = cosh(x[0][1]);
    result[1][1] = cosh(x[1][1]);
    result[0][2] = cosh(x[0][2]);
    result[1][2] = cosh(x[1][2]);
    result[0][3] = cosh(x[0][3]);
    result[1][3] = cosh(x[1][3]);
    return result;
}
float3x4 cosh(float3x4 x) {
    float3x4 result;
    result[0][0] = cosh(x[0][0]);
    result[1][0] = cosh(x[1][0]);
    result[2][0] = cosh(x[2][0]);
    result[0][1] = cosh(x[0][1]);
    result[1][1] = cosh(x[1][1]);
    result[2][1] = cosh(x[2][1]);
    result[0][2] = cosh(x[0][2]);
    result[1][2] = cosh(x[1][2]);
    result[2][2] = cosh(x[2][2]);
    result[0][3] = cosh(x[0][3]);
    result[1][3] = cosh(x[1][3]);
    result[2][3] = cosh(x[2][3]);
    return result;
}
float4x4 cosh(float4x4 x) {
    float4x4 result;
    result[0][0] = cosh(x[0][0]);
    result[1][0] = cosh(x[1][0]);
    result[2][0] = cosh(x[2][0]);
    result[3][0] = cosh(x[3][0]);
    result[0][1] = cosh(x[0][1]);
    result[1][1] = cosh(x[1][1]);
    result[2][1] = cosh(x[2][1]);
    result[3][1] = cosh(x[3][1]);
    result[0][2] = cosh(x[0][2]);
    result[1][2] = cosh(x[1][2]);
    result[2][2] = cosh(x[2][2]);
    result[3][2] = cosh(x[3][2]);
    result[0][3] = cosh(x[0][3]);
    result[1][3] = cosh(x[1][3]);
    result[2][3] = cosh(x[2][3]);
    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[1][0] = ddx_coarse(x[1][0]);
    result[0][1] = ddx_coarse(x[0][1]);
    result[1][1] = ddx_coarse(x[1][1]);
    return result;
}
float3x2 ddx_coarse(float3x2 x) {
    float3x2 result;
    result[0][0] = ddx_coarse(x[0][0]);
    result[1][0] = ddx_coarse(x[1][0]);
    result[2][0] = ddx_coarse(x[2][0]);
    result[0][1] = ddx_coarse(x[0][1]);
    result[1][1] = ddx_coarse(x[1][1]);
    result[2][1] = ddx_coarse(x[2][1]);
    return result;
}
float4x2 ddx_coarse(float4x2 x) {
    float4x2 result;
    result[0][0] = ddx_coarse(x[0][0]);
    result[1][0] = ddx_coarse(x[1][0]);
    result[2][0] = ddx_coarse(x[2][0]);
    result[3][0] = ddx_coarse(x[3][0]);
    result[0][1] = ddx_coarse(x[0][1]);
    result[1][1] = ddx_coarse(x[1][1]);
    result[2][1] = ddx_coarse(x[2][1]);
    result[3][1] = ddx_coarse(x[3][1]);
    return result;
}
float2x3 ddx_coarse(float2x3 x) {
    float2x3 result;
    result[0][0] = ddx_coarse(x[0][0]);
    result[1][0] = ddx_coarse(x[1][0]);
    result[0][1] = ddx_coarse(x[0][1]);
    result[1][1] = ddx_coarse(x[1][1]);
    result[0][2] = ddx_coarse(x[0][2]);
    result[1][2] = ddx_coarse(x[1][2]);
    return result;
}
float3x3 ddx_coarse(float3x3 x) {
    float3x3 result;
    result[0][0] = ddx_coarse(x[0][0]);
    result[1][0] = ddx_coarse(x[1][0]);
    result[2][0] = ddx_coarse(x[2][0]);
    result[0][1] = ddx_coarse(x[0][1]);
    result[1][1] = ddx_coarse(x[1][1]);
    result[2][1] = ddx_coarse(x[2][1]);
    result[0][2] = ddx_coarse(x[0][2]);
    result[1][2] = ddx_coarse(x[1][2]);
    result[2][2] = ddx_coarse(x[2][2]);
    return result;
}
float4x3 ddx_coarse(float4x3 x) {
    float4x3 result;
    result[0][0] = ddx_coarse(x[0][0]);
    result[1][0] = ddx_coarse(x[1][0]);
    result[2][0] = ddx_coarse(x[2][0]);
    result[3][0] = ddx_coarse(x[3][0]);
    result[0][1] = ddx_coarse(x[0][1]);
    result[1][1] = ddx_coarse(x[1][1]);
    result[2][1] = ddx_coarse(x[2][1]);
    result[3][1] = ddx_coarse(x[3][1]);
    result[0][2] = ddx_coarse(x[0][2]);
    result[1][2] = ddx_coarse(x[1][2]);
    result[2][2] = ddx_coarse(x[2][2]);
    result[3][2] = ddx_coarse(x[3][2]);
    return result;
}
float2x4 ddx_coarse(float2x4 x) {
    float2x4 result;
    result[0][0] = ddx_coarse(x[0][0]);
    result[1][0] = ddx_coarse(x[1][0]);
    result[0][1] = ddx_coarse(x[0][1]);
    result[1][1] = ddx_coarse(x[1][1]);
    result[0][2] = ddx_coarse(x[0][2]);
    result[1][2] = ddx_coarse(x[1][2]);
    result[0][3] = ddx_coarse(x[0][3]);
    result[1][3] = ddx_coarse(x[1][3]);
    return result;
}
float3x4 ddx_coarse(float3x4 x) {
    float3x4 result;
    result[0][0] = ddx_coarse(x[0][0]);
    result[1][0] = ddx_coarse(x[1][0]);
    result[2][0] = ddx_coarse(x[2][0]);
    result[0][1] = ddx_coarse(x[0][1]);
    result[1][1] = ddx_coarse(x[1][1]);
    result[2][1] = ddx_coarse(x[2][1]);
    result[0][2] = ddx_coarse(x[0][2]);
    result[1][2] = ddx_coarse(x[1][2]);
    result[2][2] = ddx_coarse(x[2][2]);
    result[0][3] = ddx_coarse(x[0][3]);
    result[1][3] = ddx_coarse(x[1][3]);
    result[2][3] = ddx_coarse(x[2][3]);
    return result;
}
float4x4 ddx_coarse(float4x4 x) {
    float4x4 result;
    result[0][0] = ddx_coarse(x[0][0]);
    result[1][0] = ddx_coarse(x[1][0]);
    result[2][0] = ddx_coarse(x[2][0]);
    result[3][0] = ddx_coarse(x[3][0]);
    result[0][1] = ddx_coarse(x[0][1]);
    result[1][1] = ddx_coarse(x[1][1]);
    result[2][1] = ddx_coarse(x[2][1]);
    result[3][1] = ddx_coarse(x[3][1]);
    result[0][2] = ddx_coarse(x[0][2]);
    result[1][2] = ddx_coarse(x[1][2]);
    result[2][2] = ddx_coarse(x[2][2]);
    result[3][2] = ddx_coarse(x[3][2]);
    result[0][3] = ddx_coarse(x[0][3]);
    result[1][3] = ddx_coarse(x[1][3]);
    result[2][3] = ddx_coarse(x[2][3]);
    result[3][3] = ddx_coarse(x[3][3]);
    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 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[1][0] = rcp(x[1][0]);
    result[0][1] = rcp(x[0][1]);
    result[1][1] = rcp(x[1][1]);
    return result;
}
float3x2 rcp(float3x2 x) {
    float3x2 result;
    result[0][0] = rcp(x[0][0]);
    result[1][0] = rcp(x[1][0]);
    result[2][0] = rcp(x[2][0]);
    result[0][1] = rcp(x[0][1]);
    result[1][1] = rcp(x[1][1]);
    result[2][1] = rcp(x[2][1]);
    return result;
}
float4x2 rcp(float4x2 x) {
    float4x2 result;
    result[0][0] = rcp(x[0][0]);
    result[1][0] = rcp(x[1][0]);
    result[2][0] = rcp(x[2][0]);
    result[3][0] = rcp(x[3][0]);
    result[0][1] = rcp(x[0][1]);
    result[1][1] = rcp(x[1][1]);
    result[2][1] = rcp(x[2][1]);
    result[3][1] = rcp(x[3][1]);
    return result;
}
float2x3 rcp(float2x3 x) {
    float2x3 result;
    result[0][0] = rcp(x[0][0]);
    result[1][0] = rcp(x[1][0]);
    result[0][1] = rcp(x[0][1]);
    result[1][1] = rcp(x[1][1]);
    result[0][2] = rcp(x[0][2]);
    result[1][2] = rcp(x[1][2]);
    return result;
}
float3x3 rcp(float3x3 x) {
    float3x3 result;
    result[0][0] = rcp(x[0][0]);
    result[1][0] = rcp(x[1][0]);
    result[2][0] = rcp(x[2][0]);
    result[0][1] = rcp(x[0][1]);
    result[1][1] = rcp(x[1][1]);
    result[2][1] = rcp(x[2][1]);
    result[0][2] = rcp(x[0][2]);
    result[1][2] = rcp(x[1][2]);
    result[2][2] = rcp(x[2][2]);
    return result;
}
float4x3 rcp(float4x3 x) {
    float4x3 result;
    result[0][0] = rcp(x[0][0]);
    result[1][0] = rcp(x[1][0]);
    result[2][0] = rcp(x[2][0]);
    result[3][0] = rcp(x[3][0]);
    result[0][1] = rcp(x[0][1]);
    result[1][1] = rcp(x[1][1]);
    result[2][1] = rcp(x[2][1]);
    result[3][1] = rcp(x[3][1]);
    result[0][2] = rcp(x[0][2]);
    result[1][2] = rcp(x[1][2]);
    result[2][2] = rcp(x[2][2]);
    result[3][2] = rcp(x[3][2]);
    return result;
}
float2x4 rcp(float2x4 x) {
    float2x4 result;
    result[0][0] = rcp(x[0][0]);
    result[1][0] = rcp(x[1][0]);
    result[0][1] = rcp(x[0][1]);
    result[1][1] = rcp(x[1][1]);
    result[0][2] = rcp(x[0][2]);
    result[1][2] = rcp(x[1][2]);
    result[0][3] = rcp(x[0][3]);
    result[1][3] = rcp(x[1][3]);
    return result;
}
float3x4 rcp(float3x4 x) {
    float3x4 result;
    result[0][0] = rcp(x[0][0]);
    result[1][0] = rcp(x[1][0]);
    result[2][0] = rcp(x[2][0]);
    result[0][1] = rcp(x[0][1]);
    result[1][1] = rcp(x[1][1]);
    result[2][1] = rcp(x[2][1]);
    result[0][2] = rcp(x[0][2]);
    result[1][2] = rcp(x[1][2]);
    result[2][2] = rcp(x[2][2]);
    result[0][3] = rcp(x[0][3]);
    result[1][3] = rcp(x[1][3]);
    result[2][3] = rcp(x[2][3]);
    return result;
}
float4x4 rcp(float4x4 x) {
    float4x4 result;
    result[0][0] = rcp(x[0][0]);
    result[1][0] = rcp(x[1][0]);
    result[2][0] = rcp(x[2][0]);
    result[3][0] = rcp(x[3][0]);
    result[0][1] = rcp(x[0][1]);
    result[1][1] = rcp(x[1][1]);
    result[2][1] = rcp(x[2][1]);
    result[3][1] = rcp(x[3][1]);
    result[0][2] = rcp(x[0][2]);
    result[1][2] = rcp(x[1][2]);
    result[2][2] = rcp(x[2][2]);
    result[3][2] = rcp(x[3][2]);
    result[0][3] = rcp(x[0][3]);
    result[1][3] = rcp(x[1][3]);
    result[2][3] = rcp(x[2][3]);
    result[3][3] = rcp(x[3][3]);
    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[1][0] = fwidth(x[1][0]);
    result[0][1] = fwidth(x[0][1]);
    result[1][1] = fwidth(x[1][1]);
    return result;
}
float3x2 fwidth(float3x2 x) {
    float3x2 result;
    result[0][0] = fwidth(x[0][0]);
    result[1][0] = fwidth(x[1][0]);
    result[2][0] = fwidth(x[2][0]);
    result[0][1] = fwidth(x[0][1]);
    result[1][1] = fwidth(x[1][1]);
    result[2][1] = fwidth(x[2][1]);
    return result;
}
float4x2 fwidth(float4x2 x) {
    float4x2 result;
    result[0][0] = fwidth(x[0][0]);
    result[1][0] = fwidth(x[1][0]);
    result[2][0] = fwidth(x[2][0]);
    result[3][0] = fwidth(x[3][0]);
    result[0][1] = fwidth(x[0][1]);
    result[1][1] = fwidth(x[1][1]);
    result[2][1] = fwidth(x[2][1]);
    result[3][1] = fwidth(x[3][1]);
    return result;
}
float2x3 fwidth(float2x3 x) {
    float2x3 result;
    result[0][0] = fwidth(x[0][0]);
    result[1][0] = fwidth(x[1][0]);
    result[0][1] = fwidth(x[0][1]);
    result[1][1] = fwidth(x[1][1]);
    result[0][2] = fwidth(x[0][2]);
    result[1][2] = fwidth(x[1][2]);
    return result;
}
float3x3 fwidth(float3x3 x) {
    float3x3 result;
    result[0][0] = fwidth(x[0][0]);
    result[1][0] = fwidth(x[1][0]);
    result[2][0] = fwidth(x[2][0]);
    result[0][1] = fwidth(x[0][1]);
    result[1][1] = fwidth(x[1][1]);
    result[2][1] = fwidth(x[2][1]);
    result[0][2] = fwidth(x[0][2]);
    result[1][2] = fwidth(x[1][2]);
    result[2][2] = fwidth(x[2][2]);
    return result;
}
float4x3 fwidth(float4x3 x) {
    float4x3 result;
    result[0][0] = fwidth(x[0][0]);
    result[1][0] = fwidth(x[1][0]);
    result[2][0] = fwidth(x[2][0]);
    result[3][0] = fwidth(x[3][0]);
    result[0][1] = fwidth(x[0][1]);
    result[1][1] = fwidth(x[1][1]);
    result[2][1] = fwidth(x[2][1]);
    result[3][1] = fwidth(x[3][1]);
    result[0][2] = fwidth(x[0][2]);
    result[1][2] = fwidth(x[1][2]);
    result[2][2] = fwidth(x[2][2]);
    result[3][2] = fwidth(x[3][2]);
    return result;
}
float2x4 fwidth(float2x4 x) {
    float2x4 result;
    result[0][0] = fwidth(x[0][0]);
    result[1][0] = fwidth(x[1][0]);
    result[0][1] = fwidth(x[0][1]);
    result[1][1] = fwidth(x[1][1]);
    result[0][2] = fwidth(x[0][2]);
    result[1][2] = fwidth(x[1][2]);
    result[0][3] = fwidth(x[0][3]);
    result[1][3] = fwidth(x[1][3]);
    return result;
}
float3x4 fwidth(float3x4 x) {
    float3x4 result;
    result[0][0] = fwidth(x[0][0]);
    result[1][0] = fwidth(x[1][0]);
    result[2][0] = fwidth(x[2][0]);
    result[0][1] = fwidth(x[0][1]);
    result[1][1] = fwidth(x[1][1]);
    result[2][1] = fwidth(x[2][1]);
    result[0][2] = fwidth(x[0][2]);
    result[1][2] = fwidth(x[1][2]);
    result[2][2] = fwidth(x[2][2]);
    result[0][3] = fwidth(x[0][3]);
    result[1][3] = fwidth(x[1][3]);
    result[2][3] = fwidth(x[2][3]);
    return result;
}
float4x4 fwidth(float4x4 x) {
    float4x4 result;
    result[0][0] = fwidth(x[0][0]);
    result[1][0] = fwidth(x[1][0]);
    result[2][0] = fwidth(x[2][0]);
    result[3][0] = fwidth(x[3][0]);
    result[0][1] = fwidth(x[0][1]);
    result[1][1] = fwidth(x[1][1]);
    result[2][1] = fwidth(x[2][1]);
    result[3][1] = fwidth(x[3][1]);
    result[0][2] = fwidth(x[0][2]);
    result[1][2] = fwidth(x[1][2]);
    result[2][2] = fwidth(x[2][2]);
    result[3][2] = fwidth(x[3][2]);
    result[0][3] = fwidth(x[0][3]);
    result[1][3] = fwidth(x[1][3]);
    result[2][3] = fwidth(x[2][3]);
    result[3][3] = fwidth(x[3][3]);
    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[1][0] = lerp(x[1][0], y[1][0], z[1][0]);
    result[0][1] = lerp(x[0][1], y[0][1], z[0][1]);
    result[1][1] = lerp(x[1][1], y[1][1], z[1][1]);
    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[1][0] = lerp(x[1][0], y[1][0], z[1][0]);
    result[2][0] = lerp(x[2][0], y[2][0], z[2][0]);
    result[0][1] = lerp(x[0][1], y[0][1], z[0][1]);
    result[1][1] = lerp(x[1][1], y[1][1], z[1][1]);
    result[2][1] = lerp(x[2][1], y[2][1], z[2][1]);
    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[1][0] = lerp(x[1][0], y[1][0], z[1][0]);
    result[2][0] = lerp(x[2][0], y[2][0], z[2][0]);
    result[3][0] = lerp(x[3][0], y[3][0], z[3][0]);
    result[0][1] = lerp(x[0][1], y[0][1], z[0][1]);
    result[1][1] = lerp(x[1][1], y[1][1], z[1][1]);
    result[2][1] = lerp(x[2][1], y[2][1], z[2][1]);
    result[3][1] = lerp(x[3][1], y[3][1], z[3][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[1][0] = lerp(x[1][0], y[1][0], z[1][0]);
    result[0][1] = lerp(x[0][1], y[0][1], z[0][1]);
    result[1][1] = lerp(x[1][1], y[1][1], z[1][1]);
    result[0][2] = lerp(x[0][2], y[0][2], z[0][2]);
    result[1][2] = lerp(x[1][2], y[1][2], z[1][2]);
    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[1][0] = lerp(x[1][0], y[1][0], z[1][0]);
    result[2][0] = lerp(x[2][0], y[2][0], z[2][0]);
    result[0][1] = lerp(x[0][1], y[0][1], z[0][1]);
    result[1][1] = lerp(x[1][1], y[1][1], z[1][1]);
    result[2][1] = lerp(x[2][1], y[2][1], z[2][1]);
    result[0][2] = lerp(x[0][2], y[0][2], z[0][2]);
    result[1][2] = lerp(x[1][2], y[1][2], z[1][2]);
    result[2][2] = lerp(x[2][2], y[2][2], z[2][2]);
    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[1][0] = lerp(x[1][0], y[1][0], z[1][0]);
    result[2][0] = lerp(x[2][0], y[2][0], z[2][0]);
    result[3][0] = lerp(x[3][0], y[3][0], z[3][0]);
    result[0][1] = lerp(x[0][1], y[0][1], z[0][1]);
    result[1][1] = lerp(x[1][1], y[1][1], z[1][1]);
    result[2][1] = lerp(x[2][1], y[2][1], z[2][1]);
    result[3][1] = lerp(x[3][1], y[3][1], z[3][1]);
    result[0][2] = lerp(x[0][2], y[0][2], z[0][2]);
    result[1][2] = lerp(x[1][2], y[1][2], z[1][2]);
    result[2][2] = lerp(x[2][2], y[2][2], z[2][2]);
    result[3][2] = lerp(x[3][2], y[3][2], z[3][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[1][0] = lerp(x[1][0], y[1][0], z[1][0]);
    result[0][1] = lerp(x[0][1], y[0][1], z[0][1]);
    result[1][1] = lerp(x[1][1], y[1][1], z[1][1]);
    result[0][2] = lerp(x[0][2], y[0][2], z[0][2]);
    result[1][2] = lerp(x[1][2], y[1][2], z[1][2]);
    result[0][3] = lerp(x[0][3], y[0][3], z[0][3]);
    result[1][3] = lerp(x[1][3], y[1][3], z[1][3]);
    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[1][0] = lerp(x[1][0], y[1][0], z[1][0]);
    result[2][0] = lerp(x[2][0], y[2][0], z[2][0]);
    result[0][1] = lerp(x[0][1], y[0][1], z[0][1]);
    result[1][1] = lerp(x[1][1], y[1][1], z[1][1]);
    result[2][1] = lerp(x[2][1], y[2][1], z[2][1]);
    result[0][2] = lerp(x[0][2], y[0][2], z[0][2]);
    result[1][2] = lerp(x[1][2], y[1][2], z[1][2]);
    result[2][2] = lerp(x[2][2], y[2][2], z[2][2]);
    result[0][3] = lerp(x[0][3], y[0][3], z[0][3]);
    result[1][3] = lerp(x[1][3], y[1][3], z[1][3]);
    result[2][3] = lerp(x[2][3], y[2][3], z[2][3]);
    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[1][0] = lerp(x[1][0], y[1][0], z[1][0]);
    result[2][0] = lerp(x[2][0], y[2][0], z[2][0]);
    result[3][0] = lerp(x[3][0], y[3][0], z[3][0]);
    result[0][1] = lerp(x[0][1], y[0][1], z[0][1]);
    result[1][1] = lerp(x[1][1], y[1][1], z[1][1]);
    result[2][1] = lerp(x[2][1], y[2][1], z[2][1]);
    result[3][1] = lerp(x[3][1], y[3][1], z[3][1]);
    result[0][2] = lerp(x[0][2], y[0][2], z[0][2]);
    result[1][2] = lerp(x[1][2], y[1][2], z[1][2]);
    result[2][2] = lerp(x[2][2], y[2][2], z[2][2]);
    result[3][2] = lerp(x[3][2], y[3][2], z[3][2]);
    result[0][3] = lerp(x[0][3], y[0][3], z[0][3]);
    result[1][3] = lerp(x[1][3], y[1][3], z[1][3]);
    result[2][3] = lerp(x[2][3], y[2][3], z[2][3]);
    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);
}