SKIP: FAILED



Validation Failure:
#include <metal_stdlib>

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

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

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

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


tint_rCoJkt.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_rCoJkt.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_rCoJkt.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.
