// RUN: %clang_builtins %s %librt -o %t && %run %t
// REQUIRES: librt_has_udivti3
// REQUIRES: int128

#include "int_lib.h"
#include <stdio.h>

#ifdef CRT_HAS_128BIT

// Returns: a / b

COMPILER_RT_ABI tu_int __udivti3(tu_int a, tu_int b);

int test__udivti3(tu_int a, tu_int b, tu_int expected_q)
{
    tu_int q = __udivti3(a, b);
    if (q != expected_q)
    {
        utwords at;
        at.all = a;
        utwords bt;
        bt.all = b;
        utwords qt;
        qt.all = q;
        utwords expected_qt;
        expected_qt.all = expected_q;
        printf("error in __udivti3: 0x%llX%.16llX / 0x%llX%.16llX = "
               "0x%llX%.16llX, expected 0x%llX%.16llX\n",
               at.s.high, at.s.low, bt.s.high, bt.s.low, qt.s.high, qt.s.low,
               expected_qt.s.high, expected_qt.s.low);
    }
    return q != expected_q;
}

#endif

int main()
{
#ifdef CRT_HAS_128BIT
    if (test__udivti3(0, 1, 0))
        return 1;
    if (test__udivti3(2, 1, 2))
        return 1;
    if (test__udivti3(make_tu(0x8000000000000000uLL, 0), 1,
                      make_tu(0x8000000000000000uLL, 0)))
        return 1;
    if (test__udivti3(make_tu(0x8000000000000000uLL, 0), 2,
                      make_tu(0x4000000000000000uLL, 0)))
        return 1;
    if (test__udivti3(make_tu(0xFFFFFFFFFFFFFFFFuLL, 0xFFFFFFFFFFFFFFFFuLL), 2,
                      make_tu(0x7FFFFFFFFFFFFFFFuLL, 0xFFFFFFFFFFFFFFFFuLL)))
        return 1;

#else
    printf("skipped\n");
#endif
    return 0;
}
