#pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; struct OutBuf { uint out_buf[1]; }; struct InBuf { uint in_buf[1]; }; constant uint3 gl_WorkGroupSize [[maybe_unused]] = uint3(1u); static inline __attribute__((always_inline)) uint collatz_iterations(thread uint& n) { uint i = 0u; while (n != 1u) { if ((n % 2u) == 0u) { n /= 2u; } else { n = (3u * n) + 1u; } i++; } return i; } kernel void main0(device OutBuf& _53 [[buffer(0)]], const device InBuf& _59 [[buffer(1)]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]]) { uint index = gl_GlobalInvocationID.x; uint param = _59.in_buf[index]; uint _65 = collatz_iterations(param); _53.out_buf[index] = _65; }