|  | @group(0) @binding(0) var<storage, read_write> s : f32; | 
|  |  | 
|  | fn f1(a : array<f32, 4>) -> f32 { | 
|  | return a[3]; | 
|  | } | 
|  |  | 
|  | fn f2(a : array<array<f32, 4>, 3>) -> f32 { | 
|  | return a[2][3]; | 
|  | } | 
|  |  | 
|  | fn f3(a : array<array<array<f32, 4>, 3>, 2>) -> f32 { | 
|  | return a[1][2][3]; | 
|  | } | 
|  |  | 
|  | @compute @workgroup_size(1) | 
|  | fn main() { | 
|  | let a1 : array<f32, 4> = array<f32, 4>(); | 
|  | let a2 : array<array<f32, 4>, 3> = array<array<f32, 4>, 3>(); | 
|  | let a3 : array<array<array<f32, 4>, 3>, 2> = array<array<array<f32, 4>, 3>, 2>(); | 
|  | let v1 : f32 = f1(a1); | 
|  | let v2 : f32 = f2(a2); | 
|  | let v3 : f32 = f3(a3); | 
|  | s = ((v1 + v2) + v3); | 
|  | } |