1799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar//===-- aeabi_drsub.c - Test __aeabi_drsub --------------------------------===//
2799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar//
3799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar//                     The LLVM Compiler Infrastructure
4799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar//
5799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar// This file is dual licensed under the MIT and the University of Illinois Open
6799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar// Source Licenses. See LICENSE.TXT for details.
7799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar//
8799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar//===----------------------------------------------------------------------===//
9799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar//
10799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar// This file tests __aeabi_drsub for the compiler_rt library.
11799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar//
12799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar//===----------------------------------------------------------------------===//
13799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar
14799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar#include <stdio.h>
15799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar#include <stdlib.h>
16799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar#include <math.h>
17799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar
18799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar
19799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar#if __arm__
20799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainarextern __attribute__((pcs("aapcs"))) double __aeabi_drsub(double a, double b);
21799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar
22799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainarint test__aeabi_drsub(double a, double b, double expected)
23799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar{
24799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar    double actual = __aeabi_drsub(a, b);
25799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar    if (actual != expected)
26799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar        printf("error in __aeabi_drsub(%f, %f) = %f, expected %f\n",
27799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar               a, b, actual, expected);
28799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar    return actual != expected;
29799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar}
30799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar#endif
31799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar
32799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainarint main()
33799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar{
34799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar#if __arm__
35799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar    if (test__aeabi_drsub(1.0, 1.0, 0.0))
36799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar        return 1;
37799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar    if (test__aeabi_drsub(1234.567, 765.4321, -469.134900))
38799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar        return 1;
39799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar    if (test__aeabi_drsub(-123.0, -678.0, -555.0))
40799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar        return 1;
41799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar    if (test__aeabi_drsub(0.0, -0.0, 0.0))
42799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar        return 1;
43799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar#else
44799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar    printf("skipped\n");
45799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar#endif
46799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar    return 0;
47799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar}
48