brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.2 KiB · d7f7bdc Raw
56 lines · c
1// RUN: %clang_builtins %s %librt -o %t && %run %t2// REQUIRES: librt_has_absvsi23 4#include "int_lib.h"5#include <stdio.h>6#include <stdlib.h>7 8// Returns: absolute value9 10// Effects: aborts if abs(x) < 011 12COMPILER_RT_ABI si_int __absvsi2(si_int a);13 14int test__absvsi2(si_int a)15{16    si_int x = __absvsi2(a);17    si_int expected = a;18    if (expected < 0)19        expected = -expected;20    if (x != expected || expected < 0)21        printf("error in __absvsi2(0x%X) = %d, expected positive %d\n",22               a, x, expected);23    return x != expected;24}25 26int main()27{28//     if (test__absvsi2(0x80000000))  // should abort29//         return 1;30    if (test__absvsi2(0x00000000))31        return 1;32    if (test__absvsi2(0x00000001))33        return 1;34    if (test__absvsi2(0x00000002))35        return 1;36    if (test__absvsi2(0x7FFFFFFE))37        return 1;38    if (test__absvsi2(0x7FFFFFFF))39        return 1;40    if (test__absvsi2(0x80000001))41        return 1;42    if (test__absvsi2(0x80000002))43        return 1;44    if (test__absvsi2(0xFFFFFFFE))45        return 1;46    if (test__absvsi2(0xFFFFFFFF))47        return 1;48 49    int i;50    for (i = 0; i < 10000; ++i)51        if (test__absvsi2(rand()))52            return 1;53 54    return 0;55}56