SKIP: FAILED


fn frexp_0da285(tint_symbol_2 : ptr<workgroup, i32>) {
  var res : f32 = frexp(1.0, &(*(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 : i32;
  frexp_0da285(&(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 : i32;
  frexp_0da285(&(tint_symbol_4));
}

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

Failed to generate: error: Unknown import method: frexp
