177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao//===-- udivsi3_test.c - Test __udivsi3 -----------------------------------===//
277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao//
377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao//                     The LLVM Compiler Infrastructure
477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao//
577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// This file is distributed under the University of Illinois Open Source
677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// License. See LICENSE.TXT for details.
777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao//
877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao//===----------------------------------------------------------------------===//
977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao//
1077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// This file tests __udivsi3 for the compiler_rt library.
1177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao//
1277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao//===----------------------------------------------------------------------===//
1377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao
1477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#include "int_lib.h"
1577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#include <stdio.h>
1677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao
1777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// Returns: a / b
1877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao
1977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaosu_int __udivsi3(su_int a, su_int b);
2077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao
2177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoint test__udivsi3(su_int a, su_int b, su_int expected_q)
2277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{
2377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    su_int q = __udivsi3(a, b);
2477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    if (q != expected_q)
2577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao        printf("error in __udivsi3: %X / %X = %X, expected %X\n",
2677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao               a, b, q, expected_q);
2777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    return q != expected_q;
2877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao}
2977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao
3077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaosu_int tests[][4] =
3177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{
3277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000000, 0x00000001, 0x00000000},
3377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000000, 0x00000002, 0x00000000},
3477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000000, 0x00000003, 0x00000000},
3577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000000, 0x00000010, 0x00000000},
3677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000000, 0x078644FA, 0x00000000},
3777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000000, 0x0747AE14, 0x00000000},
3877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000000, 0x7FFFFFFF, 0x00000000},
3977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000000, 0x80000000, 0x00000000},
4077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000000, 0xFFFFFFFD, 0x00000000},
4177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000000, 0xFFFFFFFE, 0x00000000},
4277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000000, 0xFFFFFFFF, 0x00000000},
4377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000001, 0x00000001, 0x00000001},
4477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000001, 0x00000002, 0x00000000},
4577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000001, 0x00000003, 0x00000000},
4677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000001, 0x00000010, 0x00000000},
4777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000001, 0x078644FA, 0x00000000},
4877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000001, 0x0747AE14, 0x00000000},
4977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000001, 0x7FFFFFFF, 0x00000000},
5077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000001, 0x80000000, 0x00000000},
5177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000001, 0xFFFFFFFD, 0x00000000},
5277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000001, 0xFFFFFFFE, 0x00000000},
5377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000001, 0xFFFFFFFF, 0x00000000},
5477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000002, 0x00000001, 0x00000002},
5577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000002, 0x00000002, 0x00000001},
5677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000002, 0x00000003, 0x00000000},
5777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000002, 0x00000010, 0x00000000},
5877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000002, 0x078644FA, 0x00000000},
5977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000002, 0x0747AE14, 0x00000000},
6077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000002, 0x7FFFFFFF, 0x00000000},
6177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000002, 0x80000000, 0x00000000},
6277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000002, 0xFFFFFFFD, 0x00000000},
6377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000002, 0xFFFFFFFE, 0x00000000},
6477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000002, 0xFFFFFFFF, 0x00000000},
6577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000003, 0x00000001, 0x00000003},
6677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000003, 0x00000002, 0x00000001},
6777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000003, 0x00000003, 0x00000001},
6877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000003, 0x00000010, 0x00000000},
6977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000003, 0x078644FA, 0x00000000},
7077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000003, 0x0747AE14, 0x00000000},
7177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000003, 0x7FFFFFFF, 0x00000000},
7277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000003, 0x80000000, 0x00000000},
7377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000003, 0xFFFFFFFD, 0x00000000},
7477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000003, 0xFFFFFFFE, 0x00000000},
7577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000003, 0xFFFFFFFF, 0x00000000},
7677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000010, 0x00000001, 0x00000010},
7777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000010, 0x00000002, 0x00000008},
7877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000010, 0x00000003, 0x00000005},
7977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000010, 0x00000010, 0x00000001},
8077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000010, 0x078644FA, 0x00000000},
8177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000010, 0x0747AE14, 0x00000000},
8277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000010, 0x7FFFFFFF, 0x00000000},
8377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000010, 0x80000000, 0x00000000},
8477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000010, 0xFFFFFFFD, 0x00000000},
8577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000010, 0xFFFFFFFE, 0x00000000},
8677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x00000010, 0xFFFFFFFF, 0x00000000},
8777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x078644FA, 0x00000001, 0x078644FA},
8877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x078644FA, 0x00000002, 0x03C3227D},
8977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x078644FA, 0x00000003, 0x028216FE},
9077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x078644FA, 0x00000010, 0x0078644F},
9177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x078644FA, 0x078644FA, 0x00000001},
9277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x078644FA, 0x0747AE14, 0x00000001},
9377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x078644FA, 0x7FFFFFFF, 0x00000000},
9477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x078644FA, 0x80000000, 0x00000000},
9577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x078644FA, 0xFFFFFFFD, 0x00000000},
9677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x078644FA, 0xFFFFFFFE, 0x00000000},
9777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x078644FA, 0xFFFFFFFF, 0x00000000},
9877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x0747AE14, 0x00000001, 0x0747AE14},
9977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x0747AE14, 0x00000002, 0x03A3D70A},
10077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x0747AE14, 0x00000003, 0x026D3A06},
10177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x0747AE14, 0x00000010, 0x00747AE1},
10277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x0747AE14, 0x078644FA, 0x00000000},
10377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x0747AE14, 0x0747AE14, 0x00000001},
10477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x0747AE14, 0x7FFFFFFF, 0x00000000},
10577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x0747AE14, 0x80000000, 0x00000000},
10677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x0747AE14, 0xFFFFFFFD, 0x00000000},
10777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x0747AE14, 0xFFFFFFFE, 0x00000000},
10877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x0747AE14, 0xFFFFFFFF, 0x00000000},
10977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x7FFFFFFF, 0x00000001, 0x7FFFFFFF},
11077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x7FFFFFFF, 0x00000002, 0x3FFFFFFF},
11177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x7FFFFFFF, 0x00000003, 0x2AAAAAAA},
11277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x7FFFFFFF, 0x00000010, 0x07FFFFFF},
11377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x7FFFFFFF, 0x078644FA, 0x00000011},
11477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x7FFFFFFF, 0x0747AE14, 0x00000011},
11577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x7FFFFFFF, 0x7FFFFFFF, 0x00000001},
11677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x7FFFFFFF, 0x80000000, 0x00000000},
11777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x7FFFFFFF, 0xFFFFFFFD, 0x00000000},
11877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x7FFFFFFF, 0xFFFFFFFE, 0x00000000},
11977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x7FFFFFFF, 0xFFFFFFFF, 0x00000000},
12077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x80000000, 0x00000001, 0x80000000},
12177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x80000000, 0x00000002, 0x40000000},
12277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x80000000, 0x00000003, 0x2AAAAAAA},
12377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x80000000, 0x00000010, 0x08000000},
12477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x80000000, 0x078644FA, 0x00000011},
12577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x80000000, 0x0747AE14, 0x00000011},
12677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x80000000, 0x7FFFFFFF, 0x00000001},
12777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x80000000, 0x80000000, 0x00000001},
12877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x80000000, 0xFFFFFFFD, 0x00000000},
12977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x80000000, 0xFFFFFFFE, 0x00000000},
13077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0x80000000, 0xFFFFFFFF, 0x00000000},
13177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFD, 0x00000001, 0xFFFFFFFD},
13277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFD, 0x00000002, 0x7FFFFFFE},
13377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFD, 0x00000003, 0x55555554},
13477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFD, 0x00000010, 0x0FFFFFFF},
13577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFD, 0x078644FA, 0x00000022},
13677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFD, 0x0747AE14, 0x00000023},
13777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFD, 0x7FFFFFFF, 0x00000001},
13877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFD, 0x80000000, 0x00000001},
13977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFD, 0xFFFFFFFD, 0x00000001},
14077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFD, 0xFFFFFFFE, 0x00000000},
14177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFD, 0xFFFFFFFF, 0x00000000},
14277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFE, 0x00000001, 0xFFFFFFFE},
14377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFE, 0x00000002, 0x7FFFFFFF},
14477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFE, 0x00000003, 0x55555554},
14577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFE, 0x00000010, 0x0FFFFFFF},
14677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFE, 0x078644FA, 0x00000022},
14777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFE, 0x0747AE14, 0x00000023},
14877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFE, 0x7FFFFFFF, 0x00000002},
14977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFE, 0x80000000, 0x00000001},
15077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFE, 0xFFFFFFFD, 0x00000001},
15177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFE, 0xFFFFFFFE, 0x00000001},
15277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFE, 0xFFFFFFFF, 0x00000000},
15377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFF, 0x00000001, 0xFFFFFFFF},
15477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFF, 0x00000002, 0x7FFFFFFF},
15577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFF, 0x00000003, 0x55555555},
15677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFF, 0x00000010, 0x0FFFFFFF},
15777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFF, 0x078644FA, 0x00000022},
15877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFF, 0x0747AE14, 0x00000023},
15977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFF, 0x7FFFFFFF, 0x00000002},
16077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFF, 0x80000000, 0x00000001},
16177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFF, 0xFFFFFFFD, 0x00000001},
16277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFF, 0xFFFFFFFE, 0x00000001},
16377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{0xFFFFFFFF, 0xFFFFFFFF, 0x00000001}
16477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao};
16577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao
16677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoint main()
16777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{
16877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    const unsigned N = sizeof(tests) / sizeof(tests[0]);
16977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    unsigned i;
17077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    for (i = 0; i < N; ++i)
17177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao        if (test__udivsi3(tests[i][0], tests[i][1], tests[i][2]))
17277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao            return 1;
17377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao
17477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    return 0;
17577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao}
176