Revision 214c465f target-mips/op.c
b/target-mips/op.c | ||
---|---|---|
68 | 68 |
|
69 | 69 |
/* 64 bits arithmetic */ |
70 | 70 |
#if TARGET_LONG_BITS > HOST_LONG_BITS |
71 |
void op_mult (void) |
|
72 |
{ |
|
73 |
CALL_FROM_TB0(do_mult); |
|
74 |
FORCE_RET(); |
|
75 |
} |
|
76 |
|
|
77 |
void op_multu (void) |
|
78 |
{ |
|
79 |
CALL_FROM_TB0(do_multu); |
|
80 |
FORCE_RET(); |
|
81 |
} |
|
82 |
|
|
83 | 71 |
void op_madd (void) |
84 | 72 |
{ |
85 | 73 |
CALL_FROM_TB0(do_madd); |
... | ... | |
214 | 202 |
env->HI[env->current_tc][0] = (int32_t)(HILO >> 32); |
215 | 203 |
} |
216 | 204 |
|
217 |
void op_mult (void) |
|
218 |
{ |
|
219 |
set_HILO((int64_t)(int32_t)T0 * (int64_t)(int32_t)T1); |
|
220 |
FORCE_RET(); |
|
221 |
} |
|
222 |
|
|
223 |
void op_multu (void) |
|
224 |
{ |
|
225 |
set_HILO((uint64_t)(uint32_t)T0 * (uint64_t)(uint32_t)T1); |
|
226 |
FORCE_RET(); |
|
227 |
} |
|
228 |
|
|
229 |
void op_madd (void) |
|
230 |
{ |
|
231 |
int64_t tmp; |
|
232 |
|
|
233 |
tmp = ((int64_t)(int32_t)T0 * (int64_t)(int32_t)T1); |
|
234 |
set_HILO((int64_t)get_HILO() + tmp); |
|
235 |
FORCE_RET(); |
|
236 |
} |
|
237 |
|
|
238 |
void op_maddu (void) |
|
239 |
{ |
|
240 |
uint64_t tmp; |
|
241 |
|
|
242 |
tmp = ((uint64_t)(uint32_t)T0 * (uint64_t)(uint32_t)T1); |
|
243 |
set_HILO(get_HILO() + tmp); |
|
244 |
FORCE_RET(); |
|
245 |
} |
|
246 |
|
|
247 |
void op_msub (void) |
|
248 |
{ |
|
249 |
int64_t tmp; |
|
250 |
|
|
251 |
tmp = ((int64_t)(int32_t)T0 * (int64_t)(int32_t)T1); |
|
252 |
set_HILO((int64_t)get_HILO() - tmp); |
|
253 |
FORCE_RET(); |
|
254 |
} |
|
255 |
|
|
256 |
void op_msubu (void) |
|
257 |
{ |
|
258 |
uint64_t tmp; |
|
259 |
|
|
260 |
tmp = ((uint64_t)(uint32_t)T0 * (uint64_t)(uint32_t)T1); |
|
261 |
set_HILO(get_HILO() - tmp); |
|
262 |
FORCE_RET(); |
|
263 |
} |
|
264 |
|
|
265 | 205 |
/* Multiplication variants of the vr54xx. */ |
266 | 206 |
void op_muls (void) |
267 | 207 |
{ |
... | ... | |
349 | 289 |
|
350 | 290 |
#endif /* TARGET_LONG_BITS > HOST_LONG_BITS */ |
351 | 291 |
|
352 |
#if defined(TARGET_MIPS64) |
|
353 |
void op_dmult (void) |
|
354 |
{ |
|
355 |
CALL_FROM_TB4(muls64, &(env->LO[env->current_tc][0]), &(env->HI[env->current_tc][0]), T0, T1); |
|
356 |
FORCE_RET(); |
|
357 |
} |
|
358 |
|
|
359 |
void op_dmultu (void) |
|
360 |
{ |
|
361 |
CALL_FROM_TB4(mulu64, &(env->LO[env->current_tc][0]), &(env->HI[env->current_tc][0]), T0, T1); |
|
362 |
FORCE_RET(); |
|
363 |
} |
|
364 |
#endif |
|
365 |
|
|
366 | 292 |
/* CP1 functions */ |
367 | 293 |
#if 0 |
368 | 294 |
# define DEBUG_FPU_STATE() CALL_FROM_TB1(dump_fpu, env) |
Also available in: Unified diff