blob: 7c0c2c816289bec59e4c098f58a7d6b8aa17875e [file] [log] [blame]
enable chromium_experimental_subgroup_matrix;
struct S {
l : subgroup_matrix_left<f32, 8, 8>,
r : subgroup_matrix_right<f32, 8, 8>,
}
struct S_Nested {
s : S,
}
@group(0) @binding(0) var<storage, read_write> buffer : array<f32>;
fn foo(m : ptr<function, subgroup_matrix_left<f32, 8, 8>>, m_array : ptr<function, array<subgroup_matrix_left<f32, 8, 8>, 4>>, m_nested_array : ptr<function, array<array<subgroup_matrix_left<f32, 8, 8>, 4>, 4>>, m_struct : ptr<function, S>, m_nested_struct : ptr<function, S_Nested>) {
subgroupMatrixStore(&(buffer), 0, *(m), false, 64);
subgroupMatrixStore(&(buffer), 0, m_array[0], false, 64);
subgroupMatrixStore(&(buffer), 0, m_nested_array[1][2], false, 64);
subgroupMatrixStore(&(buffer), 0, m_struct.l, false, 64);
subgroupMatrixStore(&(buffer), 0, m_nested_struct.s.r, false, 64);
}
@compute @workgroup_size(64)
fn main() {
var m : subgroup_matrix_left<f32, 8, 8>;
var m_array : array<subgroup_matrix_left<f32, 8, 8>, 4>;
var m_nested_array : array<array<subgroup_matrix_left<f32, 8, 8>, 4>, 4>;
var m_struct : S;
var m_nested_struct : S_Nested;
foo(&(m), &(m_array), &(m_nested_array), &(m_struct), &(m_nested_struct));
}