Home | History | Annotate | Line # | Download | only in Unit
      1  1.1  joerg /* ===-- modsi3_test.c - Test __modsi3 -------------------------------------===
      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 __modsi3 for the compiler_rt library.
     11  1.1  joerg  *
     12  1.1  joerg  * ===----------------------------------------------------------------------===
     13  1.1  joerg  */
     14  1.1  joerg 
     15  1.1  joerg #include "int_lib.h"
     16  1.1  joerg #include <stdio.h>
     17  1.1  joerg 
     18  1.1  joerg /* Returns: a % b */
     19  1.1  joerg 
     20  1.1  joerg si_int __modsi3(si_int a, si_int b);
     21  1.1  joerg 
     22  1.1  joerg int test__modsi3(si_int a, si_int b, si_int expected) {
     23  1.1  joerg     si_int x = __modsi3(a, b);
     24  1.1  joerg     if (x != expected)
     25  1.1  joerg         fprintf(stderr, "error in __modsi3: %d %% %d = %d, expected %d\n",
     26  1.1  joerg                a, b, x, expected);
     27  1.1  joerg     return x != expected;
     28  1.1  joerg }
     29  1.1  joerg 
     30  1.1  joerg int main() {
     31  1.1  joerg     if (test__modsi3(0, 1, 0))
     32  1.1  joerg         return 1;
     33  1.1  joerg     if (test__modsi3(0, -1, 0))
     34  1.1  joerg         return 1;
     35  1.1  joerg 
     36  1.1  joerg     if (test__modsi3(5, 3, 2))
     37  1.1  joerg         return 1;
     38  1.1  joerg     if (test__modsi3(5, -3, 2))
     39  1.1  joerg         return 1;
     40  1.1  joerg     if (test__modsi3(-5, 3, -2))
     41  1.1  joerg         return 1;
     42  1.1  joerg     if (test__modsi3(-5, -3, -2))
     43  1.1  joerg         return 1;
     44  1.1  joerg 
     45  1.1  joerg     if (test__modsi3(0x80000000, 1, 0x0))
     46  1.1  joerg         return 1;
     47  1.1  joerg     if (test__modsi3(0x80000000, 2, 0x0))
     48  1.1  joerg         return 1;
     49  1.1  joerg     if (test__modsi3(0x80000000, -2, 0x0))
     50  1.1  joerg         return 1;
     51  1.1  joerg     if (test__modsi3(0x80000000, 3, -2))
     52  1.1  joerg         return 1;
     53  1.1  joerg     if (test__modsi3(0x80000000, -3, -2))
     54  1.1  joerg         return 1;
     55  1.1  joerg 
     56  1.1  joerg     return 0;
     57  1.1  joerg }
     58