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

#include <metal_stdlib>

using namespace metal;

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

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

void modf_3b79d5() {
  float3 arg_1 = 0.0f;
  float3 res = tint_modf(float3(), &(arg_1));
}

float4 vertex_main_inner() {
  modf_3b79d5();
  return float4();
}

vertex tint_symbol vertex_main() {
  float4 const inner_result = vertex_main_inner();
  tint_symbol wrapper_result = {};
  wrapper_result.value = inner_result;
  return wrapper_result;
}

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

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

