SKIP: FAILED



Validation Failure:
#include <metal_stdlib>

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

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

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

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


tint_OvApsq.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_OvApsq.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_OvApsq.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.
