SKIP: FAILED



Validation Failure:
#include <metal_stdlib>

using namespace metal;
void textureDimensions_183b3e() {
  int3 res = int3(arg_0.get_width(), arg_0.get_height(), arg_0.get_height());
}

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

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

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


tint_k1bgdS.metal:5:19: error: use of undeclared identifier 'arg_0'
  int3 res = int3(arg_0.get_width(), arg_0.get_height(), arg_0.get_height());
                  ^
tint_k1bgdS.metal:5:38: error: use of undeclared identifier 'arg_0'
  int3 res = int3(arg_0.get_width(), arg_0.get_height(), arg_0.get_height());
                                     ^
tint_k1bgdS.metal:5:58: error: use of undeclared identifier 'arg_0'
  int3 res = int3(arg_0.get_width(), arg_0.get_height(), arg_0.get_height());
                                                         ^
3 errors generated.
