1 /* { dg-skip-if "requires io" { freestanding } } */
3 /* Program to test gcc's usage of the gofast library. */
5 /* The main guiding themes are to make it trivial to add test cases over time
6 and to make it easy for a program to parse the output to see if the right
7 libcalls are being made. */
11 float fp_add (float a
, float b
) { return a
+ b
; }
12 float fp_sub (float a
, float b
) { return a
- b
; }
13 float fp_mul (float a
, float b
) { return a
* b
; }
14 float fp_div (float a
, float b
) { return a
/ b
; }
15 float fp_neg (float a
) { return -a
; }
17 double dp_add (double a
, double b
) { return a
+ b
; }
18 double dp_sub (double a
, double b
) { return a
- b
; }
19 double dp_mul (double a
, double b
) { return a
* b
; }
20 double dp_div (double a
, double b
) { return a
/ b
; }
21 double dp_neg (double a
) { return -a
; }
23 double fp_to_dp (float f
) { return f
; }
24 float dp_to_fp (double d
) { return d
; }
26 int eqsf2 (float a
, float b
) { return a
== b
; }
27 int nesf2 (float a
, float b
) { return a
!= b
; }
28 int gtsf2 (float a
, float b
) { return a
> b
; }
29 int gesf2 (float a
, float b
) { return a
>= b
; }
30 int ltsf2 (float a
, float b
) { return a
< b
; }
31 int lesf2 (float a
, float b
) { return a
<= b
; }
33 int eqdf2 (double a
, double b
) { return a
== b
; }
34 int nedf2 (double a
, double b
) { return a
!= b
; }
35 int gtdf2 (double a
, double b
) { return a
> b
; }
36 int gedf2 (double a
, double b
) { return a
>= b
; }
37 int ltdf2 (double a
, double b
) { return a
< b
; }
38 int ledf2 (double a
, double b
) { return a
<= b
; }
40 float floatsisf (int i
) { return i
; }
41 double floatsidf (int i
) { return i
; }
42 int fixsfsi (float f
) { return f
; }
43 int fixdfsi (double d
) { return d
; }
44 unsigned int fixunssfsi (float f
) { return f
; }
45 unsigned int fixunsdfsi (double d
) { return d
; }
53 fprintf (stderr
, "Test failed: %s\n", msg
);
59 if (fp_add (1, 1) != 2) fail ("fp_add 1+1");
60 if (fp_sub (3, 2) != 1) fail ("fp_sub 3-2");
61 if (fp_mul (2, 3) != 6) fail ("fp_mul 2*3");
62 if (fp_div (3, 2) != 1.5) fail ("fp_div 3/2");
63 if (fp_neg (1) != -1) fail ("fp_neg 1");
65 if (dp_add (1, 1) != 2) fail ("dp_add 1+1");
66 if (dp_sub (3, 2) != 1) fail ("dp_sub 3-2");
67 if (dp_mul (2, 3) != 6) fail ("dp_mul 2*3");
68 if (dp_div (3, 2) != 1.5) fail ("dp_div 3/2");
69 if (dp_neg (1) != -1) fail ("dp_neg 1");
71 if (fp_to_dp (1.5) != 1.5) fail ("fp_to_dp 1.5");
72 if (dp_to_fp (1.5) != 1.5) fail ("dp_to_fp 1.5");
74 if (floatsisf (1) != 1) fail ("floatsisf 1");
75 if (floatsidf (1) != 1) fail ("floatsidf 1");
76 if (fixsfsi (1.42) != 1) fail ("fixsfsi 1.42");
77 if (fixunssfsi (1.42) != 1) fail ("fixunssfsi 1.42");
78 if (fixdfsi (1.42) != 1) fail ("fixdfsi 1.42");
79 if (fixunsdfsi (1.42) != 1) fail ("fixunsdfsi 1.42");
81 if (eqsf2 (1, 1) == 0) fail ("eqsf2 1==1");
82 if (eqsf2 (1, 2) != 0) fail ("eqsf2 1==2");
83 if (nesf2 (1, 2) == 0) fail ("nesf2 1!=1");
84 if (nesf2 (1, 1) != 0) fail ("nesf2 1!=1");
85 if (gtsf2 (2, 1) == 0) fail ("gtsf2 2>1");
86 if (gtsf2 (1, 1) != 0) fail ("gtsf2 1>1");
87 if (gtsf2 (0, 1) != 0) fail ("gtsf2 0>1");
88 if (gesf2 (2, 1) == 0) fail ("gesf2 2>=1");
89 if (gesf2 (1, 1) == 0) fail ("gesf2 1>=1");
90 if (gesf2 (0, 1) != 0) fail ("gesf2 0>=1");
91 if (ltsf2 (1, 2) == 0) fail ("ltsf2 1<2");
92 if (ltsf2 (1, 1) != 0) fail ("ltsf2 1<1");
93 if (ltsf2 (1, 0) != 0) fail ("ltsf2 1<0");
94 if (lesf2 (1, 2) == 0) fail ("lesf2 1<=2");
95 if (lesf2 (1, 1) == 0) fail ("lesf2 1<=1");
96 if (lesf2 (1, 0) != 0) fail ("lesf2 1<=0");