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)]]
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
