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