]> git.proxmox.com Git - rustc.git/blame - src/libcompiler_builtins/compiler-rt/test/builtins/Unit/subvsi3_test.c
New upstream version 1.28.0+dfsg1
[rustc.git] / src / libcompiler_builtins / compiler-rt / test / builtins / Unit / subvsi3_test.c
CommitLineData
2c00a5a8 1// RUN: %clang_builtins %s %librt -o %t && %run %t
1a4d82fc
JJ
2//===-- subvsi3_test.c - Test __subvsi3 -----------------------------------===//
3//
4// The LLVM Compiler Infrastructure
5//
6// This file is dual licensed under the MIT and the University of Illinois Open
7// Source Licenses. See LICENSE.TXT for details.
8//
9//===----------------------------------------------------------------------===//
10//
11// This file tests __subvsi3 for the compiler_rt library.
12//
13//===----------------------------------------------------------------------===//
14
15#include "int_lib.h"
16#include <stdio.h>
17#include <stdlib.h>
18
19// Returns: a - b
20
21// Effects: aborts if a - b overflows
22
92a42be0 23COMPILER_RT_ABI si_int __subvsi3(si_int a, si_int b);
1a4d82fc
JJ
24
25int test__subvsi3(si_int a, si_int b)
26{
27 si_int x = __subvsi3(a, b);
28 si_int expected = a - b;
29 if (x != expected)
30 printf("error in test__subvsi3(0x%X, 0x%X) = %d, expected %d\n",
31 a, b, x, expected);
32 return x != expected;
33}
34
35int main()
36{
37// test__subvsi3(0x80000000, 1); // should abort
38// test__subvsi3(0, 0x80000000); // should abort
39// test__subvsi3(1, 0x80000000); // should abort
40// test__subvsi3(0x7FFFFFFF, -1); // should abort
41// test__subvsi3(-2, 0x7FFFFFFF); // should abort
42
43 if (test__subvsi3(0x80000000, -1))
44 return 1;
45 if (test__subvsi3(0x80000000, 0))
46 return 1;
47 if (test__subvsi3(-1, 0x80000000))
48 return 1;
49 if (test__subvsi3(0x7FFFFFFF, 1))
50 return 1;
51 if (test__subvsi3(0x7FFFFFFF, 0))
52 return 1;
53 if (test__subvsi3(1, 0x7FFFFFFF))
54 return 1;
55 if (test__subvsi3(0, 0x7FFFFFFF))
56 return 1;
57 if (test__subvsi3(-1, 0x7FFFFFFF))
58 return 1;
59
60 return 0;
61}