// flags:  --hlsl_shader_model 62
enable f16;

struct Inner {
    scalar_f32 : f32,
    scalar_i32 : i32,
    scalar_u32 : u32,
    scalar_f16 : f16,
    vec2_f32 : vec2<f32>,
    vec2_i32 : vec2<i32>,
    vec2_u32 : vec2<u32>,
    vec2_f16 : vec2<f16>,
    vec3_f32 : vec3<f32>,
    vec3_i32 : vec3<i32>,
    vec3_u32 : vec3<u32>,
    vec3_f16 : vec3<f16>,
    vec4_f32 : vec4<f32>,
    vec4_i32 : vec4<i32>,
    vec4_u32 : vec4<u32>,
    vec4_f16 : vec4<f16>,
    mat2x2_f32 : mat2x2<f32>,
    mat2x3_f32 : mat2x3<f32>,
    mat2x4_f32 : mat2x4<f32>,
    mat3x2_f32 : mat3x2<f32>,
    mat3x3_f32 : mat3x3<f32>,
    mat3x4_f32 : mat3x4<f32>,
    mat4x2_f32 : mat4x2<f32>,
    mat4x3_f32 : mat4x3<f32>,
    mat4x4_f32 : mat4x4<f32>,
    mat2x2_f16 : mat2x2<f16>,
    mat2x3_f16 : mat2x3<f16>,
    mat2x4_f16 : mat2x4<f16>,
    mat3x2_f16 : mat3x2<f16>,
    mat3x3_f16 : mat3x3<f16>,
    mat3x4_f16 : mat3x4<f16>,
    mat4x2_f16 : mat4x2<f16>,
    mat4x3_f16 : mat4x3<f16>,
    mat4x4_f16 : mat4x4<f16>,
    arr2_vec3_f32 : array<vec3<f32>, 2>,
    arr2_mat4x2_f16 : array<mat4x2<f16>, 2>,
};

struct S {
    arr : array<Inner>,
};

@binding(0) @group(0) var<storage, read> sb : S;
@group(0) @binding(1) var<storage, read_write> s: i32;

@compute @workgroup_size(1)
fn main(@builtin(local_invocation_index) idx : u32) {
    let scalar_f32 : f32 = sb.arr[idx].scalar_f32;
    let scalar_i32 : i32 = sb.arr[idx].scalar_i32;
    let scalar_u32 : u32 = sb.arr[idx].scalar_u32;
    let scalar_f16 : f16 = sb.arr[idx].scalar_f16;
    let vec2_f32 : vec2<f32> = sb.arr[idx].vec2_f32;
    let vec2_i32 : vec2<i32> = sb.arr[idx].vec2_i32;
    let vec2_u32 : vec2<u32> = sb.arr[idx].vec2_u32;
    let vec2_f16 : vec2<f16> = sb.arr[idx].vec2_f16;
    let vec3_f32 : vec3<f32> = sb.arr[idx].vec3_f32;
    let vec3_i32 : vec3<i32> = sb.arr[idx].vec3_i32;
    let vec3_u32 : vec3<u32> = sb.arr[idx].vec3_u32;
    let vec3_f16 : vec3<f16> = sb.arr[idx].vec3_f16;
    let vec4_f32 : vec4<f32> = sb.arr[idx].vec4_f32;
    let vec4_i32 : vec4<i32> = sb.arr[idx].vec4_i32;
    let vec4_u32 : vec4<u32> = sb.arr[idx].vec4_u32;
    let vec4_f16 : vec4<f16> = sb.arr[idx].vec4_f16;
    let mat2x2_f32 : mat2x2<f32> = sb.arr[idx].mat2x2_f32;
    let mat2x3_f32 : mat2x3<f32> = sb.arr[idx].mat2x3_f32;
    let mat2x4_f32 : mat2x4<f32> = sb.arr[idx].mat2x4_f32;
    let mat3x2_f32 : mat3x2<f32> = sb.arr[idx].mat3x2_f32;
    let mat3x3_f32 : mat3x3<f32> = sb.arr[idx].mat3x3_f32;
    let mat3x4_f32 : mat3x4<f32> = sb.arr[idx].mat3x4_f32;
    let mat4x2_f32 : mat4x2<f32> = sb.arr[idx].mat4x2_f32;
    let mat4x3_f32 : mat4x3<f32> = sb.arr[idx].mat4x3_f32;
    let mat4x4_f32 : mat4x4<f32> = sb.arr[idx].mat4x4_f32;
    let mat2x2_f16 : mat2x2<f16> = sb.arr[idx].mat2x2_f16;
    let mat2x3_f16 : mat2x3<f16> = sb.arr[idx].mat2x3_f16;
    let mat2x4_f16 : mat2x4<f16> = sb.arr[idx].mat2x4_f16;
    let mat3x2_f16 : mat3x2<f16> = sb.arr[idx].mat3x2_f16;
    let mat3x3_f16 : mat3x3<f16> = sb.arr[idx].mat3x3_f16;
    let mat3x4_f16 : mat3x4<f16> = sb.arr[idx].mat3x4_f16;
    let mat4x2_f16 : mat4x2<f16> = sb.arr[idx].mat4x2_f16;
    let mat4x3_f16 : mat4x3<f16> = sb.arr[idx].mat4x3_f16;
    let mat4x4_f16 : mat4x4<f16> = sb.arr[idx].mat4x4_f16;
    let arr2_vec3_f32 : array<vec3<f32>, 2> = sb.arr[idx].arr2_vec3_f32;
    let arr2_mat4x2_f16 : array<mat4x2<f16>, 2> = sb.arr[idx].arr2_mat4x2_f16;

    s = i32(scalar_f32) + scalar_i32 + i32(scalar_u32) + i32(scalar_f16) +
        i32(vec2_f32.x) + vec2_i32.x + i32(vec2_u32.x) + i32(vec2_f16.x) +
        i32(vec3_f32.y) + vec3_i32.y + i32(vec3_u32.y) + i32(vec3_f16.y) +
        i32(vec4_f32.z) + vec4_i32.z + i32(vec4_u32.z) + i32(vec4_f16.z) +
        i32(mat2x2_f32[0].x) + i32(mat2x3_f32[0].x) +
        i32(mat2x4_f32[0].x) + i32(mat3x2_f32[0].x) +
        i32(mat3x3_f32[0].x) + i32(mat3x4_f32[0].x) +
        i32(mat4x2_f32[0].x) + i32(mat4x3_f32[0].x) +
        i32(mat4x4_f32[0].x) +
        i32(mat2x2_f16[0].x) + i32(mat2x3_f16[0].x) +
        i32(mat2x4_f16[0].x) + i32(mat3x2_f16[0].x) +
        i32(mat3x3_f16[0].x) + i32(mat3x4_f16[0].x) +
        i32(mat4x2_f16[0].x) + i32(mat4x3_f16[0].x) +
        i32(mat4x4_f16[0].x) +
        i32(arr2_mat4x2_f16[0][0].x) + i32(arr2_vec3_f32[0].x);
}
