1*b9829059Sjoerg //===-- udivdi3_test.c - Test __udivdi3 -----------------------------------===//
2*b9829059Sjoerg //
3*b9829059Sjoerg // The LLVM Compiler Infrastructure
4*b9829059Sjoerg //
5*b9829059Sjoerg // This file is dual licensed under the MIT and the University of Illinois Open
6*b9829059Sjoerg // Source Licenses. See LICENSE.TXT for details.
7*b9829059Sjoerg //
8*b9829059Sjoerg //===----------------------------------------------------------------------===//
9*b9829059Sjoerg //
10*b9829059Sjoerg // This file tests __udivdi3 for the compiler_rt library.
11*b9829059Sjoerg //
12*b9829059Sjoerg //===----------------------------------------------------------------------===//
13*b9829059Sjoerg
14*b9829059Sjoerg #include "int_lib.h"
15*b9829059Sjoerg #include <stdio.h>
16*b9829059Sjoerg
17*b9829059Sjoerg // Returns: a / b
18*b9829059Sjoerg
19*b9829059Sjoerg du_int __udivdi3(du_int a, du_int b);
20*b9829059Sjoerg
test__udivdi3(du_int a,du_int b,du_int expected_q)21*b9829059Sjoerg int test__udivdi3(du_int a, du_int b, du_int expected_q)
22*b9829059Sjoerg {
23*b9829059Sjoerg du_int q = __udivdi3(a, b);
24*b9829059Sjoerg if (q != expected_q)
25*b9829059Sjoerg printf("error in __udivdi3: %lld / %lld = %lld, expected %lld\n",
26*b9829059Sjoerg a, b, q, expected_q);
27*b9829059Sjoerg return q != expected_q;
28*b9829059Sjoerg }
29*b9829059Sjoerg
main()30*b9829059Sjoerg int main()
31*b9829059Sjoerg {
32*b9829059Sjoerg if (test__udivdi3(0, 1, 0))
33*b9829059Sjoerg return 1;
34*b9829059Sjoerg if (test__udivdi3(2, 1, 2))
35*b9829059Sjoerg return 1;
36*b9829059Sjoerg if (test__udivdi3(0x8000000000000000uLL, 1, 0x8000000000000000uLL))
37*b9829059Sjoerg return 1;
38*b9829059Sjoerg if (test__udivdi3(0x8000000000000000uLL, 2, 0x4000000000000000uLL))
39*b9829059Sjoerg return 1;
40*b9829059Sjoerg if (test__udivdi3(0xFFFFFFFFFFFFFFFFuLL, 2, 0x7FFFFFFFFFFFFFFFuLL))
41*b9829059Sjoerg return 1;
42*b9829059Sjoerg
43*b9829059Sjoerg return 0;
44*b9829059Sjoerg }
45