166 lines · c
1// RUN: %clang_builtins %s %librt -o %t && %run %t2// REQUIRES: librt_has_umodsi33 4#include "int_lib.h"5#include <stdio.h>6 7// Returns: a % b8 9COMPILER_RT_ABI su_int __umodsi3(su_int a, su_int b);10 11int test__umodsi3(su_int a, su_int b, su_int expected_r)12{13 su_int r = __umodsi3(a, b);14 if (r != expected_r)15 printf("error in __umodsi3: %X %% %X = %X, expected %X\n",16 a, b, r, expected_r);17 return r != expected_r;18}19 20su_int tests[][4] =21{22{0x00000000, 0x00000001, 0x00000000},23{0x00000000, 0x00000002, 0x00000000},24{0x00000000, 0x00000003, 0x00000000},25{0x00000000, 0x00000010, 0x00000000},26{0x00000000, 0x078644FA, 0x00000000},27{0x00000000, 0x0747AE14, 0x00000000},28{0x00000000, 0x7FFFFFFF, 0x00000000},29{0x00000000, 0x80000000, 0x00000000},30{0x00000000, 0xFFFFFFFD, 0x00000000},31{0x00000000, 0xFFFFFFFE, 0x00000000},32{0x00000000, 0xFFFFFFFF, 0x00000000},33{0x00000001, 0x00000001, 0x00000000},34{0x00000001, 0x00000002, 0x00000001},35{0x00000001, 0x00000003, 0x00000001},36{0x00000001, 0x00000010, 0x00000001},37{0x00000001, 0x078644FA, 0x00000001},38{0x00000001, 0x0747AE14, 0x00000001},39{0x00000001, 0x7FFFFFFF, 0x00000001},40{0x00000001, 0x80000000, 0x00000001},41{0x00000001, 0xFFFFFFFD, 0x00000001},42{0x00000001, 0xFFFFFFFE, 0x00000001},43{0x00000001, 0xFFFFFFFF, 0x00000001},44{0x00000002, 0x00000001, 0x00000000},45{0x00000002, 0x00000002, 0x00000000},46{0x00000002, 0x00000003, 0x00000002},47{0x00000002, 0x00000010, 0x00000002},48{0x00000002, 0x078644FA, 0x00000002},49{0x00000002, 0x0747AE14, 0x00000002},50{0x00000002, 0x7FFFFFFF, 0x00000002},51{0x00000002, 0x80000000, 0x00000002},52{0x00000002, 0xFFFFFFFD, 0x00000002},53{0x00000002, 0xFFFFFFFE, 0x00000002},54{0x00000002, 0xFFFFFFFF, 0x00000002},55{0x00000003, 0x00000001, 0x00000000},56{0x00000003, 0x00000002, 0x00000001},57{0x00000003, 0x00000003, 0x00000000},58{0x00000003, 0x00000010, 0x00000003},59{0x00000003, 0x078644FA, 0x00000003},60{0x00000003, 0x0747AE14, 0x00000003},61{0x00000003, 0x7FFFFFFF, 0x00000003},62{0x00000003, 0x80000000, 0x00000003},63{0x00000003, 0xFFFFFFFD, 0x00000003},64{0x00000003, 0xFFFFFFFE, 0x00000003},65{0x00000003, 0xFFFFFFFF, 0x00000003},66{0x00000010, 0x00000001, 0x00000000},67{0x00000010, 0x00000002, 0x00000000},68{0x00000010, 0x00000003, 0x00000001},69{0x00000010, 0x00000010, 0x00000000},70{0x00000010, 0x078644FA, 0x00000010},71{0x00000010, 0x0747AE14, 0x00000010},72{0x00000010, 0x7FFFFFFF, 0x00000010},73{0x00000010, 0x80000000, 0x00000010},74{0x00000010, 0xFFFFFFFD, 0x00000010},75{0x00000010, 0xFFFFFFFE, 0x00000010},76{0x00000010, 0xFFFFFFFF, 0x00000010},77{0x078644FA, 0x00000001, 0x00000000},78{0x078644FA, 0x00000002, 0x00000000},79{0x078644FA, 0x00000003, 0x00000000},80{0x078644FA, 0x00000010, 0x0000000A},81{0x078644FA, 0x078644FA, 0x00000000},82{0x078644FA, 0x0747AE14, 0x003E96E6},83{0x078644FA, 0x7FFFFFFF, 0x078644FA},84{0x078644FA, 0x80000000, 0x078644FA},85{0x078644FA, 0xFFFFFFFD, 0x078644FA},86{0x078644FA, 0xFFFFFFFE, 0x078644FA},87{0x078644FA, 0xFFFFFFFF, 0x078644FA},88{0x0747AE14, 0x00000001, 0x00000000},89{0x0747AE14, 0x00000002, 0x00000000},90{0x0747AE14, 0x00000003, 0x00000002},91{0x0747AE14, 0x00000010, 0x00000004},92{0x0747AE14, 0x078644FA, 0x0747AE14},93{0x0747AE14, 0x0747AE14, 0x00000000},94{0x0747AE14, 0x7FFFFFFF, 0x0747AE14},95{0x0747AE14, 0x80000000, 0x0747AE14},96{0x0747AE14, 0xFFFFFFFD, 0x0747AE14},97{0x0747AE14, 0xFFFFFFFE, 0x0747AE14},98{0x0747AE14, 0xFFFFFFFF, 0x0747AE14},99{0x7FFFFFFF, 0x00000001, 0x00000000},100{0x7FFFFFFF, 0x00000002, 0x00000001},101{0x7FFFFFFF, 0x00000003, 0x00000001},102{0x7FFFFFFF, 0x00000010, 0x0000000F},103{0x7FFFFFFF, 0x078644FA, 0x00156B65},104{0x7FFFFFFF, 0x0747AE14, 0x043D70AB},105{0x7FFFFFFF, 0x7FFFFFFF, 0x00000000},106{0x7FFFFFFF, 0x80000000, 0x7FFFFFFF},107{0x7FFFFFFF, 0xFFFFFFFD, 0x7FFFFFFF},108{0x7FFFFFFF, 0xFFFFFFFE, 0x7FFFFFFF},109{0x7FFFFFFF, 0xFFFFFFFF, 0x7FFFFFFF},110{0x80000000, 0x00000001, 0x00000000},111{0x80000000, 0x00000002, 0x00000000},112{0x80000000, 0x00000003, 0x00000002},113{0x80000000, 0x00000010, 0x00000000},114{0x80000000, 0x078644FA, 0x00156B66},115{0x80000000, 0x0747AE14, 0x043D70AC},116{0x80000000, 0x7FFFFFFF, 0x00000001},117{0x80000000, 0x80000000, 0x00000000},118{0x80000000, 0xFFFFFFFD, 0x80000000},119{0x80000000, 0xFFFFFFFE, 0x80000000},120{0x80000000, 0xFFFFFFFF, 0x80000000},121{0xFFFFFFFD, 0x00000001, 0x00000000},122{0xFFFFFFFD, 0x00000002, 0x00000001},123{0xFFFFFFFD, 0x00000003, 0x00000001},124{0xFFFFFFFD, 0x00000010, 0x0000000D},125{0xFFFFFFFD, 0x078644FA, 0x002AD6C9},126{0xFFFFFFFD, 0x0747AE14, 0x01333341},127{0xFFFFFFFD, 0x7FFFFFFF, 0x7FFFFFFE},128{0xFFFFFFFD, 0x80000000, 0x7FFFFFFD},129{0xFFFFFFFD, 0xFFFFFFFD, 0x00000000},130{0xFFFFFFFD, 0xFFFFFFFE, 0xFFFFFFFD},131{0xFFFFFFFD, 0xFFFFFFFF, 0xFFFFFFFD},132{0xFFFFFFFE, 0x00000001, 0x00000000},133{0xFFFFFFFE, 0x00000002, 0x00000000},134{0xFFFFFFFE, 0x00000003, 0x00000002},135{0xFFFFFFFE, 0x00000010, 0x0000000E},136{0xFFFFFFFE, 0x078644FA, 0x002AD6CA},137{0xFFFFFFFE, 0x0747AE14, 0x01333342},138{0xFFFFFFFE, 0x7FFFFFFF, 0x00000000},139{0xFFFFFFFE, 0x80000000, 0x7FFFFFFE},140{0xFFFFFFFE, 0xFFFFFFFD, 0x00000001},141{0xFFFFFFFE, 0xFFFFFFFE, 0x00000000},142{0xFFFFFFFE, 0xFFFFFFFF, 0xFFFFFFFE},143{0xFFFFFFFF, 0x00000001, 0x00000000},144{0xFFFFFFFF, 0x00000002, 0x00000001},145{0xFFFFFFFF, 0x00000003, 0x00000000},146{0xFFFFFFFF, 0x00000010, 0x0000000F},147{0xFFFFFFFF, 0x078644FA, 0x002AD6CB},148{0xFFFFFFFF, 0x0747AE14, 0x01333343},149{0xFFFFFFFF, 0x7FFFFFFF, 0x00000001},150{0xFFFFFFFF, 0x80000000, 0x7FFFFFFF},151{0xFFFFFFFF, 0xFFFFFFFD, 0x00000002},152{0xFFFFFFFF, 0xFFFFFFFE, 0x00000001},153{0xFFFFFFFF, 0xFFFFFFFF, 0x00000000}154};155 156int main()157{158 const unsigned N = sizeof(tests) / sizeof(tests[0]);159 unsigned i;160 for (i = 0; i < N; ++i)161 if (test__umodsi3(tests[i][0], tests[i][1], tests[i][2]))162 return 1;163 164 return 0;165}166