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