fn bitwise_i32() {
    var s1 : i32;
    var s2 : i32;
    var v1 : vec3<i32>;
    var v2 : vec3<i32>;

    s1 = s1 | s2;
    s1 = s1 & s2;
    s1 = s1 ^ s2;

    v1 = v1 | v2;
    v1 = v1 & v2;
    v1 = v1 ^ v2;
}

fn bitwise_u32() {
    var s1 : u32;
    var s2 : u32;
    var v1 : vec3<u32>;
    var v2 : vec3<u32>;

    s1 = s1 | s2;
    s1 = s1 & s2;
    s1 = s1 ^ s2;

    v1 = v1 | v2;
    v1 = v1 & v2;
    v1 = v1 ^ v2;
}

fn vector_scalar_f32() {
    var v : vec3<f32>;
    var s : f32;
    var r : vec3<f32>;
    r = v + s;
    r = v - s;
    r = v * s;
    r = v / s;
    //r = v % s;
}

fn vector_scalar_i32() {
    var v : vec3<i32>;
    var s : i32;
    var r : vec3<i32>;
    r = v + s;
    r = v - s;
    r = v * s;
    r = v / s;
    r = v % s;
}

fn vector_scalar_u32() {
    var v : vec3<u32>;
    var s : u32;
    var r : vec3<u32>;
    r = v + s;
    r = v - s;
    r = v * s;
    r = v / s;
    r = v % s;
}

fn scalar_vector_f32() {
    var v : vec3<f32>;
    var s : f32;
    var r : vec3<f32>;
    r = s + v;
    r = s - v;
    r = s * v;
    r = s / v;
    //r = s % v;
}

fn scalar_vector_i32() {
    var v : vec3<i32>;
    var s : i32;
    var r : vec3<i32>;
    r = s + v;
    r = s - v;
    r = s * v;
    r = s / v;
    r = s % v;
}

fn scalar_vector_u32() {
    var v : vec3<u32>;
    var s : u32;
    var r : vec3<u32>;
    r = s + v;
    r = s - v;
    r = s * v;
    r = s / v;
    r = s % v;
}

fn matrix_matrix_f32() {
    var m34 : mat3x4<f32>;
    var m43 : mat4x3<f32>;
    var m33 : mat3x3<f32>;
    var m44 : mat4x4<f32>;

    m34 = m34 + m34;
    m34 = m34 - m34;

    m33 = m43 * m34;
    m44 = m34 * m43;
}

[[stage(fragment)]]
fn main() -> [[location(0)]] vec4<f32> {
    return vec4<f32>(0.0,0.0,0.0,0.0);
}
