124
125 #ifdef __SOFTFP__
126 static jfloat i2f (jint x);
127 static jdouble i2d (jint x);
128 static jdouble f2d (jfloat x);
129 #endif // __SOFTFP__
130
131 // double trigonometrics and transcendentals
132 static jdouble dsin(jdouble x);
133 static jdouble dcos(jdouble x);
134 static jdouble dtan(jdouble x);
135 static jdouble dlog(jdouble x);
136 static jdouble dlog10(jdouble x);
137 static jdouble dexp(jdouble x);
138 static jdouble dpow(jdouble x, jdouble y);
139
140 #if defined(__SOFTFP__) || defined(E500V2)
141 static double dabs(double f);
142 #endif
143
144 #if defined(__SOFTFP__) || defined(PPC32)
145 static double dsqrt(double f);
146 #endif
147
148 // Montgomery multiplication
149 static void montgomery_multiply(jint *a_ints, jint *b_ints, jint *n_ints,
150 jint len, jlong inv, jint *m_ints);
151 static void montgomery_square(jint *a_ints, jint *n_ints,
152 jint len, jlong inv, jint *m_ints);
153
154 #ifdef __SOFTFP__
155 // C++ compiler generates soft float instructions as well as passing
156 // float and double in registers.
157 static int fcmpl(float x, float y);
158 static int fcmpg(float x, float y);
159 static int dcmpl(double x, double y);
160 static int dcmpg(double x, double y);
161
162 static int unordered_fcmplt(float x, float y);
163 static int unordered_dcmplt(double x, double y);
164 static int unordered_fcmple(float x, float y);
|
124
125 #ifdef __SOFTFP__
126 static jfloat i2f (jint x);
127 static jdouble i2d (jint x);
128 static jdouble f2d (jfloat x);
129 #endif // __SOFTFP__
130
131 // double trigonometrics and transcendentals
132 static jdouble dsin(jdouble x);
133 static jdouble dcos(jdouble x);
134 static jdouble dtan(jdouble x);
135 static jdouble dlog(jdouble x);
136 static jdouble dlog10(jdouble x);
137 static jdouble dexp(jdouble x);
138 static jdouble dpow(jdouble x, jdouble y);
139
140 #if defined(__SOFTFP__) || defined(E500V2)
141 static double dabs(double f);
142 #endif
143
144 #if defined(__SOFTFP__) || defined(PPC)
145 static double dsqrt(double f);
146 #endif
147
148 // Montgomery multiplication
149 static void montgomery_multiply(jint *a_ints, jint *b_ints, jint *n_ints,
150 jint len, jlong inv, jint *m_ints);
151 static void montgomery_square(jint *a_ints, jint *n_ints,
152 jint len, jlong inv, jint *m_ints);
153
154 #ifdef __SOFTFP__
155 // C++ compiler generates soft float instructions as well as passing
156 // float and double in registers.
157 static int fcmpl(float x, float y);
158 static int fcmpg(float x, float y);
159 static int dcmpl(double x, double y);
160 static int dcmpg(double x, double y);
161
162 static int unordered_fcmplt(float x, float y);
163 static int unordered_dcmplt(double x, double y);
164 static int unordered_fcmple(float x, float y);
|