1#pragma version(1)
2#pragma rs java_package_name(foo)
3
4int i;
5int2 i2;
6int3 i3;
7int4 i4;
8
9float f;
10float2 f2;
11float3 f3;
12float4 f4;
13
14#define TEST_FUNC_1(fnc)    \
15    f = fnc(f);             \
16    f2 = fnc(f2);           \
17    f3 = fnc(f3);           \
18    f4 = fnc(f4);
19
20#define TEST_FUNC_1_RI(fnc) \
21    i = fnc(f);             \
22    i2 = fnc(f2);           \
23    i3 = fnc(f3);           \
24    i4 = fnc(f4);
25
26#define TEST_FUNC_2(fnc)    \
27    f = fnc(f, f);          \
28    f2 = fnc(f2, f2);       \
29    f3 = fnc(f3, f3);       \
30    f4 = fnc(f4, f4);
31
32#define TEST_FUNC_2P(fnc)   \
33    f = fnc(f, &f);         \
34    f2 = fnc(f2, &f2);      \
35    f3 = fnc(f3, &f3);      \
36    f4 = fnc(f4, &f4);
37
38#define TEST_FUNC_2PI(fnc)  \
39    f = fnc(f, &i);         \
40    f2 = fnc(f2, &i2);      \
41    f3 = fnc(f3, &i3);      \
42    f4 = fnc(f4, &i4);
43
44#define TEST_FUNC_2F(fnc)   \
45    f = fnc(f, f);          \
46    f2 = fnc(f2, f2);       \
47    f3 = fnc(f3, f3);       \
48    f4 = fnc(f4, f4);
49
50#define TEST_FUNC_2I(fnc)   \
51    f = fnc(f, i);          \
52    f2 = fnc(f2, i);        \
53    f3 = fnc(f3, i);        \
54    f4 = fnc(f4, i);
55
56#define TEST_FUNC_2IN(fnc)  \
57    f = fnc(f, i);          \
58    f2 = fnc(f2, i2);       \
59    f3 = fnc(f3, i3);       \
60    f4 = fnc(f4, i4);
61
62#define TEST_FUNC_3(fnc)    \
63    f = fnc(f, f, f);       \
64    f2 = fnc(f2, f2, f2);   \
65    f3 = fnc(f3, f3, f3);   \
66    f4 = fnc(f4, f4, f4);
67
68#define TEST_FUNC_3PI(fnc)  \
69    f = fnc(f, f, &i);      \
70    f2 = fnc(f2, f2, &i2);  \
71    f3 = fnc(f3, f3, &i3);  \
72    f4 = fnc(f4, f4, &i4);
73
74void compile_all_math_fp_ops() {
75    TEST_FUNC_1(acos);
76    TEST_FUNC_1(acosh);
77    TEST_FUNC_1(acospi);
78    TEST_FUNC_1(asin);
79    TEST_FUNC_1(asinh);
80    TEST_FUNC_1(asinpi);
81    TEST_FUNC_1(atan);
82    TEST_FUNC_2(atan2);
83    TEST_FUNC_1(atanh);
84    TEST_FUNC_1(atanpi);
85    TEST_FUNC_2(atan2pi);
86    TEST_FUNC_1(cbrt);
87    TEST_FUNC_1(ceil);
88    TEST_FUNC_2(copysign);
89    TEST_FUNC_1(cos);
90    TEST_FUNC_1(cosh);
91    TEST_FUNC_1(cospi);
92    TEST_FUNC_1(erfc);
93    TEST_FUNC_1(erf);
94    TEST_FUNC_1(exp);
95    TEST_FUNC_1(exp2);
96    TEST_FUNC_1(exp10);
97    TEST_FUNC_1(expm1);
98    TEST_FUNC_1(fabs);
99    TEST_FUNC_2(fdim);
100    TEST_FUNC_1(floor);
101    TEST_FUNC_3(fma);
102    TEST_FUNC_2(fmax);
103    TEST_FUNC_2F(fmax);
104    TEST_FUNC_2(fmin);
105    TEST_FUNC_2F(fmin);
106    TEST_FUNC_2(fmod);
107    TEST_FUNC_2P(fract);
108    TEST_FUNC_2PI(frexp);
109    TEST_FUNC_2(hypot);
110    TEST_FUNC_1_RI(ilogb);
111    TEST_FUNC_2IN(ldexp);
112    TEST_FUNC_2I(ldexp);
113    TEST_FUNC_1(lgamma);
114    TEST_FUNC_2PI(lgamma);
115    TEST_FUNC_1(log);
116    TEST_FUNC_1(log2);
117    TEST_FUNC_1(log10);
118    TEST_FUNC_1(log1p);
119    TEST_FUNC_1(logb);
120    TEST_FUNC_3(mad);
121    TEST_FUNC_2P(modf);
122    //TEST_FUNC_1(nan);
123    TEST_FUNC_2(nextafter);
124    TEST_FUNC_2(pow);
125    TEST_FUNC_2I(pown);
126    TEST_FUNC_2(powr);
127    TEST_FUNC_2(remainder);
128    TEST_FUNC_3PI(remquo);
129    TEST_FUNC_1(rint);
130    TEST_FUNC_2I(rootn);
131    TEST_FUNC_1(round);
132    TEST_FUNC_1(rsqrt);
133    TEST_FUNC_1(sin);
134    TEST_FUNC_2P(sincos);
135    TEST_FUNC_1(sinh);
136    TEST_FUNC_1(sinpi);
137    TEST_FUNC_1(sqrt);
138    TEST_FUNC_1(tan);
139    TEST_FUNC_1(tanh);
140    TEST_FUNC_1(tanpi);
141    TEST_FUNC_1(tgamma);
142    TEST_FUNC_1(trunc);
143
144    return;
145}
146
147