11.1Sjoerg//===-- absvsi2_test.c - Test __absvsi2 -----------------------------------===//
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 __absvsi2 for the compiler_rt library.
111.1Sjoerg//
121.1Sjoerg//===----------------------------------------------------------------------===//
131.1Sjoerg
141.1Sjoerg#include "int_lib.h"
151.1Sjoerg#include <stdio.h>
161.1Sjoerg#include <stdlib.h>
171.1Sjoerg
181.1Sjoerg// Returns: absolute value
191.1Sjoerg
201.1Sjoerg// Effects: aborts if abs(x) < 0
211.1Sjoerg
221.1Sjoergsi_int __absvsi2(si_int a);
231.1Sjoerg
241.1Sjoergint test__absvsi2(si_int a)
251.1Sjoerg{
261.1Sjoerg    si_int x = __absvsi2(a);
271.1Sjoerg    si_int expected = a;
281.1Sjoerg    if (expected < 0)
291.1Sjoerg        expected = -expected;
301.1Sjoerg    if (x != expected || expected < 0)
311.1Sjoerg        printf("error in __absvsi2(0x%X) = %d, expected positive %d\n",
321.1Sjoerg               a, x, expected);
331.1Sjoerg    return x != expected;
341.1Sjoerg}
351.1Sjoerg
361.1Sjoergint main()
371.1Sjoerg{
381.1Sjoerg//     if (test__absvsi2(0x80000000))  // should abort
391.1Sjoerg//         return 1;
401.1Sjoerg    if (test__absvsi2(0x00000000))
411.1Sjoerg        return 1;
421.1Sjoerg    if (test__absvsi2(0x00000001))
431.1Sjoerg        return 1;
441.1Sjoerg    if (test__absvsi2(0x00000002))
451.1Sjoerg        return 1;
461.1Sjoerg    if (test__absvsi2(0x7FFFFFFE))
471.1Sjoerg        return 1;
481.1Sjoerg    if (test__absvsi2(0x7FFFFFFF))
491.1Sjoerg        return 1;
501.1Sjoerg    if (test__absvsi2(0x80000001))
511.1Sjoerg        return 1;
521.1Sjoerg    if (test__absvsi2(0x80000002))
531.1Sjoerg        return 1;
541.1Sjoerg    if (test__absvsi2(0xFFFFFFFE))
551.1Sjoerg        return 1;
561.1Sjoerg    if (test__absvsi2(0xFFFFFFFF))
571.1Sjoerg        return 1;
581.1Sjoerg
591.1Sjoerg    int i;
601.1Sjoerg    for (i = 0; i < 10000; ++i)
611.1Sjoerg        if (test__absvsi2(rand()))
621.1Sjoerg            return 1;
631.1Sjoerg
641.1Sjoerg    return 0;
651.1Sjoerg}
66