brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.5 KiB · 0b0c142 Raw
100 lines · c
1// RUN: %clang_builtins %s %librt -o %t && %run %t2// REQUIRES: librt_has_mulsi33 4#include "int_lib.h"5#include <stdio.h>6#include <limits.h>7 8COMPILER_RT_ABI si_int __mulsi3(si_int a, si_int b);9 10int test__mulsi3(si_int a, si_int b, si_int expected)11{12    si_int x = __mulsi3(a, b);13    if (x != expected)14        printf("error in __mulsi3: %d * %d = %d, expected %d\n",15               a, b, x, expected);16    return x != expected;17}18 19int main()20{21    if (test__mulsi3(0, 0, 0))22        return 1;23    if (test__mulsi3(0, 1, 0))24        return 1;25    if (test__mulsi3(1, 0, 0))26        return 1;27    if (test__mulsi3(0, 10, 0))28        return 1;29    if (test__mulsi3(10, 0, 0))30        return 1;31    if (test__mulsi3(0, INT_MAX, 0))32        return 1;33    if (test__mulsi3(INT_MAX, 0, 0))34        return 1;35 36    if (test__mulsi3(0, -1, 0))37        return 1;38    if (test__mulsi3(-1, 0, 0))39        return 1;40    if (test__mulsi3(0, -10, 0))41        return 1;42    if (test__mulsi3(-10, 0, 0))43        return 1;44    if (test__mulsi3(0, INT_MIN, 0))45        return 1;46    if (test__mulsi3(INT_MIN, 0, 0))47        return 1;48 49    if (test__mulsi3(1, 1, 1))50        return 1;51    if (test__mulsi3(1, 10, 10))52        return 1;53    if (test__mulsi3(10, 1, 10))54        return 1;55    if (test__mulsi3(1, INT_MAX, INT_MAX))56        return 1;57    if (test__mulsi3(INT_MAX, 1, INT_MAX))58        return 1;59 60    if (test__mulsi3(1, -1, -1))61        return 1;62    if (test__mulsi3(1, -10, -10))63        return 1;64    if (test__mulsi3(-10, 1, -10))65        return 1;66    if (test__mulsi3(1, INT_MIN, INT_MIN))67        return 1;68    if (test__mulsi3(INT_MIN, 1, INT_MIN))69        return 1;70 71    if (test__mulsi3(46340, 46340, 2147395600))72        return 1;73    if (test__mulsi3(-46340, 46340, -2147395600))74        return 1;75    if (test__mulsi3(46340, -46340, -2147395600))76        return 1;77    if (test__mulsi3(-46340, -46340, 2147395600))78        return 1;79 80    if (test__mulsi3(4194303, 8192, 34359730176))81        return 1;82    if (test__mulsi3(-4194303, 8192, -34359730176))83        return 1;84    if (test__mulsi3(4194303, -8192, -34359730176))85        return 1;86    if (test__mulsi3(-4194303, -8192, 34359730176))87        return 1;88 89    if (test__mulsi3(8192, 4194303, 34359730176))90        return 1;91    if (test__mulsi3(-8192, 4194303, -34359730176))92        return 1;93    if (test__mulsi3(8192, -4194303, -34359730176))94        return 1;95    if (test__mulsi3(-8192, -4194303, 34359730176))96        return 1;97 98    return 0;99}100