xref: /netbsd-src/sys/external/bsd/compiler_rt/dist/test/Unit/udivdi3_test.c (revision b9829059e8a75f40496c2d279251f331078ac82e)
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