blob: c020713859885b7026beb382b1aeabf1667cd97b [file] [log] [blame]
@group(0) @binding(0) var<storage, read_write> s: i32;
alias ArrayType = array<i32, 4>;
struct S {
arr : array<i32, 4>,
};
fn foo() -> i32 {
let src : ArrayType = ArrayType();
var dst : ArrayType;
var dst_struct : S;
var dst_array : array<ArrayType, 2>;
let dst_ptr : ptr<function, ArrayType> = &dst;
let dst_struct_ptr : ptr<function, S> = &dst_struct;
let dst_array_ptr : ptr<function, array<ArrayType, 2>> = &dst_array;
// Assign to struct.member.
dst_struct.arr = src;
// Assign to array[index].
dst_array[1] = src;
// Assign via pointers.
*dst_ptr = src;
(*dst_struct_ptr).arr = src;
(*dst_array_ptr)[0] = src;
return (*dst_ptr)[0] + (*dst_struct_ptr).arr[0] + (*dst_array_ptr)[0][0];
}
@compute @workgroup_size(1)
fn main() {
s = foo();
}