11.1Sjoerg//===-- umodsi3_test.c - Test __umodsi3 -----------------------------------===// 21.1Sjoerg// 31.1Sjoerg// The LLVM Compiler Infrastructure 41.1Sjoerg// 51.1Sjoerg// This file is dual licensed under the MIT and the University of Illinois Open 61.1Sjoerg// Source Licenses. See LICENSE.TXT for details. 71.1Sjoerg// 81.1Sjoerg//===----------------------------------------------------------------------===// 91.1Sjoerg// 101.1Sjoerg// This file tests __umodsi3 for the compiler_rt library. 111.1Sjoerg// 121.1Sjoerg//===----------------------------------------------------------------------===// 131.1Sjoerg 141.1Sjoerg#include "int_lib.h" 151.1Sjoerg#include <stdio.h> 161.1Sjoerg 171.1Sjoerg// Returns: a % b 181.1Sjoerg 191.1Sjoergsu_int __umodsi3(su_int a, su_int b); 201.1Sjoerg 211.1Sjoergint test__umodsi3(su_int a, su_int b, su_int expected_r) 221.1Sjoerg{ 231.1Sjoerg su_int r = __umodsi3(a, b); 241.1Sjoerg if (r != expected_r) 251.1Sjoerg printf("error in __umodsi3: %X %% %X = %X, expected %X\n", 261.1Sjoerg a, b, r, expected_r); 271.1Sjoerg return r != expected_r; 281.1Sjoerg} 291.1Sjoerg 301.1Sjoergsu_int tests[][4] = 311.1Sjoerg{ 321.1Sjoerg{0x00000000, 0x00000001, 0x00000000}, 331.1Sjoerg{0x00000000, 0x00000002, 0x00000000}, 341.1Sjoerg{0x00000000, 0x00000003, 0x00000000}, 351.1Sjoerg{0x00000000, 0x00000010, 0x00000000}, 361.1Sjoerg{0x00000000, 0x078644FA, 0x00000000}, 371.1Sjoerg{0x00000000, 0x0747AE14, 0x00000000}, 381.1Sjoerg{0x00000000, 0x7FFFFFFF, 0x00000000}, 391.1Sjoerg{0x00000000, 0x80000000, 0x00000000}, 401.1Sjoerg{0x00000000, 0xFFFFFFFD, 0x00000000}, 411.1Sjoerg{0x00000000, 0xFFFFFFFE, 0x00000000}, 421.1Sjoerg{0x00000000, 0xFFFFFFFF, 0x00000000}, 431.1Sjoerg{0x00000001, 0x00000001, 0x00000000}, 441.1Sjoerg{0x00000001, 0x00000002, 0x00000001}, 451.1Sjoerg{0x00000001, 0x00000003, 0x00000001}, 461.1Sjoerg{0x00000001, 0x00000010, 0x00000001}, 471.1Sjoerg{0x00000001, 0x078644FA, 0x00000001}, 481.1Sjoerg{0x00000001, 0x0747AE14, 0x00000001}, 491.1Sjoerg{0x00000001, 0x7FFFFFFF, 0x00000001}, 501.1Sjoerg{0x00000001, 0x80000000, 0x00000001}, 511.1Sjoerg{0x00000001, 0xFFFFFFFD, 0x00000001}, 521.1Sjoerg{0x00000001, 0xFFFFFFFE, 0x00000001}, 531.1Sjoerg{0x00000001, 0xFFFFFFFF, 0x00000001}, 541.1Sjoerg{0x00000002, 0x00000001, 0x00000000}, 551.1Sjoerg{0x00000002, 0x00000002, 0x00000000}, 561.1Sjoerg{0x00000002, 0x00000003, 0x00000002}, 571.1Sjoerg{0x00000002, 0x00000010, 0x00000002}, 581.1Sjoerg{0x00000002, 0x078644FA, 0x00000002}, 591.1Sjoerg{0x00000002, 0x0747AE14, 0x00000002}, 601.1Sjoerg{0x00000002, 0x7FFFFFFF, 0x00000002}, 611.1Sjoerg{0x00000002, 0x80000000, 0x00000002}, 621.1Sjoerg{0x00000002, 0xFFFFFFFD, 0x00000002}, 631.1Sjoerg{0x00000002, 0xFFFFFFFE, 0x00000002}, 641.1Sjoerg{0x00000002, 0xFFFFFFFF, 0x00000002}, 651.1Sjoerg{0x00000003, 0x00000001, 0x00000000}, 661.1Sjoerg{0x00000003, 0x00000002, 0x00000001}, 671.1Sjoerg{0x00000003, 0x00000003, 0x00000000}, 681.1Sjoerg{0x00000003, 0x00000010, 0x00000003}, 691.1Sjoerg{0x00000003, 0x078644FA, 0x00000003}, 701.1Sjoerg{0x00000003, 0x0747AE14, 0x00000003}, 711.1Sjoerg{0x00000003, 0x7FFFFFFF, 0x00000003}, 721.1Sjoerg{0x00000003, 0x80000000, 0x00000003}, 731.1Sjoerg{0x00000003, 0xFFFFFFFD, 0x00000003}, 741.1Sjoerg{0x00000003, 0xFFFFFFFE, 0x00000003}, 751.1Sjoerg{0x00000003, 0xFFFFFFFF, 0x00000003}, 761.1Sjoerg{0x00000010, 0x00000001, 0x00000000}, 771.1Sjoerg{0x00000010, 0x00000002, 0x00000000}, 781.1Sjoerg{0x00000010, 0x00000003, 0x00000001}, 791.1Sjoerg{0x00000010, 0x00000010, 0x00000000}, 801.1Sjoerg{0x00000010, 0x078644FA, 0x00000010}, 811.1Sjoerg{0x00000010, 0x0747AE14, 0x00000010}, 821.1Sjoerg{0x00000010, 0x7FFFFFFF, 0x00000010}, 831.1Sjoerg{0x00000010, 0x80000000, 0x00000010}, 841.1Sjoerg{0x00000010, 0xFFFFFFFD, 0x00000010}, 851.1Sjoerg{0x00000010, 0xFFFFFFFE, 0x00000010}, 861.1Sjoerg{0x00000010, 0xFFFFFFFF, 0x00000010}, 871.1Sjoerg{0x078644FA, 0x00000001, 0x00000000}, 881.1Sjoerg{0x078644FA, 0x00000002, 0x00000000}, 891.1Sjoerg{0x078644FA, 0x00000003, 0x00000000}, 901.1Sjoerg{0x078644FA, 0x00000010, 0x0000000A}, 911.1Sjoerg{0x078644FA, 0x078644FA, 0x00000000}, 921.1Sjoerg{0x078644FA, 0x0747AE14, 0x003E96E6}, 931.1Sjoerg{0x078644FA, 0x7FFFFFFF, 0x078644FA}, 941.1Sjoerg{0x078644FA, 0x80000000, 0x078644FA}, 951.1Sjoerg{0x078644FA, 0xFFFFFFFD, 0x078644FA}, 961.1Sjoerg{0x078644FA, 0xFFFFFFFE, 0x078644FA}, 971.1Sjoerg{0x078644FA, 0xFFFFFFFF, 0x078644FA}, 981.1Sjoerg{0x0747AE14, 0x00000001, 0x00000000}, 991.1Sjoerg{0x0747AE14, 0x00000002, 0x00000000}, 1001.1Sjoerg{0x0747AE14, 0x00000003, 0x00000002}, 1011.1Sjoerg{0x0747AE14, 0x00000010, 0x00000004}, 1021.1Sjoerg{0x0747AE14, 0x078644FA, 0x0747AE14}, 1031.1Sjoerg{0x0747AE14, 0x0747AE14, 0x00000000}, 1041.1Sjoerg{0x0747AE14, 0x7FFFFFFF, 0x0747AE14}, 1051.1Sjoerg{0x0747AE14, 0x80000000, 0x0747AE14}, 1061.1Sjoerg{0x0747AE14, 0xFFFFFFFD, 0x0747AE14}, 1071.1Sjoerg{0x0747AE14, 0xFFFFFFFE, 0x0747AE14}, 1081.1Sjoerg{0x0747AE14, 0xFFFFFFFF, 0x0747AE14}, 1091.1Sjoerg{0x7FFFFFFF, 0x00000001, 0x00000000}, 1101.1Sjoerg{0x7FFFFFFF, 0x00000002, 0x00000001}, 1111.1Sjoerg{0x7FFFFFFF, 0x00000003, 0x00000001}, 1121.1Sjoerg{0x7FFFFFFF, 0x00000010, 0x0000000F}, 1131.1Sjoerg{0x7FFFFFFF, 0x078644FA, 0x00156B65}, 1141.1Sjoerg{0x7FFFFFFF, 0x0747AE14, 0x043D70AB}, 1151.1Sjoerg{0x7FFFFFFF, 0x7FFFFFFF, 0x00000000}, 1161.1Sjoerg{0x7FFFFFFF, 0x80000000, 0x7FFFFFFF}, 1171.1Sjoerg{0x7FFFFFFF, 0xFFFFFFFD, 0x7FFFFFFF}, 1181.1Sjoerg{0x7FFFFFFF, 0xFFFFFFFE, 0x7FFFFFFF}, 1191.1Sjoerg{0x7FFFFFFF, 0xFFFFFFFF, 0x7FFFFFFF}, 1201.1Sjoerg{0x80000000, 0x00000001, 0x00000000}, 1211.1Sjoerg{0x80000000, 0x00000002, 0x00000000}, 1221.1Sjoerg{0x80000000, 0x00000003, 0x00000002}, 1231.1Sjoerg{0x80000000, 0x00000010, 0x00000000}, 1241.1Sjoerg{0x80000000, 0x078644FA, 0x00156B66}, 1251.1Sjoerg{0x80000000, 0x0747AE14, 0x043D70AC}, 1261.1Sjoerg{0x80000000, 0x7FFFFFFF, 0x00000001}, 1271.1Sjoerg{0x80000000, 0x80000000, 0x00000000}, 1281.1Sjoerg{0x80000000, 0xFFFFFFFD, 0x80000000}, 1291.1Sjoerg{0x80000000, 0xFFFFFFFE, 0x80000000}, 1301.1Sjoerg{0x80000000, 0xFFFFFFFF, 0x80000000}, 1311.1Sjoerg{0xFFFFFFFD, 0x00000001, 0x00000000}, 1321.1Sjoerg{0xFFFFFFFD, 0x00000002, 0x00000001}, 1331.1Sjoerg{0xFFFFFFFD, 0x00000003, 0x00000001}, 1341.1Sjoerg{0xFFFFFFFD, 0x00000010, 0x0000000D}, 1351.1Sjoerg{0xFFFFFFFD, 0x078644FA, 0x002AD6C9}, 1361.1Sjoerg{0xFFFFFFFD, 0x0747AE14, 0x01333341}, 1371.1Sjoerg{0xFFFFFFFD, 0x7FFFFFFF, 0x7FFFFFFE}, 1381.1Sjoerg{0xFFFFFFFD, 0x80000000, 0x7FFFFFFD}, 1391.1Sjoerg{0xFFFFFFFD, 0xFFFFFFFD, 0x00000000}, 1401.1Sjoerg{0xFFFFFFFD, 0xFFFFFFFE, 0xFFFFFFFD}, 1411.1Sjoerg{0xFFFFFFFD, 0xFFFFFFFF, 0xFFFFFFFD}, 1421.1Sjoerg{0xFFFFFFFE, 0x00000001, 0x00000000}, 1431.1Sjoerg{0xFFFFFFFE, 0x00000002, 0x00000000}, 1441.1Sjoerg{0xFFFFFFFE, 0x00000003, 0x00000002}, 1451.1Sjoerg{0xFFFFFFFE, 0x00000010, 0x0000000E}, 1461.1Sjoerg{0xFFFFFFFE, 0x078644FA, 0x002AD6CA}, 1471.1Sjoerg{0xFFFFFFFE, 0x0747AE14, 0x01333342}, 1481.1Sjoerg{0xFFFFFFFE, 0x7FFFFFFF, 0x00000000}, 1491.1Sjoerg{0xFFFFFFFE, 0x80000000, 0x7FFFFFFE}, 1501.1Sjoerg{0xFFFFFFFE, 0xFFFFFFFD, 0x00000001}, 1511.1Sjoerg{0xFFFFFFFE, 0xFFFFFFFE, 0x00000000}, 1521.1Sjoerg{0xFFFFFFFE, 0xFFFFFFFF, 0xFFFFFFFE}, 1531.1Sjoerg{0xFFFFFFFF, 0x00000001, 0x00000000}, 1541.1Sjoerg{0xFFFFFFFF, 0x00000002, 0x00000001}, 1551.1Sjoerg{0xFFFFFFFF, 0x00000003, 0x00000000}, 1561.1Sjoerg{0xFFFFFFFF, 0x00000010, 0x0000000F}, 1571.1Sjoerg{0xFFFFFFFF, 0x078644FA, 0x002AD6CB}, 1581.1Sjoerg{0xFFFFFFFF, 0x0747AE14, 0x01333343}, 1591.1Sjoerg{0xFFFFFFFF, 0x7FFFFFFF, 0x00000001}, 1601.1Sjoerg{0xFFFFFFFF, 0x80000000, 0x7FFFFFFF}, 1611.1Sjoerg{0xFFFFFFFF, 0xFFFFFFFD, 0x00000002}, 1621.1Sjoerg{0xFFFFFFFF, 0xFFFFFFFE, 0x00000001}, 1631.1Sjoerg{0xFFFFFFFF, 0xFFFFFFFF, 0x00000000} 1641.1Sjoerg}; 1651.1Sjoerg 1661.1Sjoergint main() 1671.1Sjoerg{ 1681.1Sjoerg const unsigned N = sizeof(tests) / sizeof(tests[0]); 1691.1Sjoerg unsigned i; 1701.1Sjoerg for (i = 0; i < N; ++i) 1711.1Sjoerg if (test__umodsi3(tests[i][0], tests[i][1], tests[i][2])) 1721.1Sjoerg return 1; 1731.1Sjoerg 1741.1Sjoerg return 0; 1751.1Sjoerg} 176