Lines Matching refs:fpemu

51 static int spe_emu_instr(uint32_t, struct fpemu *, struct fpn **, uint32_t *);
312 spe_to_int(struct fpemu *fpemu, struct fpn *fpn, uint32_t *val, int sign) in spe_to_int() argument
316 res[0] = fpu_ftox(fpemu, fpn, res); in spe_to_int()
318 fpemu->fe_cx |= FPSCR_OX; in spe_to_int()
320 fpemu->fe_cx |= FPSCR_UX; in spe_to_int()
333 spe_emu_instr(uint32_t instr, struct fpemu *fpemu, in spe_emu_instr() argument
343 fpemu->fe_cx &= ~FPSCR_RN; in spe_emu_instr()
344 fpemu->fe_cx |= FP_RZ; in spe_emu_instr()
346 spe_to_int(fpemu, &fpemu->fe_f2, iresult, 0); in spe_emu_instr()
349 fpemu->fe_cx &= ~FPSCR_RN; in spe_emu_instr()
350 fpemu->fe_cx |= FP_RZ; in spe_emu_instr()
352 spe_to_int(fpemu, &fpemu->fe_f2, iresult, 1); in spe_emu_instr()
355 *result = fpu_add(fpemu); in spe_emu_instr()
358 *result = fpu_sub(fpemu); in spe_emu_instr()
361 *result = fpu_mul(fpemu); in spe_emu_instr()
364 *result = fpu_div(fpemu); in spe_emu_instr()
367 fpu_compare(fpemu, 0); in spe_emu_instr()
368 if (fpemu->fe_cx & FPSCR_FG) in spe_emu_instr()
372 fpu_compare(fpemu, 0); in spe_emu_instr()
373 if (fpemu->fe_cx & FPSCR_FL) in spe_emu_instr()
377 fpu_compare(fpemu, 0); in spe_emu_instr()
378 if (fpemu->fe_cx & FPSCR_FE) in spe_emu_instr()
389 spe_explode(struct fpemu *fe, struct fpn *fp, uint32_t type, in spe_explode()
472 struct fpemu fpemu; in spe_handle_fpdata() local
507 memset(&fpemu, 0, sizeof(fpemu)); in spe_handle_fpdata()
531 spe_explode(&fpemu, &fpemu.fe_f1, SINGLE, in spe_handle_fpdata()
533 spe_explode(&fpemu, &fpemu.fe_f2, SINGLE, in spe_handle_fpdata()
535 high = spe_emu_instr(instr_sec_op, &fpemu, &result, in spe_handle_fpdata()
541 spefscr = fpscr_to_spefscr(fpemu.fe_cx) << 16; in spe_handle_fpdata()
543 memset(&fpemu, 0, sizeof(fpemu)); in spe_handle_fpdata()
546 spe_explode(&fpemu, &fpemu.fe_f1, SINGLE, in spe_handle_fpdata()
548 spe_explode(&fpemu, &fpemu.fe_f2, SINGLE, in spe_handle_fpdata()
550 spefscr |= fpscr_to_spefscr(fpemu.fe_cx); in spe_handle_fpdata()
551 low = spe_emu_instr(instr_sec_op, &fpemu, &result, in spe_handle_fpdata()
578 spe_explode(&fpemu, &fpemu.fe_f3, DOUBLE, in spe_handle_fpdata()
580 result = &fpemu.fe_f3; in spe_handle_fpdata()
584 spe_explode(&fpemu, &fpemu.fe_f1, SINGLE, in spe_handle_fpdata()
586 spe_explode(&fpemu, &fpemu.fe_f2, SINGLE, in spe_handle_fpdata()
610 spe_explode(&fpemu, &fpemu.fe_f3, SINGLE, in spe_handle_fpdata()
612 result = &fpemu.fe_f3; in spe_handle_fpdata()
616 spe_explode(&fpemu, &fpemu.fe_f1, DOUBLE, in spe_handle_fpdata()
618 spe_explode(&fpemu, &fpemu.fe_f2, DOUBLE, in spe_handle_fpdata()
630 res = spe_emu_instr(instr_sec_op, &fpemu, &result, in spe_handle_fpdata()
655 frame->fixreg[rd] = fpu_ftos(&fpemu, result); in spe_handle_fpdata()
658 spe_load_reg_high(rd, fpu_ftod(&fpemu, result, ftod_res)); in spe_handle_fpdata()