blob: 7d867ef2c95a35e4f1fa508f1361122c91b34a91 [file] [log] [blame]
Pirama Arumuga Nainar799172d2016-03-03 15:50:30 -08001//===-- aeabi_drsub.c - Test __aeabi_drsub --------------------------------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is dual licensed under the MIT and the University of Illinois Open
6// Source Licenses. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file tests __aeabi_drsub for the compiler_rt library.
11//
12//===----------------------------------------------------------------------===//
13
14#include <stdio.h>
15#include <stdlib.h>
16#include <math.h>
17
18
19#if __arm__
20extern __attribute__((pcs("aapcs"))) double __aeabi_drsub(double a, double b);
21
22int test__aeabi_drsub(double a, double b, double expected)
23{
24 double actual = __aeabi_drsub(a, b);
25 if (actual != expected)
26 printf("error in __aeabi_drsub(%f, %f) = %f, expected %f\n",
27 a, b, actual, expected);
28 return actual != expected;
29}
30#endif
31
32int main()
33{
34#if __arm__
35 if (test__aeabi_drsub(1.0, 1.0, 0.0))
36 return 1;
37 if (test__aeabi_drsub(1234.567, 765.4321, -469.134900))
38 return 1;
39 if (test__aeabi_drsub(-123.0, -678.0, -555.0))
40 return 1;
41 if (test__aeabi_drsub(0.0, -0.0, 0.0))
42 return 1;
43#else
44 printf("skipped\n");
45#endif
46 return 0;
47}