SKIP: FAILED



Validation Failure:
#include <metal_stdlib>

using namespace metal;
void fwidth_b83ebb() {
  float2 res =   fwidth(float2());
}

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

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

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


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