SKIP: FAILED



Validation Failure:
#include <metal_stdlib>

using namespace metal;
void fwidthFine_f1742d() {
  float res =   fwidth(1.0f);
}

vertex void vertex_main() {
  fwidthFine_f1742d();
  return;
}

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

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


tint_WPjnD2.metal:5:9: warning: unused variable 'res' [-Wunused-variable]
  float res =   fwidth(1.0f);
        ^
tint_WPjnD2.metal:8:13: error: vertex function 'vertex_main' uses unsupported builtin functions
vertex void vertex_main() {
            ^
note: function air.fwidth.f32 is not allowed within a vertex function
tint_WPjnD2.metal:18:13: error: kernel function 'compute_main' uses unsupported builtin functions
kernel void compute_main() {
            ^
note: function air.fwidth.f32 is not allowed within a kernel function
1 warning and 2 errors generated.
