intrinsics/gen/frexp/0da285.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, threadgroup int* param_1) {
  int exp;
  float sig = frexp(param_0, exp);
  *param_1 = exp;
  return sig;
}

void frexp_0da285(threadgroup int* const tint_symbol_1) {
  float res = tint_frexp(1.0f, tint_symbol_1);
}

kernel void compute_main(uint local_invocation_index [[thread_index_in_threadgroup]]) {
  threadgroup int tint_symbol_2;
  {
    tint_symbol_2 = int();
  }
  threadgroup_barrier(mem_flags::mem_threadgroup);
  frexp_0da285(&(tint_symbol_2));
  return;
}

