blob: 5584a8041028d4b11db8d474fb6863a2059753ba [file] [log] [blame]
Daniel Dunbarfd089992009-06-26 16:47:03 +00001//===-- absvsi2_test.c - Test __absvsi2 -----------------------------------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file tests __absvsi2 for the compiler_rt library.
11//
12//===----------------------------------------------------------------------===//
13
14#include "int_lib.h"
15#include <stdio.h>
16
17// Returns: absolute value
18
19// Effects: aborts if abs(x) < 0
20
21si_int __absvsi2(si_int a);
22
23int test__absvsi2(si_int a)
24{
25 si_int x = __absvsi2(a);
26 si_int expected = a;
27 if (expected < 0)
28 expected = -expected;
29 if (x != expected || expected < 0)
30 printf("error in __absvsi2(0x%X) = %d, expected positive %d\n",
31 a, x, expected);
32 return x != expected;
33}
34
35int main()
36{
37// if (test__absvsi2(0x80000000)) // should abort
38// return 1;
39 if (test__absvsi2(0x00000000))
40 return 1;
41 if (test__absvsi2(0x00000001))
42 return 1;
43 if (test__absvsi2(0x00000002))
44 return 1;
45 if (test__absvsi2(0x7FFFFFFE))
46 return 1;
47 if (test__absvsi2(0x7FFFFFFF))
48 return 1;
49 if (test__absvsi2(0x80000001))
50 return 1;
51 if (test__absvsi2(0x80000002))
52 return 1;
53 if (test__absvsi2(0xFFFFFFFE))
54 return 1;
55 if (test__absvsi2(0xFFFFFFFF))
56 return 1;
57
58 int i;
59 for (i = 0; i < 10000; ++i)
60 if (test__absvsi2(rand()))
61 return 1;
62
63 return 0;
64}