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

#include <metal_stdlib>

using namespace metal;

float4 tint_modf(float4 param_0, thread float4* param_1) {
  float4 whole;
  float4 fract = modf(param_0, whole);
  *param_1 = whole;
  return fract;
}

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

void modf_e83560() {
  float4 arg_1 = 0.0f;
  float4 res = tint_modf(float4(), &(arg_1));
}

vertex tint_symbol vertex_main() {
  modf_e83560();
  tint_symbol const tint_symbol_1 = {.value=float4()};
  return tint_symbol_1;
}

fragment void fragment_main() {
  modf_e83560();
  return;
}

kernel void compute_main() {
  modf_e83560();
  return;
}

