#include <metal_stdlib>

using namespace metal;
int3 tint_mod(int3 lhs, int3 rhs) {
  int3 const rhs_or_one = select(rhs, int3(1), ((rhs == int3(0)) | ((lhs == int3((-2147483647 - 1))) & (rhs == int3(-1)))));
  if (any(((uint3((lhs | rhs_or_one)) & uint3(2147483648u)) != uint3(0u)))) {
    return as_type<int3>((as_type<uint3>(lhs) - as_type<uint3>(as_type<int3>((as_type<uint3>((lhs / rhs_or_one)) * as_type<uint3>(rhs_or_one))))));
  } else {
    return (lhs % rhs_or_one);
  }
}

kernel void f() {
  int3 const a = int3(1, 2, 3);
  int3 const b = int3(4, 5, 6);
  int3 const r = tint_mod(a, b);
  return;
}

