intrinsics/gen/frexp/a2a617.wgsl:29:18 warning: use of deprecated intrinsic
  var res: f32 = frexp(1.0, &arg_1);
                 ^^^^^

#include <metal_stdlib>

using namespace metal;

float tint_frexp(float param_0, thread int* param_1) {
  int exp;
  float sig = frexp(param_0, exp);
  *param_1 = exp;
  return sig;
}

struct tint_symbol {
  float4 value [[position]];
};

void frexp_a2a617(thread int* const tint_symbol_2) {
  float res = tint_frexp(1.0f, &(*(tint_symbol_2)));
}

vertex tint_symbol vertex_main() {
  thread int tint_symbol_3 = 0;
  frexp_a2a617(&(tint_symbol_3));
  tint_symbol const tint_symbol_1 = {.value=float4()};
  return tint_symbol_1;
}

fragment void fragment_main() {
  thread int tint_symbol_4 = 0;
  frexp_a2a617(&(tint_symbol_4));
  return;
}

kernel void compute_main() {
  thread int tint_symbol_5 = 0;
  frexp_a2a617(&(tint_symbol_5));
  return;
}

