76 |
76 |
77 // float and double remainder |
77 // float and double remainder |
78 static jfloat frem(jfloat x, jfloat y); |
78 static jfloat frem(jfloat x, jfloat y); |
79 static jdouble drem(jdouble x, jdouble y); |
79 static jdouble drem(jdouble x, jdouble y); |
80 |
80 |
|
81 #ifdef __SOFTFP__ |
|
82 static jfloat fadd(jfloat x, jfloat y); |
|
83 static jfloat fsub(jfloat x, jfloat y); |
|
84 static jfloat fmul(jfloat x, jfloat y); |
|
85 static jfloat fdiv(jfloat x, jfloat y); |
|
86 |
|
87 static jdouble dadd(jdouble x, jdouble y); |
|
88 static jdouble dsub(jdouble x, jdouble y); |
|
89 static jdouble dmul(jdouble x, jdouble y); |
|
90 static jdouble ddiv(jdouble x, jdouble y); |
|
91 #endif // __SOFTFP__ |
|
92 |
81 // float conversion (needs to set appropriate rounding mode) |
93 // float conversion (needs to set appropriate rounding mode) |
82 static jint f2i (jfloat x); |
94 static jint f2i (jfloat x); |
83 static jlong f2l (jfloat x); |
95 static jlong f2l (jfloat x); |
84 static jint d2i (jdouble x); |
96 static jint d2i (jdouble x); |
85 static jlong d2l (jdouble x); |
97 static jlong d2l (jdouble x); |
86 static jfloat d2f (jdouble x); |
98 static jfloat d2f (jdouble x); |
87 static jfloat l2f (jlong x); |
99 static jfloat l2f (jlong x); |
88 static jdouble l2d (jlong x); |
100 static jdouble l2d (jlong x); |
89 |
101 |
|
102 #ifdef __SOFTFP__ |
|
103 static jfloat i2f (jint x); |
|
104 static jdouble i2d (jint x); |
|
105 static jdouble f2d (jfloat x); |
|
106 #endif // __SOFTFP__ |
|
107 |
90 // double trigonometrics and transcendentals |
108 // double trigonometrics and transcendentals |
91 static jdouble dsin(jdouble x); |
109 static jdouble dsin(jdouble x); |
92 static jdouble dcos(jdouble x); |
110 static jdouble dcos(jdouble x); |
93 static jdouble dtan(jdouble x); |
111 static jdouble dtan(jdouble x); |
94 static jdouble dlog(jdouble x); |
112 static jdouble dlog(jdouble x); |
95 static jdouble dlog10(jdouble x); |
113 static jdouble dlog10(jdouble x); |
96 static jdouble dexp(jdouble x); |
114 static jdouble dexp(jdouble x); |
97 static jdouble dpow(jdouble x, jdouble y); |
115 static jdouble dpow(jdouble x, jdouble y); |
|
116 |
|
117 #if defined(__SOFTFP__) || defined(E500V2) |
|
118 static double dabs(double f); |
|
119 static double dsqrt(double f); |
|
120 #endif |
|
121 |
|
122 #ifdef __SOFTFP__ |
|
123 // C++ compiler generates soft float instructions as well as passing |
|
124 // float and double in registers. |
|
125 static int fcmpl(float x, float y); |
|
126 static int fcmpg(float x, float y); |
|
127 static int dcmpl(double x, double y); |
|
128 static int dcmpg(double x, double y); |
|
129 |
|
130 static int unordered_fcmplt(float x, float y); |
|
131 static int unordered_dcmplt(double x, double y); |
|
132 static int unordered_fcmple(float x, float y); |
|
133 static int unordered_dcmple(double x, double y); |
|
134 static int unordered_fcmpge(float x, float y); |
|
135 static int unordered_dcmpge(double x, double y); |
|
136 static int unordered_fcmpgt(float x, float y); |
|
137 static int unordered_dcmpgt(double x, double y); |
|
138 |
|
139 static float fneg(float f); |
|
140 static double dneg(double f); |
|
141 #endif |
98 |
142 |
99 // exception handling across interpreter/compiler boundaries |
143 // exception handling across interpreter/compiler boundaries |
100 static address raw_exception_handler_for_return_address(JavaThread* thread, address return_address); |
144 static address raw_exception_handler_for_return_address(JavaThread* thread, address return_address); |
101 static address exception_handler_for_return_address(JavaThread* thread, address return_address); |
145 static address exception_handler_for_return_address(JavaThread* thread, address return_address); |
102 |
146 |