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) {
  float res = tint_frexp(1.0f, tint_symbol);
}

void compute_main_inner(uint local_invocation_index, threadgroup int* const tint_symbol_1) {
  {
    *(tint_symbol_1) = int();
  }
  threadgroup_barrier(mem_flags::mem_threadgroup);
  frexp_0da285(tint_symbol_1);
}

kernel void compute_main(uint local_invocation_index [[thread_index_in_threadgroup]]) {
  threadgroup int tint_symbol_2;
  compute_main_inner(local_invocation_index, &(tint_symbol_2));
  return;
}

