SKIP: FAILED


fn modf_bb9088(tint_symbol_2 : ptr<workgroup, vec3<f32>>) {
  var res : vec3<f32> = modf(vec3<f32>(), &(*(tint_symbol_2)));
}

struct tint_symbol {
  [[builtin(position)]]
  value : vec4<f32>;
};

[[stage(vertex)]]
fn vertex_main() -> tint_symbol {
  [[internal(disable_validation__function_var_storage_class)]] var<workgroup> tint_symbol_3 : vec3<f32>;
  modf_bb9088(&(tint_symbol_3));
  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
  return tint_symbol_1;
}

[[stage(fragment)]]
fn fragment_main() {
  [[internal(disable_validation__function_var_storage_class)]] var<workgroup> tint_symbol_4 : vec3<f32>;
  modf_bb9088(&(tint_symbol_4));
}

[[stage(compute), workgroup_size(1)]]
fn compute_main() {
  [[internal(disable_validation__function_var_storage_class)]] var<workgroup> tint_symbol_5 : vec3<f32>;
  modf_bb9088(&(tint_symbol_5));
}

Failed to generate: error: Unknown import method: modf
