intrinsics/gen/frexp/b87f4e.wgsl:29:24 warning: use of deprecated intrinsic
  var res: vec4<f32> = frexp(vec4<f32>(), &arg_1);
                       ^^^^^

#include <metal_stdlib>

using namespace metal;

float4 tint_frexp(float4 param_0, threadgroup int4* param_1) {
  int4 exp;
  float4 sig = frexp(param_0, exp);
  *param_1 = exp;
  return sig;
}

void frexp_b87f4e(threadgroup int4* const tint_symbol) {
  float4 res = tint_frexp(float4(), tint_symbol);
}

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

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

