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

#include <metal_stdlib>

using namespace metal;

float tint_modf(float param_0, threadgroup float* param_1) {
  float whole;
  float fract = modf(param_0, whole);
  *param_1 = whole;
  return fract;
}

void modf_e38ae6(threadgroup float* const tint_symbol) {
  float res = tint_modf(1.0f, tint_symbol);
}

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

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

