Home | History | Annotate | Line # | Download | only in Unit
      1  1.1  joerg //===-- udivsi3_test.c - Test __udivsi3 -----------------------------------===//
      2  1.1  joerg //
      3  1.1  joerg //                     The LLVM Compiler Infrastructure
      4  1.1  joerg //
      5  1.1  joerg // This file is dual licensed under the MIT and the University of Illinois Open
      6  1.1  joerg // Source Licenses. See LICENSE.TXT for details.
      7  1.1  joerg //
      8  1.1  joerg //===----------------------------------------------------------------------===//
      9  1.1  joerg //
     10  1.1  joerg // This file tests __udivsi3 for the compiler_rt library.
     11  1.1  joerg //
     12  1.1  joerg //===----------------------------------------------------------------------===//
     13  1.1  joerg 
     14  1.1  joerg #include "int_lib.h"
     15  1.1  joerg #include <stdio.h>
     16  1.1  joerg 
     17  1.1  joerg // Returns: a / b
     18  1.1  joerg 
     19  1.1  joerg su_int __udivsi3(su_int a, su_int b);
     20  1.1  joerg 
     21  1.1  joerg int test__udivsi3(su_int a, su_int b, su_int expected_q)
     22  1.1  joerg {
     23  1.1  joerg     su_int q = __udivsi3(a, b);
     24  1.1  joerg     if (q != expected_q)
     25  1.1  joerg         printf("error in __udivsi3: %X / %X = %X, expected %X\n",
     26  1.1  joerg                a, b, q, expected_q);
     27  1.1  joerg     return q != expected_q;
     28  1.1  joerg }
     29  1.1  joerg 
     30  1.1  joerg su_int tests[][4] =
     31  1.1  joerg {
     32  1.1  joerg {0x00000000, 0x00000001, 0x00000000},
     33  1.1  joerg {0x00000000, 0x00000002, 0x00000000},
     34  1.1  joerg {0x00000000, 0x00000003, 0x00000000},
     35  1.1  joerg {0x00000000, 0x00000010, 0x00000000},
     36  1.1  joerg {0x00000000, 0x078644FA, 0x00000000},
     37  1.1  joerg {0x00000000, 0x0747AE14, 0x00000000},
     38  1.1  joerg {0x00000000, 0x7FFFFFFF, 0x00000000},
     39  1.1  joerg {0x00000000, 0x80000000, 0x00000000},
     40  1.1  joerg {0x00000000, 0xFFFFFFFD, 0x00000000},
     41  1.1  joerg {0x00000000, 0xFFFFFFFE, 0x00000000},
     42  1.1  joerg {0x00000000, 0xFFFFFFFF, 0x00000000},
     43  1.1  joerg {0x00000001, 0x00000001, 0x00000001},
     44  1.1  joerg {0x00000001, 0x00000002, 0x00000000},
     45  1.1  joerg {0x00000001, 0x00000003, 0x00000000},
     46  1.1  joerg {0x00000001, 0x00000010, 0x00000000},
     47  1.1  joerg {0x00000001, 0x078644FA, 0x00000000},
     48  1.1  joerg {0x00000001, 0x0747AE14, 0x00000000},
     49  1.1  joerg {0x00000001, 0x7FFFFFFF, 0x00000000},
     50  1.1  joerg {0x00000001, 0x80000000, 0x00000000},
     51  1.1  joerg {0x00000001, 0xFFFFFFFD, 0x00000000},
     52  1.1  joerg {0x00000001, 0xFFFFFFFE, 0x00000000},
     53  1.1  joerg {0x00000001, 0xFFFFFFFF, 0x00000000},
     54  1.1  joerg {0x00000002, 0x00000001, 0x00000002},
     55  1.1  joerg {0x00000002, 0x00000002, 0x00000001},
     56  1.1  joerg {0x00000002, 0x00000003, 0x00000000},
     57  1.1  joerg {0x00000002, 0x00000010, 0x00000000},
     58  1.1  joerg {0x00000002, 0x078644FA, 0x00000000},
     59  1.1  joerg {0x00000002, 0x0747AE14, 0x00000000},
     60  1.1  joerg {0x00000002, 0x7FFFFFFF, 0x00000000},
     61  1.1  joerg {0x00000002, 0x80000000, 0x00000000},
     62  1.1  joerg {0x00000002, 0xFFFFFFFD, 0x00000000},
     63  1.1  joerg {0x00000002, 0xFFFFFFFE, 0x00000000},
     64  1.1  joerg {0x00000002, 0xFFFFFFFF, 0x00000000},
     65  1.1  joerg {0x00000003, 0x00000001, 0x00000003},
     66  1.1  joerg {0x00000003, 0x00000002, 0x00000001},
     67  1.1  joerg {0x00000003, 0x00000003, 0x00000001},
     68  1.1  joerg {0x00000003, 0x00000010, 0x00000000},
     69  1.1  joerg {0x00000003, 0x078644FA, 0x00000000},
     70  1.1  joerg {0x00000003, 0x0747AE14, 0x00000000},
     71  1.1  joerg {0x00000003, 0x7FFFFFFF, 0x00000000},
     72  1.1  joerg {0x00000003, 0x80000000, 0x00000000},
     73  1.1  joerg {0x00000003, 0xFFFFFFFD, 0x00000000},
     74  1.1  joerg {0x00000003, 0xFFFFFFFE, 0x00000000},
     75  1.1  joerg {0x00000003, 0xFFFFFFFF, 0x00000000},
     76  1.1  joerg {0x00000010, 0x00000001, 0x00000010},
     77  1.1  joerg {0x00000010, 0x00000002, 0x00000008},
     78  1.1  joerg {0x00000010, 0x00000003, 0x00000005},
     79  1.1  joerg {0x00000010, 0x00000010, 0x00000001},
     80  1.1  joerg {0x00000010, 0x078644FA, 0x00000000},
     81  1.1  joerg {0x00000010, 0x0747AE14, 0x00000000},
     82  1.1  joerg {0x00000010, 0x7FFFFFFF, 0x00000000},
     83  1.1  joerg {0x00000010, 0x80000000, 0x00000000},
     84  1.1  joerg {0x00000010, 0xFFFFFFFD, 0x00000000},
     85  1.1  joerg {0x00000010, 0xFFFFFFFE, 0x00000000},
     86  1.1  joerg {0x00000010, 0xFFFFFFFF, 0x00000000},
     87  1.1  joerg {0x078644FA, 0x00000001, 0x078644FA},
     88  1.1  joerg {0x078644FA, 0x00000002, 0x03C3227D},
     89  1.1  joerg {0x078644FA, 0x00000003, 0x028216FE},
     90  1.1  joerg {0x078644FA, 0x00000010, 0x0078644F},
     91  1.1  joerg {0x078644FA, 0x078644FA, 0x00000001},
     92  1.1  joerg {0x078644FA, 0x0747AE14, 0x00000001},
     93  1.1  joerg {0x078644FA, 0x7FFFFFFF, 0x00000000},
     94  1.1  joerg {0x078644FA, 0x80000000, 0x00000000},
     95  1.1  joerg {0x078644FA, 0xFFFFFFFD, 0x00000000},
     96  1.1  joerg {0x078644FA, 0xFFFFFFFE, 0x00000000},
     97  1.1  joerg {0x078644FA, 0xFFFFFFFF, 0x00000000},
     98  1.1  joerg {0x0747AE14, 0x00000001, 0x0747AE14},
     99  1.1  joerg {0x0747AE14, 0x00000002, 0x03A3D70A},
    100  1.1  joerg {0x0747AE14, 0x00000003, 0x026D3A06},
    101  1.1  joerg {0x0747AE14, 0x00000010, 0x00747AE1},
    102  1.1  joerg {0x0747AE14, 0x078644FA, 0x00000000},
    103  1.1  joerg {0x0747AE14, 0x0747AE14, 0x00000001},
    104  1.1  joerg {0x0747AE14, 0x7FFFFFFF, 0x00000000},
    105  1.1  joerg {0x0747AE14, 0x80000000, 0x00000000},
    106  1.1  joerg {0x0747AE14, 0xFFFFFFFD, 0x00000000},
    107  1.1  joerg {0x0747AE14, 0xFFFFFFFE, 0x00000000},
    108  1.1  joerg {0x0747AE14, 0xFFFFFFFF, 0x00000000},
    109  1.1  joerg {0x7FFFFFFF, 0x00000001, 0x7FFFFFFF},
    110  1.1  joerg {0x7FFFFFFF, 0x00000002, 0x3FFFFFFF},
    111  1.1  joerg {0x7FFFFFFF, 0x00000003, 0x2AAAAAAA},
    112  1.1  joerg {0x7FFFFFFF, 0x00000010, 0x07FFFFFF},
    113  1.1  joerg {0x7FFFFFFF, 0x078644FA, 0x00000011},
    114  1.1  joerg {0x7FFFFFFF, 0x0747AE14, 0x00000011},
    115  1.1  joerg {0x7FFFFFFF, 0x7FFFFFFF, 0x00000001},
    116  1.1  joerg {0x7FFFFFFF, 0x80000000, 0x00000000},
    117  1.1  joerg {0x7FFFFFFF, 0xFFFFFFFD, 0x00000000},
    118  1.1  joerg {0x7FFFFFFF, 0xFFFFFFFE, 0x00000000},
    119  1.1  joerg {0x7FFFFFFF, 0xFFFFFFFF, 0x00000000},
    120  1.1  joerg {0x80000000, 0x00000001, 0x80000000},
    121  1.1  joerg {0x80000000, 0x00000002, 0x40000000},
    122  1.1  joerg {0x80000000, 0x00000003, 0x2AAAAAAA},
    123  1.1  joerg {0x80000000, 0x00000010, 0x08000000},
    124  1.1  joerg {0x80000000, 0x078644FA, 0x00000011},
    125  1.1  joerg {0x80000000, 0x0747AE14, 0x00000011},
    126  1.1  joerg {0x80000000, 0x7FFFFFFF, 0x00000001},
    127  1.1  joerg {0x80000000, 0x80000000, 0x00000001},
    128  1.1  joerg {0x80000000, 0xFFFFFFFD, 0x00000000},
    129  1.1  joerg {0x80000000, 0xFFFFFFFE, 0x00000000},
    130  1.1  joerg {0x80000000, 0xFFFFFFFF, 0x00000000},
    131  1.1  joerg {0xFFFFFFFD, 0x00000001, 0xFFFFFFFD},
    132  1.1  joerg {0xFFFFFFFD, 0x00000002, 0x7FFFFFFE},
    133  1.1  joerg {0xFFFFFFFD, 0x00000003, 0x55555554},
    134  1.1  joerg {0xFFFFFFFD, 0x00000010, 0x0FFFFFFF},
    135  1.1  joerg {0xFFFFFFFD, 0x078644FA, 0x00000022},
    136  1.1  joerg {0xFFFFFFFD, 0x0747AE14, 0x00000023},
    137  1.1  joerg {0xFFFFFFFD, 0x7FFFFFFF, 0x00000001},
    138  1.1  joerg {0xFFFFFFFD, 0x80000000, 0x00000001},
    139  1.1  joerg {0xFFFFFFFD, 0xFFFFFFFD, 0x00000001},
    140  1.1  joerg {0xFFFFFFFD, 0xFFFFFFFE, 0x00000000},
    141  1.1  joerg {0xFFFFFFFD, 0xFFFFFFFF, 0x00000000},
    142  1.1  joerg {0xFFFFFFFE, 0x00000001, 0xFFFFFFFE},
    143  1.1  joerg {0xFFFFFFFE, 0x00000002, 0x7FFFFFFF},
    144  1.1  joerg {0xFFFFFFFE, 0x00000003, 0x55555554},
    145  1.1  joerg {0xFFFFFFFE, 0x00000010, 0x0FFFFFFF},
    146  1.1  joerg {0xFFFFFFFE, 0x078644FA, 0x00000022},
    147  1.1  joerg {0xFFFFFFFE, 0x0747AE14, 0x00000023},
    148  1.1  joerg {0xFFFFFFFE, 0x7FFFFFFF, 0x00000002},
    149  1.1  joerg {0xFFFFFFFE, 0x80000000, 0x00000001},
    150  1.1  joerg {0xFFFFFFFE, 0xFFFFFFFD, 0x00000001},
    151  1.1  joerg {0xFFFFFFFE, 0xFFFFFFFE, 0x00000001},
    152  1.1  joerg {0xFFFFFFFE, 0xFFFFFFFF, 0x00000000},
    153  1.1  joerg {0xFFFFFFFF, 0x00000001, 0xFFFFFFFF},
    154  1.1  joerg {0xFFFFFFFF, 0x00000002, 0x7FFFFFFF},
    155  1.1  joerg {0xFFFFFFFF, 0x00000003, 0x55555555},
    156  1.1  joerg {0xFFFFFFFF, 0x00000010, 0x0FFFFFFF},
    157  1.1  joerg {0xFFFFFFFF, 0x078644FA, 0x00000022},
    158  1.1  joerg {0xFFFFFFFF, 0x0747AE14, 0x00000023},
    159  1.1  joerg {0xFFFFFFFF, 0x7FFFFFFF, 0x00000002},
    160  1.1  joerg {0xFFFFFFFF, 0x80000000, 0x00000001},
    161  1.1  joerg {0xFFFFFFFF, 0xFFFFFFFD, 0x00000001},
    162  1.1  joerg {0xFFFFFFFF, 0xFFFFFFFE, 0x00000001},
    163  1.1  joerg {0xFFFFFFFF, 0xFFFFFFFF, 0x00000001}
    164  1.1  joerg };
    165  1.1  joerg 
    166  1.1  joerg int main()
    167  1.1  joerg {
    168  1.1  joerg     const unsigned N = sizeof(tests) / sizeof(tests[0]);
    169  1.1  joerg     unsigned i;
    170  1.1  joerg     for (i = 0; i < N; ++i)
    171  1.1  joerg         if (test__udivsi3(tests[i][0], tests[i][1], tests[i][2]))
    172  1.1  joerg             return 1;
    173  1.1  joerg 
    174  1.1  joerg     return 0;
    175  1.1  joerg }
    176