1a0664b9ca67b594bd6f570a61d3301167a24750cElliott Hughes#if defined(__mips_hard_float)
2a0664b9ca67b594bd6f570a61d3301167a24750cElliott Hughes
3e584b0e99b31e6d257cc58c630cd6067550539e3sewardj#include <stdio.h>
434ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj#include <stdlib.h>
5e584b0e99b31e6d257cc58c630cd6067550539e3sewardj
6e584b0e99b31e6d257cc58c630cd6067550539e3sewardjtypedef enum {
7e584b0e99b31e6d257cc58c630cd6067550539e3sewardj   ABSS=0, ABSD,
8e584b0e99b31e6d257cc58c630cd6067550539e3sewardj   ADDS, ADDD,
9e584b0e99b31e6d257cc58c630cd6067550539e3sewardj   DIVS, DIVD,
10e584b0e99b31e6d257cc58c630cd6067550539e3sewardj   MULS, MULD,
11e584b0e99b31e6d257cc58c630cd6067550539e3sewardj   NEGS, NEGD,
12e584b0e99b31e6d257cc58c630cd6067550539e3sewardj   SQRTS, SQRTD,
13e584b0e99b31e6d257cc58c630cd6067550539e3sewardj   SUBS, SUBD,
14e584b0e99b31e6d257cc58c630cd6067550539e3sewardj   RECIPS, RECIPD,
15e584b0e99b31e6d257cc58c630cd6067550539e3sewardj   RSQRTS, RSQRTD
16e584b0e99b31e6d257cc58c630cd6067550539e3sewardj} flt_art_op_t;
17e584b0e99b31e6d257cc58c630cd6067550539e3sewardj
18e584b0e99b31e6d257cc58c630cd6067550539e3sewardjconst char *flt_art_op_names[] = {
19e584b0e99b31e6d257cc58c630cd6067550539e3sewardj   "abs.s", "abs.d",
20e584b0e99b31e6d257cc58c630cd6067550539e3sewardj   "add.s", "add.d",
21e584b0e99b31e6d257cc58c630cd6067550539e3sewardj   "div.s", "div.d",
22e584b0e99b31e6d257cc58c630cd6067550539e3sewardj   "mul.s", "mul.d",
23e584b0e99b31e6d257cc58c630cd6067550539e3sewardj   "neg.s", "neg.d",
24e584b0e99b31e6d257cc58c630cd6067550539e3sewardj   "sqrt.s", "sqrt.d",
25e584b0e99b31e6d257cc58c630cd6067550539e3sewardj   "sub.s", "sub.d",
26e584b0e99b31e6d257cc58c630cd6067550539e3sewardj   "recip.s", "recip.d",
27e584b0e99b31e6d257cc58c630cd6067550539e3sewardj   "rsqrt.s", "rsqrt.d"
28e584b0e99b31e6d257cc58c630cd6067550539e3sewardj};
29e584b0e99b31e6d257cc58c630cd6067550539e3sewardj
3034ff174f3cef6e6058385c0a404572d5e8e5c67cdejanjtypedef enum {
3134ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj   TO_NEAREST=0, TO_ZERO, TO_PLUS_INFINITY, TO_MINUS_INFINITY } round_mode_t;
3234ff174f3cef6e6058385c0a404572d5e8e5c67cdejanjchar *round_mode_name[] = { "near", "zero", "+inf", "-inf" };
3334ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj
34e584b0e99b31e6d257cc58c630cd6067550539e3sewardjconst double fs_d[] = {
3534ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj   0,         456.25,   3,          -1,
3634ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj   1384.5,    -7.25,    1000000000, -5786.5,
3734ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj   1752,      0.015625, 0.03125,    -248562.75,
3834ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj   456,       -45786.5, 34.03125,   45786.75,
3934ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj   1752065,   107,      -45667.25,  -7,
4034ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj   -347856.5, 356047.5, -1.0,       23.0625
41e584b0e99b31e6d257cc58c630cd6067550539e3sewardj};
42e584b0e99b31e6d257cc58c630cd6067550539e3sewardj
43e584b0e99b31e6d257cc58c630cd6067550539e3sewardjconst double ft_d[] = {
4434ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj   -456.25,    -45786.5, 34.03125,   45786.75,
4534ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj   1752065,   107,      -45667.25,  -7.25,
4634ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj   -347856.5, 356047.5, -1.0,       23.0625,
4734ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj   0,         456.25,   3,          -1,
4834ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj   1384.5,    -7,       1000000000, -5786.5,
4934ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj   1752,      0.015625, 0.03125,    -248562.75
50e584b0e99b31e6d257cc58c630cd6067550539e3sewardj};
51e584b0e99b31e6d257cc58c630cd6067550539e3sewardj
52e584b0e99b31e6d257cc58c630cd6067550539e3sewardjconst float fs_f[] = {
5334ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj   0,         456.25,   3,          -1,
5434ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj   1384.5,    -7.25,    1000000000, -5786.5,
5534ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj   1752,      0.015625, 0.03125,    -248562.75,
5634ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj   456,       -45786.5, 34.03125,   45786.75,
5734ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj   1752065,   107,      -45667.25,  -7,
5834ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj   -347856.5, 356047.5, -1.0,       23.0625
59e584b0e99b31e6d257cc58c630cd6067550539e3sewardj};
60e584b0e99b31e6d257cc58c630cd6067550539e3sewardj
61e584b0e99b31e6d257cc58c630cd6067550539e3sewardjconst float ft_f[] = {
6234ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj   -456.25,  -4578.5,   34.03125, 4578.75,
6334ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj   175,     107,      -456.25,  -7.25,
6434ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj   -3478.5, 356.5,    -1.0,     23.0625,
6534ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj   0,       456.25,   3,        -1,
6634ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj   1384.5,  -7,       100,      -5786.5,
6734ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj   1752,    0.015625, 0.03125,  -248562.75
68e584b0e99b31e6d257cc58c630cd6067550539e3sewardj};
69e584b0e99b31e6d257cc58c630cd6067550539e3sewardj
70e584b0e99b31e6d257cc58c630cd6067550539e3sewardj#define UNOPdd(op) \
71e584b0e99b31e6d257cc58c630cd6067550539e3sewardj        fd_d = 0;  \
72e584b0e99b31e6d257cc58c630cd6067550539e3sewardj        __asm__ volatile( \
73e584b0e99b31e6d257cc58c630cd6067550539e3sewardj					op" %0, %1\n\t" \
74e584b0e99b31e6d257cc58c630cd6067550539e3sewardj					: "=f"(fd_d) : "f"(fs_d[i]));
75e584b0e99b31e6d257cc58c630cd6067550539e3sewardj
76e584b0e99b31e6d257cc58c630cd6067550539e3sewardj#define UNOPff(op) \
77e584b0e99b31e6d257cc58c630cd6067550539e3sewardj        fd_f = 0;  \
78e584b0e99b31e6d257cc58c630cd6067550539e3sewardj        __asm__ volatile( \
79e584b0e99b31e6d257cc58c630cd6067550539e3sewardj					op" %0, %1\n\t" \
80e584b0e99b31e6d257cc58c630cd6067550539e3sewardj					: "=f"(fd_f) : "f"(fs_f[i]));
81e584b0e99b31e6d257cc58c630cd6067550539e3sewardj
82e584b0e99b31e6d257cc58c630cd6067550539e3sewardj#define BINOPf(op) \
83e584b0e99b31e6d257cc58c630cd6067550539e3sewardj        fd_f = 0;  \
84e584b0e99b31e6d257cc58c630cd6067550539e3sewardj        __asm__ volatile( \
85e584b0e99b31e6d257cc58c630cd6067550539e3sewardj					op" %0, %1, %2\n\t" \
86e584b0e99b31e6d257cc58c630cd6067550539e3sewardj					: "=f"(fd_f) : "f"(fs_f[i]) , "f"(ft_f[i]));
87e584b0e99b31e6d257cc58c630cd6067550539e3sewardj
88e584b0e99b31e6d257cc58c630cd6067550539e3sewardj#define BINOPd(op) \
89e584b0e99b31e6d257cc58c630cd6067550539e3sewardj        fd_d = 0;  \
90e584b0e99b31e6d257cc58c630cd6067550539e3sewardj        __asm__ volatile( \
91e584b0e99b31e6d257cc58c630cd6067550539e3sewardj					op" %0, %1, %2\n\t" \
92e584b0e99b31e6d257cc58c630cd6067550539e3sewardj					: "=f"(fd_d) : "f"(fs_d[i]) , "f"(ft_d[i]));
93e584b0e99b31e6d257cc58c630cd6067550539e3sewardj
9434ff174f3cef6e6058385c0a404572d5e8e5c67cdejanjvoid set_rounding_mode(round_mode_t mode)
9534ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj{
9634ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj   switch(mode) {
9734ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj      case TO_NEAREST:
9834ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj         __asm__ volatile("cfc1 $t0, $31\n\t"
9934ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                          "srl $t0, 2\n\t"
10034ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                          "sll $t0, 2\n\t"
10134ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                          "ctc1 $t0, $31\n\t");
10234ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj         break;
10334ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj      case TO_ZERO:
10434ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj         __asm__ volatile("cfc1 $t0, $31\n\t"
10534ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                          "srl $t0, 2\n\t"
10634ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                          "sll $t0, 2\n\t"
10734ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                          "addiu $t0, 1\n\t"
10834ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                          "ctc1 $t0, $31\n\t");
10934ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj         break;
11034ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj      case TO_PLUS_INFINITY:
11134ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj         __asm__ volatile("cfc1 $t0, $31\n\t"
11234ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                          "srl $t0, 2\n\t"
11334ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                          "sll $t0, 2\n\t"
11434ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                          "addiu $t0, 2\n\t"
11534ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                          "ctc1 $t0, $31\n\t");
11634ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj         break;
11734ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj      case TO_MINUS_INFINITY:
11834ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj         __asm__ volatile("cfc1 $t0, $31\n\t"
11934ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                          "srl $t0, 2\n\t"
12034ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                          "sll $t0, 2\n\t"
12134ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                          "addiu $t0, 3\n\t"
12234ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                          "ctc1 $t0, $31\n\t");
12334ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj         break;
12434ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj   }
12534ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj}
12634ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj
12734ff174f3cef6e6058385c0a404572d5e8e5c67cdejanjint arithmeticOperations(flt_art_op_t op)
128e584b0e99b31e6d257cc58c630cd6067550539e3sewardj{
129e584b0e99b31e6d257cc58c630cd6067550539e3sewardj   double fd_d = 0;
130e584b0e99b31e6d257cc58c630cd6067550539e3sewardj   float fd_f = 0;
131e584b0e99b31e6d257cc58c630cd6067550539e3sewardj   int i = 0;
13234ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj   round_mode_t rm;
13334ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj   for (rm = TO_NEAREST; rm <= TO_MINUS_INFINITY; rm ++) {
13434ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj      set_rounding_mode(rm);
13534ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj      printf("rounding mode: %s\n", round_mode_name[rm]);
13634ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj      for (i = 0; i < 24; i++)
13734ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj      {
13834ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj         switch(op) {
13934ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj            case ABSS:
14034ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 UNOPff("abs.s");
14134ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 printf("%s %f %f\n", flt_art_op_names[op], fd_f, fs_f[i]);
14234ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 break;
14334ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj            case ABSD:
14434ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 UNOPdd("abs.d");
14534ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 printf("%s %lf %lf\n", flt_art_op_names[op], fd_d, fs_d[i]);
14634ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 break;
14734ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj            case ADDS:
14834ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 BINOPf("add.s");
14934ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 printf("%s %f %f %f\n", flt_art_op_names[op], fd_f, fs_f[i], ft_f[i]);
15034ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 break;
15134ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj            case ADDD:
15234ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 BINOPd("add.d");
15334ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 printf("%s %lf %lf %lf\n", flt_art_op_names[op], fd_d, fs_d[i], ft_d[i]);
15434ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 break;
15534ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj            case DIVS:
15634ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 BINOPf("div.s");
15734ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 printf("%s %f %f %f\n", flt_art_op_names[op], fd_f, fs_f[i], ft_f[i]);
15834ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 break;
15934ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj            case DIVD:
16034ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 BINOPd("div.d");
16134ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 printf("%s %lf %lf %lf\n", flt_art_op_names[op], fd_d, fs_d[i], ft_d[i]);
16234ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 break;
16334ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj            case MULS:
16434ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 BINOPf("mul.s");
16534ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 printf("%s %f %f %f\n", flt_art_op_names[op], fd_f, fs_f[i], ft_f[i]);
16634ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 break;
16734ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj            case MULD:
16834ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 BINOPd("mul.d");
16934ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 printf("%s %lf %lf %lf\n", flt_art_op_names[op], fd_d, fs_d[i], ft_d[i]);
17034ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 break;
17134ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj            case NEGS:
17234ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 UNOPff("neg.s");
17334ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 printf("%s %f %f\n", flt_art_op_names[op], fd_f, fs_f[i]);
17434ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 break;
17534ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj            case NEGD:
17634ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 UNOPdd("neg.d");
17734ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 printf("%s %lf %lf\n", flt_art_op_names[op], fd_d, fs_d[i]);
17834ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 break;
17934ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj            case SQRTS:
18034ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 UNOPff("sqrt.s");
18134ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 printf("%s %f %f\n", flt_art_op_names[op], fd_f, fs_f[i]);
18234ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 break;
18334ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj            case SQRTD:
18434ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 UNOPdd("sqrt.d");
18534ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 printf("%s %lf %lf\n", flt_art_op_names[op], fd_d, fs_d[i]);
18634ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 break;
18734ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj            case SUBS:
18834ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 BINOPf("sub.s");
18934ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 printf("%s %f %f %f\n", flt_art_op_names[op], fd_f, fs_f[i], ft_f[i]);
19034ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 break;
19134ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj            case SUBD:
19234ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 BINOPd("sub.d");
19334ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 printf("%s %lf %lf %lf\n", flt_art_op_names[op], fd_d, fs_d[i], ft_d[i]);
19434ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 break;
19534ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj            case RECIPS:
1964931c0dbc3912b97beb3784122d1ea7825a2c882petarj#if (__mips==32) && (__mips_isa_rev>=2)
19734ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 UNOPff("recip.s");
19834ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 printf("%s %f %f\n", flt_art_op_names[op], fd_f, fs_f[i]);
1994931c0dbc3912b97beb3784122d1ea7825a2c882petarj#endif
20034ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 break;
20134ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj            case RECIPD:
2024931c0dbc3912b97beb3784122d1ea7825a2c882petarj#if (__mips==32) && (__mips_isa_rev>=2)
20334ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 UNOPdd("recip.d");
20434ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 printf("%s %lf %lf\n", flt_art_op_names[op], fd_d, fs_d[i]);
2054931c0dbc3912b97beb3784122d1ea7825a2c882petarj#endif
20634ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 break;
20734ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj            case RSQRTS:
2084931c0dbc3912b97beb3784122d1ea7825a2c882petarj#if (__mips==32) && (__mips_isa_rev>=2)
20934ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 UNOPff("rsqrt.s");
21034ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 printf("%s %f %f\n", flt_art_op_names[op], fd_f, fs_f[i]);
2114931c0dbc3912b97beb3784122d1ea7825a2c882petarj#endif
21234ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 break;
21334ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj            case RSQRTD:
2144931c0dbc3912b97beb3784122d1ea7825a2c882petarj#if (__mips==32) && (__mips_isa_rev>=2)
21534ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 UNOPdd("rsqrt.d");
21634ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 printf("%s %lf %lf\n", flt_art_op_names[op], fd_d, fs_d[i]);
2174931c0dbc3912b97beb3784122d1ea7825a2c882petarj#endif
21834ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj                 break;
21934ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj            default:
22034ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj               printf("error\n");
22134ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj               break;
22234ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj         }
22334ff174f3cef6e6058385c0a404572d5e8e5c67cdejanj      }
224e584b0e99b31e6d257cc58c630cd6067550539e3sewardj   }
225e584b0e99b31e6d257cc58c630cd6067550539e3sewardj   return 0;
226e584b0e99b31e6d257cc58c630cd6067550539e3sewardj}
227e584b0e99b31e6d257cc58c630cd6067550539e3sewardj
228e584b0e99b31e6d257cc58c630cd6067550539e3sewardjint main()
229e584b0e99b31e6d257cc58c630cd6067550539e3sewardj{
230e584b0e99b31e6d257cc58c630cd6067550539e3sewardj   flt_art_op_t op;
231e584b0e99b31e6d257cc58c630cd6067550539e3sewardj
232e584b0e99b31e6d257cc58c630cd6067550539e3sewardj   printf("-------------------------- %s --------------------------\n",
233e584b0e99b31e6d257cc58c630cd6067550539e3sewardj        "test FPU Arithmetic Operations");
234e584b0e99b31e6d257cc58c630cd6067550539e3sewardj   for (op = ABSS; op <= RECIPD; op++) {
235e584b0e99b31e6d257cc58c630cd6067550539e3sewardj      arithmeticOperations(op);
236e584b0e99b31e6d257cc58c630cd6067550539e3sewardj   }
237e584b0e99b31e6d257cc58c630cd6067550539e3sewardj
238e584b0e99b31e6d257cc58c630cd6067550539e3sewardj   return 0;
239e584b0e99b31e6d257cc58c630cd6067550539e3sewardj}
240a0664b9ca67b594bd6f570a61d3301167a24750cElliott Hughes#else
241a0664b9ca67b594bd6f570a61d3301167a24750cElliott Hughesint main() {
242a0664b9ca67b594bd6f570a61d3301167a24750cElliott Hughes   return 0;
243a0664b9ca67b594bd6f570a61d3301167a24750cElliott Hughes}
244a0664b9ca67b594bd6f570a61d3301167a24750cElliott Hughes#endif
245