Commit 5d0fc900d35e9f272c79d199e5854be8301dccf3
1 parent
0d1d0094
Call most FP helpers without deroute through op.c
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4734 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
4 changed files
with
154 additions
and
364 deletions
target-mips/exec.h
... | ... | @@ -103,79 +103,6 @@ void cpu_mips_update_irq (CPUState *env); |
103 | 103 | void cpu_mips_clock_init (CPUState *env); |
104 | 104 | void cpu_mips_tlb_flush (CPUState *env, int flush_global); |
105 | 105 | |
106 | -#define FOP_PROTO(op) \ | |
107 | -void do_float_ ## op ## _s(void); \ | |
108 | -void do_float_ ## op ## _d(void); | |
109 | -FOP_PROTO(roundl) | |
110 | -FOP_PROTO(roundw) | |
111 | -FOP_PROTO(truncl) | |
112 | -FOP_PROTO(truncw) | |
113 | -FOP_PROTO(ceill) | |
114 | -FOP_PROTO(ceilw) | |
115 | -FOP_PROTO(floorl) | |
116 | -FOP_PROTO(floorw) | |
117 | -FOP_PROTO(rsqrt) | |
118 | -FOP_PROTO(recip) | |
119 | -#undef FOP_PROTO | |
120 | - | |
121 | -#define FOP_PROTO(op) \ | |
122 | -void do_float_ ## op ## _s(void); \ | |
123 | -void do_float_ ## op ## _d(void); \ | |
124 | -void do_float_ ## op ## _ps(void); | |
125 | -FOP_PROTO(add) | |
126 | -FOP_PROTO(sub) | |
127 | -FOP_PROTO(mul) | |
128 | -FOP_PROTO(div) | |
129 | -FOP_PROTO(recip1) | |
130 | -FOP_PROTO(recip2) | |
131 | -FOP_PROTO(rsqrt1) | |
132 | -FOP_PROTO(rsqrt2) | |
133 | -#undef FOP_PROTO | |
134 | - | |
135 | -void do_float_cvtd_s(void); | |
136 | -void do_float_cvtd_w(void); | |
137 | -void do_float_cvtd_l(void); | |
138 | -void do_float_cvtl_d(void); | |
139 | -void do_float_cvtl_s(void); | |
140 | -void do_float_cvtps_pw(void); | |
141 | -void do_float_cvtpw_ps(void); | |
142 | -void do_float_cvts_d(void); | |
143 | -void do_float_cvts_w(void); | |
144 | -void do_float_cvts_l(void); | |
145 | -void do_float_cvts_pl(void); | |
146 | -void do_float_cvts_pu(void); | |
147 | -void do_float_cvtw_s(void); | |
148 | -void do_float_cvtw_d(void); | |
149 | - | |
150 | -void do_float_addr_ps(void); | |
151 | -void do_float_mulr_ps(void); | |
152 | - | |
153 | -#define FOP_PROTO(op) \ | |
154 | -void do_cmp_d_ ## op(long cc); \ | |
155 | -void do_cmpabs_d_ ## op(long cc); \ | |
156 | -void do_cmp_s_ ## op(long cc); \ | |
157 | -void do_cmpabs_s_ ## op(long cc); \ | |
158 | -void do_cmp_ps_ ## op(long cc); \ | |
159 | -void do_cmpabs_ps_ ## op(long cc); | |
160 | - | |
161 | -FOP_PROTO(f) | |
162 | -FOP_PROTO(un) | |
163 | -FOP_PROTO(eq) | |
164 | -FOP_PROTO(ueq) | |
165 | -FOP_PROTO(olt) | |
166 | -FOP_PROTO(ult) | |
167 | -FOP_PROTO(ole) | |
168 | -FOP_PROTO(ule) | |
169 | -FOP_PROTO(sf) | |
170 | -FOP_PROTO(ngle) | |
171 | -FOP_PROTO(seq) | |
172 | -FOP_PROTO(ngl) | |
173 | -FOP_PROTO(lt) | |
174 | -FOP_PROTO(nge) | |
175 | -FOP_PROTO(le) | |
176 | -FOP_PROTO(ngt) | |
177 | -#undef FOP_PROTO | |
178 | - | |
179 | 106 | static always_inline void env_to_regs(void) |
180 | 107 | { |
181 | 108 | } | ... | ... |
target-mips/helper.h
... | ... | @@ -130,3 +130,75 @@ DEF_HELPER(void, do_yield, (void)) |
130 | 130 | /* CP1 functions */ |
131 | 131 | DEF_HELPER(void, do_cfc1, (uint32_t reg)) |
132 | 132 | DEF_HELPER(void, do_ctc1, (uint32_t reg)) |
133 | + | |
134 | +DEF_HELPER(void, do_float_cvtd_s, (void)) | |
135 | +DEF_HELPER(void, do_float_cvtd_w, (void)) | |
136 | +DEF_HELPER(void, do_float_cvtd_l, (void)) | |
137 | +DEF_HELPER(void, do_float_cvtl_d, (void)) | |
138 | +DEF_HELPER(void, do_float_cvtl_s, (void)) | |
139 | +DEF_HELPER(void, do_float_cvtps_pw, (void)) | |
140 | +DEF_HELPER(void, do_float_cvtpw_ps, (void)) | |
141 | +DEF_HELPER(void, do_float_cvts_d, (void)) | |
142 | +DEF_HELPER(void, do_float_cvts_w, (void)) | |
143 | +DEF_HELPER(void, do_float_cvts_l, (void)) | |
144 | +DEF_HELPER(void, do_float_cvts_pl, (void)) | |
145 | +DEF_HELPER(void, do_float_cvts_pu, (void)) | |
146 | +DEF_HELPER(void, do_float_cvtw_s, (void)) | |
147 | +DEF_HELPER(void, do_float_cvtw_d, (void)) | |
148 | + | |
149 | +DEF_HELPER(void, do_float_addr_ps, (void)) | |
150 | +DEF_HELPER(void, do_float_mulr_ps, (void)) | |
151 | + | |
152 | +#define FOP_PROTO(op) \ | |
153 | +DEF_HELPER(void, do_float_ ## op ## _s, (void)) \ | |
154 | +DEF_HELPER(void, do_float_ ## op ## _d, (void)) | |
155 | +FOP_PROTO(roundl) | |
156 | +FOP_PROTO(roundw) | |
157 | +FOP_PROTO(truncl) | |
158 | +FOP_PROTO(truncw) | |
159 | +FOP_PROTO(ceill) | |
160 | +FOP_PROTO(ceilw) | |
161 | +FOP_PROTO(floorl) | |
162 | +FOP_PROTO(floorw) | |
163 | +FOP_PROTO(rsqrt) | |
164 | +FOP_PROTO(recip) | |
165 | +#undef FOP_PROTO | |
166 | + | |
167 | +#define FOP_PROTO(op) \ | |
168 | +DEF_HELPER(void, do_float_ ## op ## _s, (void)) \ | |
169 | +DEF_HELPER(void, do_float_ ## op ## _d, (void)) \ | |
170 | +DEF_HELPER(void, do_float_ ## op ## _ps, (void)) | |
171 | +FOP_PROTO(add) | |
172 | +FOP_PROTO(sub) | |
173 | +FOP_PROTO(mul) | |
174 | +FOP_PROTO(div) | |
175 | +FOP_PROTO(recip1) | |
176 | +FOP_PROTO(recip2) | |
177 | +FOP_PROTO(rsqrt1) | |
178 | +FOP_PROTO(rsqrt2) | |
179 | +#undef FOP_PROTO | |
180 | + | |
181 | +#define FOP_PROTO(op) \ | |
182 | +DEF_HELPER(void, do_cmp_d_ ## op, (long cc)) \ | |
183 | +DEF_HELPER(void, do_cmpabs_d_ ## op, (long cc)) \ | |
184 | +DEF_HELPER(void, do_cmp_s_ ## op, (long cc)) \ | |
185 | +DEF_HELPER(void, do_cmpabs_s_ ## op, (long cc)) \ | |
186 | +DEF_HELPER(void, do_cmp_ps_ ## op, (long cc)) \ | |
187 | +DEF_HELPER(void, do_cmpabs_ps_ ## op, (long cc)) | |
188 | +FOP_PROTO(f) | |
189 | +FOP_PROTO(un) | |
190 | +FOP_PROTO(eq) | |
191 | +FOP_PROTO(ueq) | |
192 | +FOP_PROTO(olt) | |
193 | +FOP_PROTO(ult) | |
194 | +FOP_PROTO(ole) | |
195 | +FOP_PROTO(ule) | |
196 | +FOP_PROTO(sf) | |
197 | +FOP_PROTO(ngle) | |
198 | +FOP_PROTO(seq) | |
199 | +FOP_PROTO(ngl) | |
200 | +FOP_PROTO(lt) | |
201 | +FOP_PROTO(nge) | |
202 | +FOP_PROTO(le) | |
203 | +FOP_PROTO(ngt) | |
204 | +#undef FOP_PROTO | ... | ... |
target-mips/op.c
... | ... | @@ -377,36 +377,6 @@ void op_dmultu (void) |
377 | 377 | |
378 | 378 | #define FLOAT_OP(name, p) void OPPROTO op_float_##name##_##p(void) |
379 | 379 | |
380 | -FLOAT_OP(cvtd, s) | |
381 | -{ | |
382 | - CALL_FROM_TB0(do_float_cvtd_s); | |
383 | - DEBUG_FPU_STATE(); | |
384 | - FORCE_RET(); | |
385 | -} | |
386 | -FLOAT_OP(cvtd, w) | |
387 | -{ | |
388 | - CALL_FROM_TB0(do_float_cvtd_w); | |
389 | - DEBUG_FPU_STATE(); | |
390 | - FORCE_RET(); | |
391 | -} | |
392 | -FLOAT_OP(cvtd, l) | |
393 | -{ | |
394 | - CALL_FROM_TB0(do_float_cvtd_l); | |
395 | - DEBUG_FPU_STATE(); | |
396 | - FORCE_RET(); | |
397 | -} | |
398 | -FLOAT_OP(cvtl, d) | |
399 | -{ | |
400 | - CALL_FROM_TB0(do_float_cvtl_d); | |
401 | - DEBUG_FPU_STATE(); | |
402 | - FORCE_RET(); | |
403 | -} | |
404 | -FLOAT_OP(cvtl, s) | |
405 | -{ | |
406 | - CALL_FROM_TB0(do_float_cvtl_s); | |
407 | - DEBUG_FPU_STATE(); | |
408 | - FORCE_RET(); | |
409 | -} | |
410 | 380 | FLOAT_OP(cvtps, s) |
411 | 381 | { |
412 | 382 | WT2 = WT0; |
... | ... | @@ -414,60 +384,6 @@ FLOAT_OP(cvtps, s) |
414 | 384 | DEBUG_FPU_STATE(); |
415 | 385 | FORCE_RET(); |
416 | 386 | } |
417 | -FLOAT_OP(cvtps, pw) | |
418 | -{ | |
419 | - CALL_FROM_TB0(do_float_cvtps_pw); | |
420 | - DEBUG_FPU_STATE(); | |
421 | - FORCE_RET(); | |
422 | -} | |
423 | -FLOAT_OP(cvtpw, ps) | |
424 | -{ | |
425 | - CALL_FROM_TB0(do_float_cvtpw_ps); | |
426 | - DEBUG_FPU_STATE(); | |
427 | - FORCE_RET(); | |
428 | -} | |
429 | -FLOAT_OP(cvts, d) | |
430 | -{ | |
431 | - CALL_FROM_TB0(do_float_cvts_d); | |
432 | - DEBUG_FPU_STATE(); | |
433 | - FORCE_RET(); | |
434 | -} | |
435 | -FLOAT_OP(cvts, w) | |
436 | -{ | |
437 | - CALL_FROM_TB0(do_float_cvts_w); | |
438 | - DEBUG_FPU_STATE(); | |
439 | - FORCE_RET(); | |
440 | -} | |
441 | -FLOAT_OP(cvts, l) | |
442 | -{ | |
443 | - CALL_FROM_TB0(do_float_cvts_l); | |
444 | - DEBUG_FPU_STATE(); | |
445 | - FORCE_RET(); | |
446 | -} | |
447 | -FLOAT_OP(cvts, pl) | |
448 | -{ | |
449 | - CALL_FROM_TB0(do_float_cvts_pl); | |
450 | - DEBUG_FPU_STATE(); | |
451 | - FORCE_RET(); | |
452 | -} | |
453 | -FLOAT_OP(cvts, pu) | |
454 | -{ | |
455 | - CALL_FROM_TB0(do_float_cvts_pu); | |
456 | - DEBUG_FPU_STATE(); | |
457 | - FORCE_RET(); | |
458 | -} | |
459 | -FLOAT_OP(cvtw, s) | |
460 | -{ | |
461 | - CALL_FROM_TB0(do_float_cvtw_s); | |
462 | - DEBUG_FPU_STATE(); | |
463 | - FORCE_RET(); | |
464 | -} | |
465 | -FLOAT_OP(cvtw, d) | |
466 | -{ | |
467 | - CALL_FROM_TB0(do_float_cvtw_d); | |
468 | - DEBUG_FPU_STATE(); | |
469 | - FORCE_RET(); | |
470 | -} | |
471 | 387 | |
472 | 388 | FLOAT_OP(pll, ps) |
473 | 389 | { |
... | ... | @@ -494,35 +410,6 @@ FLOAT_OP(puu, ps) |
494 | 410 | FORCE_RET(); |
495 | 411 | } |
496 | 412 | |
497 | -#define FLOAT_ROUNDOP(op, ttype, stype) \ | |
498 | -FLOAT_OP(op ## ttype, stype) \ | |
499 | -{ \ | |
500 | - CALL_FROM_TB0(do_float_ ## op ## ttype ## _ ## stype); \ | |
501 | - DEBUG_FPU_STATE(); \ | |
502 | - FORCE_RET(); \ | |
503 | -} | |
504 | - | |
505 | -FLOAT_ROUNDOP(round, l, d) | |
506 | -FLOAT_ROUNDOP(round, l, s) | |
507 | -FLOAT_ROUNDOP(round, w, d) | |
508 | -FLOAT_ROUNDOP(round, w, s) | |
509 | - | |
510 | -FLOAT_ROUNDOP(trunc, l, d) | |
511 | -FLOAT_ROUNDOP(trunc, l, s) | |
512 | -FLOAT_ROUNDOP(trunc, w, d) | |
513 | -FLOAT_ROUNDOP(trunc, w, s) | |
514 | - | |
515 | -FLOAT_ROUNDOP(ceil, l, d) | |
516 | -FLOAT_ROUNDOP(ceil, l, s) | |
517 | -FLOAT_ROUNDOP(ceil, w, d) | |
518 | -FLOAT_ROUNDOP(ceil, w, s) | |
519 | - | |
520 | -FLOAT_ROUNDOP(floor, l, d) | |
521 | -FLOAT_ROUNDOP(floor, l, s) | |
522 | -FLOAT_ROUNDOP(floor, w, d) | |
523 | -FLOAT_ROUNDOP(floor, w, s) | |
524 | -#undef FLOAR_ROUNDOP | |
525 | - | |
526 | 413 | FLOAT_OP(movf, d) |
527 | 414 | { |
528 | 415 | if (!(env->fpu->fcr31 & PARAM1)) |
... | ... | @@ -618,66 +505,6 @@ FLOAT_OP(movn, ps) |
618 | 505 | FORCE_RET(); |
619 | 506 | } |
620 | 507 | |
621 | -/* operations calling helpers, for s, d and ps */ | |
622 | -#define FLOAT_HOP(name) \ | |
623 | -FLOAT_OP(name, d) \ | |
624 | -{ \ | |
625 | - CALL_FROM_TB0(do_float_ ## name ## _d); \ | |
626 | - DEBUG_FPU_STATE(); \ | |
627 | - FORCE_RET(); \ | |
628 | -} \ | |
629 | -FLOAT_OP(name, s) \ | |
630 | -{ \ | |
631 | - CALL_FROM_TB0(do_float_ ## name ## _s); \ | |
632 | - DEBUG_FPU_STATE(); \ | |
633 | - FORCE_RET(); \ | |
634 | -} \ | |
635 | -FLOAT_OP(name, ps) \ | |
636 | -{ \ | |
637 | - CALL_FROM_TB0(do_float_ ## name ## _ps); \ | |
638 | - DEBUG_FPU_STATE(); \ | |
639 | - FORCE_RET(); \ | |
640 | -} | |
641 | -FLOAT_HOP(add) | |
642 | -FLOAT_HOP(sub) | |
643 | -FLOAT_HOP(mul) | |
644 | -FLOAT_HOP(div) | |
645 | -FLOAT_HOP(recip2) | |
646 | -FLOAT_HOP(rsqrt2) | |
647 | -FLOAT_HOP(rsqrt1) | |
648 | -FLOAT_HOP(recip1) | |
649 | -#undef FLOAT_HOP | |
650 | - | |
651 | -/* operations calling helpers, for s and d */ | |
652 | -#define FLOAT_HOP(name) \ | |
653 | -FLOAT_OP(name, d) \ | |
654 | -{ \ | |
655 | - CALL_FROM_TB0(do_float_ ## name ## _d); \ | |
656 | - DEBUG_FPU_STATE(); \ | |
657 | - FORCE_RET(); \ | |
658 | -} \ | |
659 | -FLOAT_OP(name, s) \ | |
660 | -{ \ | |
661 | - CALL_FROM_TB0(do_float_ ## name ## _s); \ | |
662 | - DEBUG_FPU_STATE(); \ | |
663 | - FORCE_RET(); \ | |
664 | -} | |
665 | -FLOAT_HOP(rsqrt) | |
666 | -FLOAT_HOP(recip) | |
667 | -#undef FLOAT_HOP | |
668 | - | |
669 | -/* operations calling helpers, for ps */ | |
670 | -#define FLOAT_HOP(name) \ | |
671 | -FLOAT_OP(name, ps) \ | |
672 | -{ \ | |
673 | - CALL_FROM_TB0(do_float_ ## name ## _ps); \ | |
674 | - DEBUG_FPU_STATE(); \ | |
675 | - FORCE_RET(); \ | |
676 | -} | |
677 | -FLOAT_HOP(addr) | |
678 | -FLOAT_HOP(mulr) | |
679 | -#undef FLOAT_HOP | |
680 | - | |
681 | 508 | /* ternary operations */ |
682 | 509 | #define FLOAT_TERNOP(name1, name2) \ |
683 | 510 | FLOAT_OP(name1 ## name2, d) \ |
... | ... | @@ -836,43 +663,6 @@ FLOAT_OP(alnv, ps) |
836 | 663 | |
837 | 664 | extern void dump_fpu_s(CPUState *env); |
838 | 665 | |
839 | -#define CMP_OP(fmt, op) \ | |
840 | -void OPPROTO op_cmp ## _ ## fmt ## _ ## op(void) \ | |
841 | -{ \ | |
842 | - CALL_FROM_TB1(do_cmp ## _ ## fmt ## _ ## op, PARAM1); \ | |
843 | - DEBUG_FPU_STATE(); \ | |
844 | - FORCE_RET(); \ | |
845 | -} \ | |
846 | -void OPPROTO op_cmpabs ## _ ## fmt ## _ ## op(void) \ | |
847 | -{ \ | |
848 | - CALL_FROM_TB1(do_cmpabs ## _ ## fmt ## _ ## op, PARAM1); \ | |
849 | - DEBUG_FPU_STATE(); \ | |
850 | - FORCE_RET(); \ | |
851 | -} | |
852 | -#define CMP_OPS(op) \ | |
853 | -CMP_OP(d, op) \ | |
854 | -CMP_OP(s, op) \ | |
855 | -CMP_OP(ps, op) | |
856 | - | |
857 | -CMP_OPS(f) | |
858 | -CMP_OPS(un) | |
859 | -CMP_OPS(eq) | |
860 | -CMP_OPS(ueq) | |
861 | -CMP_OPS(olt) | |
862 | -CMP_OPS(ult) | |
863 | -CMP_OPS(ole) | |
864 | -CMP_OPS(ule) | |
865 | -CMP_OPS(sf) | |
866 | -CMP_OPS(ngle) | |
867 | -CMP_OPS(seq) | |
868 | -CMP_OPS(ngl) | |
869 | -CMP_OPS(lt) | |
870 | -CMP_OPS(nge) | |
871 | -CMP_OPS(le) | |
872 | -CMP_OPS(ngt) | |
873 | -#undef CMP_OPS | |
874 | -#undef CMP_OP | |
875 | - | |
876 | 666 | void op_bc1f (void) |
877 | 667 | { |
878 | 668 | T0 = !!(~GET_FP_COND(env->fpu) & (0x1 << PARAM1)); | ... | ... |
target-mips/translate.c
... | ... | @@ -630,28 +630,28 @@ static inline void gen_store_fpr32h (TCGv t, int reg) |
630 | 630 | tcg_gen_st_i32(t, current_fpu, 8 * reg + 4 * !FP_ENDIAN_IDX); |
631 | 631 | } |
632 | 632 | |
633 | -#define FOP_CONDS(type, fmt) \ | |
634 | -static GenOpFunc1 * gen_op_cmp ## type ## _ ## fmt ## _table[16] = { \ | |
635 | - gen_op_cmp ## type ## _ ## fmt ## _f, \ | |
636 | - gen_op_cmp ## type ## _ ## fmt ## _un, \ | |
637 | - gen_op_cmp ## type ## _ ## fmt ## _eq, \ | |
638 | - gen_op_cmp ## type ## _ ## fmt ## _ueq, \ | |
639 | - gen_op_cmp ## type ## _ ## fmt ## _olt, \ | |
640 | - gen_op_cmp ## type ## _ ## fmt ## _ult, \ | |
641 | - gen_op_cmp ## type ## _ ## fmt ## _ole, \ | |
642 | - gen_op_cmp ## type ## _ ## fmt ## _ule, \ | |
643 | - gen_op_cmp ## type ## _ ## fmt ## _sf, \ | |
644 | - gen_op_cmp ## type ## _ ## fmt ## _ngle, \ | |
645 | - gen_op_cmp ## type ## _ ## fmt ## _seq, \ | |
646 | - gen_op_cmp ## type ## _ ## fmt ## _ngl, \ | |
647 | - gen_op_cmp ## type ## _ ## fmt ## _lt, \ | |
648 | - gen_op_cmp ## type ## _ ## fmt ## _nge, \ | |
649 | - gen_op_cmp ## type ## _ ## fmt ## _le, \ | |
650 | - gen_op_cmp ## type ## _ ## fmt ## _ngt, \ | |
651 | -}; \ | |
652 | -static always_inline void gen_cmp ## type ## _ ## fmt(int n, long cc) \ | |
653 | -{ \ | |
654 | - gen_op_cmp ## type ## _ ## fmt ## _table[n](cc); \ | |
633 | +#define FOP_CONDS(type, fmt) \ | |
634 | +static GenOpFunc1 * fcmp ## type ## _ ## fmt ## _table[16] = { \ | |
635 | + do_cmp ## type ## _ ## fmt ## _f, \ | |
636 | + do_cmp ## type ## _ ## fmt ## _un, \ | |
637 | + do_cmp ## type ## _ ## fmt ## _eq, \ | |
638 | + do_cmp ## type ## _ ## fmt ## _ueq, \ | |
639 | + do_cmp ## type ## _ ## fmt ## _olt, \ | |
640 | + do_cmp ## type ## _ ## fmt ## _ult, \ | |
641 | + do_cmp ## type ## _ ## fmt ## _ole, \ | |
642 | + do_cmp ## type ## _ ## fmt ## _ule, \ | |
643 | + do_cmp ## type ## _ ## fmt ## _sf, \ | |
644 | + do_cmp ## type ## _ ## fmt ## _ngle, \ | |
645 | + do_cmp ## type ## _ ## fmt ## _seq, \ | |
646 | + do_cmp ## type ## _ ## fmt ## _ngl, \ | |
647 | + do_cmp ## type ## _ ## fmt ## _lt, \ | |
648 | + do_cmp ## type ## _ ## fmt ## _nge, \ | |
649 | + do_cmp ## type ## _ ## fmt ## _le, \ | |
650 | + do_cmp ## type ## _ ## fmt ## _ngt, \ | |
651 | +}; \ | |
652 | +static inline void gen_cmp ## type ## _ ## fmt(int n, long cc) \ | |
653 | +{ \ | |
654 | + tcg_gen_helper_0_1i(fcmp ## type ## _ ## fmt ## _table[n], cc); \ | |
655 | 655 | } |
656 | 656 | |
657 | 657 | FOP_CONDS(, d) |
... | ... | @@ -660,6 +660,7 @@ FOP_CONDS(, s) |
660 | 660 | FOP_CONDS(abs, s) |
661 | 661 | FOP_CONDS(, ps) |
662 | 662 | FOP_CONDS(abs, ps) |
663 | +#undef FOP_CONDS | |
663 | 664 | |
664 | 665 | /* Tests */ |
665 | 666 | #define OP_COND(name, cond) \ |
... | ... | @@ -5597,7 +5598,7 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
5597 | 5598 | case FOP(0, 16): |
5598 | 5599 | gen_load_fpr32(fpu32_T[0], fs); |
5599 | 5600 | gen_load_fpr32(fpu32_T[1], ft); |
5600 | - gen_op_float_add_s(); | |
5601 | + tcg_gen_helper_0_0(do_float_add_s); | |
5601 | 5602 | gen_store_fpr32(fpu32_T[2], fd); |
5602 | 5603 | opn = "add.s"; |
5603 | 5604 | optype = BINOP; |
... | ... | @@ -5605,7 +5606,7 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
5605 | 5606 | case FOP(1, 16): |
5606 | 5607 | gen_load_fpr32(fpu32_T[0], fs); |
5607 | 5608 | gen_load_fpr32(fpu32_T[1], ft); |
5608 | - gen_op_float_sub_s(); | |
5609 | + tcg_gen_helper_0_0(do_float_sub_s); | |
5609 | 5610 | gen_store_fpr32(fpu32_T[2], fd); |
5610 | 5611 | opn = "sub.s"; |
5611 | 5612 | optype = BINOP; |
... | ... | @@ -5613,7 +5614,7 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
5613 | 5614 | case FOP(2, 16): |
5614 | 5615 | gen_load_fpr32(fpu32_T[0], fs); |
5615 | 5616 | gen_load_fpr32(fpu32_T[1], ft); |
5616 | - gen_op_float_mul_s(); | |
5617 | + tcg_gen_helper_0_0(do_float_mul_s); | |
5617 | 5618 | gen_store_fpr32(fpu32_T[2], fd); |
5618 | 5619 | opn = "mul.s"; |
5619 | 5620 | optype = BINOP; |
... | ... | @@ -5621,7 +5622,7 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
5621 | 5622 | case FOP(3, 16): |
5622 | 5623 | gen_load_fpr32(fpu32_T[0], fs); |
5623 | 5624 | gen_load_fpr32(fpu32_T[1], ft); |
5624 | - gen_op_float_div_s(); | |
5625 | + tcg_gen_helper_0_0(do_float_div_s); | |
5625 | 5626 | gen_store_fpr32(fpu32_T[2], fd); |
5626 | 5627 | opn = "div.s"; |
5627 | 5628 | optype = BINOP; |
... | ... | @@ -5653,52 +5654,52 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
5653 | 5654 | case FOP(8, 16): |
5654 | 5655 | check_cp1_64bitmode(ctx); |
5655 | 5656 | gen_load_fpr32(fpu32_T[0], fs); |
5656 | - gen_op_float_roundl_s(); | |
5657 | + tcg_gen_helper_0_0(do_float_roundl_s); | |
5657 | 5658 | gen_store_fpr64(ctx, fpu64_T[2], fd); |
5658 | 5659 | opn = "round.l.s"; |
5659 | 5660 | break; |
5660 | 5661 | case FOP(9, 16): |
5661 | 5662 | check_cp1_64bitmode(ctx); |
5662 | 5663 | gen_load_fpr32(fpu32_T[0], fs); |
5663 | - gen_op_float_truncl_s(); | |
5664 | + tcg_gen_helper_0_0(do_float_truncl_s); | |
5664 | 5665 | gen_store_fpr64(ctx, fpu64_T[2], fd); |
5665 | 5666 | opn = "trunc.l.s"; |
5666 | 5667 | break; |
5667 | 5668 | case FOP(10, 16): |
5668 | 5669 | check_cp1_64bitmode(ctx); |
5669 | 5670 | gen_load_fpr32(fpu32_T[0], fs); |
5670 | - gen_op_float_ceill_s(); | |
5671 | + tcg_gen_helper_0_0(do_float_ceill_s); | |
5671 | 5672 | gen_store_fpr64(ctx, fpu64_T[2], fd); |
5672 | 5673 | opn = "ceil.l.s"; |
5673 | 5674 | break; |
5674 | 5675 | case FOP(11, 16): |
5675 | 5676 | check_cp1_64bitmode(ctx); |
5676 | 5677 | gen_load_fpr32(fpu32_T[0], fs); |
5677 | - gen_op_float_floorl_s(); | |
5678 | + tcg_gen_helper_0_0(do_float_floorl_s); | |
5678 | 5679 | gen_store_fpr64(ctx, fpu64_T[2], fd); |
5679 | 5680 | opn = "floor.l.s"; |
5680 | 5681 | break; |
5681 | 5682 | case FOP(12, 16): |
5682 | 5683 | gen_load_fpr32(fpu32_T[0], fs); |
5683 | - gen_op_float_roundw_s(); | |
5684 | + tcg_gen_helper_0_0(do_float_roundw_s); | |
5684 | 5685 | gen_store_fpr32(fpu32_T[2], fd); |
5685 | 5686 | opn = "round.w.s"; |
5686 | 5687 | break; |
5687 | 5688 | case FOP(13, 16): |
5688 | 5689 | gen_load_fpr32(fpu32_T[0], fs); |
5689 | - gen_op_float_truncw_s(); | |
5690 | + tcg_gen_helper_0_0(do_float_truncw_s); | |
5690 | 5691 | gen_store_fpr32(fpu32_T[2], fd); |
5691 | 5692 | opn = "trunc.w.s"; |
5692 | 5693 | break; |
5693 | 5694 | case FOP(14, 16): |
5694 | 5695 | gen_load_fpr32(fpu32_T[0], fs); |
5695 | - gen_op_float_ceilw_s(); | |
5696 | + tcg_gen_helper_0_0(do_float_ceilw_s); | |
5696 | 5697 | gen_store_fpr32(fpu32_T[2], fd); |
5697 | 5698 | opn = "ceil.w.s"; |
5698 | 5699 | break; |
5699 | 5700 | case FOP(15, 16): |
5700 | 5701 | gen_load_fpr32(fpu32_T[0], fs); |
5701 | - gen_op_float_floorw_s(); | |
5702 | + tcg_gen_helper_0_0(do_float_floorw_s); | |
5702 | 5703 | gen_store_fpr32(fpu32_T[2], fd); |
5703 | 5704 | opn = "floor.w.s"; |
5704 | 5705 | break; |
... | ... | @@ -5729,14 +5730,14 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
5729 | 5730 | case FOP(21, 16): |
5730 | 5731 | check_cop1x(ctx); |
5731 | 5732 | gen_load_fpr32(fpu32_T[0], fs); |
5732 | - gen_op_float_recip_s(); | |
5733 | + tcg_gen_helper_0_0(do_float_recip_s); | |
5733 | 5734 | gen_store_fpr32(fpu32_T[2], fd); |
5734 | 5735 | opn = "recip.s"; |
5735 | 5736 | break; |
5736 | 5737 | case FOP(22, 16): |
5737 | 5738 | check_cop1x(ctx); |
5738 | 5739 | gen_load_fpr32(fpu32_T[0], fs); |
5739 | - gen_op_float_rsqrt_s(); | |
5740 | + tcg_gen_helper_0_0(do_float_rsqrt_s); | |
5740 | 5741 | gen_store_fpr32(fpu32_T[2], fd); |
5741 | 5742 | opn = "rsqrt.s"; |
5742 | 5743 | break; |
... | ... | @@ -5744,21 +5745,21 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
5744 | 5745 | check_cp1_64bitmode(ctx); |
5745 | 5746 | gen_load_fpr32(fpu32_T[0], fs); |
5746 | 5747 | gen_load_fpr32(fpu32_T[2], fd); |
5747 | - gen_op_float_recip2_s(); | |
5748 | + tcg_gen_helper_0_0(do_float_recip2_s); | |
5748 | 5749 | gen_store_fpr32(fpu32_T[2], fd); |
5749 | 5750 | opn = "recip2.s"; |
5750 | 5751 | break; |
5751 | 5752 | case FOP(29, 16): |
5752 | 5753 | check_cp1_64bitmode(ctx); |
5753 | 5754 | gen_load_fpr32(fpu32_T[0], fs); |
5754 | - gen_op_float_recip1_s(); | |
5755 | + tcg_gen_helper_0_0(do_float_recip1_s); | |
5755 | 5756 | gen_store_fpr32(fpu32_T[2], fd); |
5756 | 5757 | opn = "recip1.s"; |
5757 | 5758 | break; |
5758 | 5759 | case FOP(30, 16): |
5759 | 5760 | check_cp1_64bitmode(ctx); |
5760 | 5761 | gen_load_fpr32(fpu32_T[0], fs); |
5761 | - gen_op_float_rsqrt1_s(); | |
5762 | + tcg_gen_helper_0_0(do_float_rsqrt1_s); | |
5762 | 5763 | gen_store_fpr32(fpu32_T[2], fd); |
5763 | 5764 | opn = "rsqrt1.s"; |
5764 | 5765 | break; |
... | ... | @@ -5766,27 +5767,27 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
5766 | 5767 | check_cp1_64bitmode(ctx); |
5767 | 5768 | gen_load_fpr32(fpu32_T[0], fs); |
5768 | 5769 | gen_load_fpr32(fpu32_T[2], ft); |
5769 | - gen_op_float_rsqrt2_s(); | |
5770 | + tcg_gen_helper_0_0(do_float_rsqrt2_s); | |
5770 | 5771 | gen_store_fpr32(fpu32_T[2], fd); |
5771 | 5772 | opn = "rsqrt2.s"; |
5772 | 5773 | break; |
5773 | 5774 | case FOP(33, 16): |
5774 | 5775 | check_cp1_registers(ctx, fd); |
5775 | 5776 | gen_load_fpr32(fpu32_T[0], fs); |
5776 | - gen_op_float_cvtd_s(); | |
5777 | + tcg_gen_helper_0_0(do_float_cvtd_s); | |
5777 | 5778 | gen_store_fpr64(ctx, fpu64_T[2], fd); |
5778 | 5779 | opn = "cvt.d.s"; |
5779 | 5780 | break; |
5780 | 5781 | case FOP(36, 16): |
5781 | 5782 | gen_load_fpr32(fpu32_T[0], fs); |
5782 | - gen_op_float_cvtw_s(); | |
5783 | + tcg_gen_helper_0_0(do_float_cvtw_s); | |
5783 | 5784 | gen_store_fpr32(fpu32_T[2], fd); |
5784 | 5785 | opn = "cvt.w.s"; |
5785 | 5786 | break; |
5786 | 5787 | case FOP(37, 16): |
5787 | 5788 | check_cp1_64bitmode(ctx); |
5788 | 5789 | gen_load_fpr32(fpu32_T[0], fs); |
5789 | - gen_op_float_cvtl_s(); | |
5790 | + tcg_gen_helper_0_0(do_float_cvtl_s); | |
5790 | 5791 | gen_store_fpr64(ctx, fpu64_T[2], fd); |
5791 | 5792 | opn = "cvt.l.s"; |
5792 | 5793 | break; |
... | ... | @@ -5829,7 +5830,7 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
5829 | 5830 | check_cp1_registers(ctx, fs | ft | fd); |
5830 | 5831 | gen_load_fpr64(ctx, fpu64_T[0], fs); |
5831 | 5832 | gen_load_fpr64(ctx, fpu64_T[1], ft); |
5832 | - gen_op_float_add_d(); | |
5833 | + tcg_gen_helper_0_0(do_float_add_d); | |
5833 | 5834 | gen_store_fpr64(ctx, fpu64_T[2], fd); |
5834 | 5835 | opn = "add.d"; |
5835 | 5836 | optype = BINOP; |
... | ... | @@ -5838,7 +5839,7 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
5838 | 5839 | check_cp1_registers(ctx, fs | ft | fd); |
5839 | 5840 | gen_load_fpr64(ctx, fpu64_T[0], fs); |
5840 | 5841 | gen_load_fpr64(ctx, fpu64_T[1], ft); |
5841 | - gen_op_float_sub_d(); | |
5842 | + tcg_gen_helper_0_0(do_float_sub_d); | |
5842 | 5843 | gen_store_fpr64(ctx, fpu64_T[2], fd); |
5843 | 5844 | opn = "sub.d"; |
5844 | 5845 | optype = BINOP; |
... | ... | @@ -5847,7 +5848,7 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
5847 | 5848 | check_cp1_registers(ctx, fs | ft | fd); |
5848 | 5849 | gen_load_fpr64(ctx, fpu64_T[0], fs); |
5849 | 5850 | gen_load_fpr64(ctx, fpu64_T[1], ft); |
5850 | - gen_op_float_mul_d(); | |
5851 | + tcg_gen_helper_0_0(do_float_mul_d); | |
5851 | 5852 | gen_store_fpr64(ctx, fpu64_T[2], fd); |
5852 | 5853 | opn = "mul.d"; |
5853 | 5854 | optype = BINOP; |
... | ... | @@ -5856,7 +5857,7 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
5856 | 5857 | check_cp1_registers(ctx, fs | ft | fd); |
5857 | 5858 | gen_load_fpr64(ctx, fpu64_T[0], fs); |
5858 | 5859 | gen_load_fpr64(ctx, fpu64_T[1], ft); |
5859 | - gen_op_float_div_d(); | |
5860 | + tcg_gen_helper_0_0(do_float_div_d); | |
5860 | 5861 | gen_store_fpr64(ctx, fpu64_T[2], fd); |
5861 | 5862 | opn = "div.d"; |
5862 | 5863 | optype = BINOP; |
... | ... | @@ -5892,56 +5893,56 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
5892 | 5893 | case FOP(8, 17): |
5893 | 5894 | check_cp1_64bitmode(ctx); |
5894 | 5895 | gen_load_fpr64(ctx, fpu64_T[0], fs); |
5895 | - gen_op_float_roundl_d(); | |
5896 | + tcg_gen_helper_0_0(do_float_roundl_d); | |
5896 | 5897 | gen_store_fpr64(ctx, fpu64_T[2], fd); |
5897 | 5898 | opn = "round.l.d"; |
5898 | 5899 | break; |
5899 | 5900 | case FOP(9, 17): |
5900 | 5901 | check_cp1_64bitmode(ctx); |
5901 | 5902 | gen_load_fpr64(ctx, fpu64_T[0], fs); |
5902 | - gen_op_float_truncl_d(); | |
5903 | + tcg_gen_helper_0_0(do_float_truncl_d); | |
5903 | 5904 | gen_store_fpr64(ctx, fpu64_T[2], fd); |
5904 | 5905 | opn = "trunc.l.d"; |
5905 | 5906 | break; |
5906 | 5907 | case FOP(10, 17): |
5907 | 5908 | check_cp1_64bitmode(ctx); |
5908 | 5909 | gen_load_fpr64(ctx, fpu64_T[0], fs); |
5909 | - gen_op_float_ceill_d(); | |
5910 | + tcg_gen_helper_0_0(do_float_ceill_d); | |
5910 | 5911 | gen_store_fpr64(ctx, fpu64_T[2], fd); |
5911 | 5912 | opn = "ceil.l.d"; |
5912 | 5913 | break; |
5913 | 5914 | case FOP(11, 17): |
5914 | 5915 | check_cp1_64bitmode(ctx); |
5915 | 5916 | gen_load_fpr64(ctx, fpu64_T[0], fs); |
5916 | - gen_op_float_floorl_d(); | |
5917 | + tcg_gen_helper_0_0(do_float_floorl_d); | |
5917 | 5918 | gen_store_fpr64(ctx, fpu64_T[2], fd); |
5918 | 5919 | opn = "floor.l.d"; |
5919 | 5920 | break; |
5920 | 5921 | case FOP(12, 17): |
5921 | 5922 | check_cp1_registers(ctx, fs); |
5922 | 5923 | gen_load_fpr64(ctx, fpu64_T[0], fs); |
5923 | - gen_op_float_roundw_d(); | |
5924 | + tcg_gen_helper_0_0(do_float_roundw_d); | |
5924 | 5925 | gen_store_fpr32(fpu32_T[2], fd); |
5925 | 5926 | opn = "round.w.d"; |
5926 | 5927 | break; |
5927 | 5928 | case FOP(13, 17): |
5928 | 5929 | check_cp1_registers(ctx, fs); |
5929 | 5930 | gen_load_fpr64(ctx, fpu64_T[0], fs); |
5930 | - gen_op_float_truncw_d(); | |
5931 | + tcg_gen_helper_0_0(do_float_truncw_d); | |
5931 | 5932 | gen_store_fpr32(fpu32_T[2], fd); |
5932 | 5933 | opn = "trunc.w.d"; |
5933 | 5934 | break; |
5934 | 5935 | case FOP(14, 17): |
5935 | 5936 | check_cp1_registers(ctx, fs); |
5936 | 5937 | gen_load_fpr64(ctx, fpu64_T[0], fs); |
5937 | - gen_op_float_ceilw_d(); | |
5938 | + tcg_gen_helper_0_0(do_float_ceilw_d); | |
5938 | 5939 | gen_store_fpr32(fpu32_T[2], fd); |
5939 | 5940 | opn = "ceil.w.d"; |
5940 | 5941 | break; |
5941 | 5942 | case FOP(15, 17): |
5942 | 5943 | check_cp1_registers(ctx, fs); |
5943 | 5944 | gen_load_fpr64(ctx, fpu64_T[0], fs); |
5944 | - gen_op_float_floorw_d(); | |
5945 | + tcg_gen_helper_0_0(do_float_floorw_d); | |
5945 | 5946 | gen_store_fpr32(fpu32_T[2], fd); |
5946 | 5947 | opn = "floor.w.d"; |
5947 | 5948 | break; |
... | ... | @@ -5972,14 +5973,14 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
5972 | 5973 | case FOP(21, 17): |
5973 | 5974 | check_cp1_64bitmode(ctx); |
5974 | 5975 | gen_load_fpr64(ctx, fpu64_T[0], fs); |
5975 | - gen_op_float_recip_d(); | |
5976 | + tcg_gen_helper_0_0(do_float_recip_d); | |
5976 | 5977 | gen_store_fpr64(ctx, fpu64_T[2], fd); |
5977 | 5978 | opn = "recip.d"; |
5978 | 5979 | break; |
5979 | 5980 | case FOP(22, 17): |
5980 | 5981 | check_cp1_64bitmode(ctx); |
5981 | 5982 | gen_load_fpr64(ctx, fpu64_T[0], fs); |
5982 | - gen_op_float_rsqrt_d(); | |
5983 | + tcg_gen_helper_0_0(do_float_rsqrt_d); | |
5983 | 5984 | gen_store_fpr64(ctx, fpu64_T[2], fd); |
5984 | 5985 | opn = "rsqrt.d"; |
5985 | 5986 | break; |
... | ... | @@ -5987,21 +5988,21 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
5987 | 5988 | check_cp1_64bitmode(ctx); |
5988 | 5989 | gen_load_fpr64(ctx, fpu64_T[0], fs); |
5989 | 5990 | gen_load_fpr64(ctx, fpu64_T[2], ft); |
5990 | - gen_op_float_recip2_d(); | |
5991 | + tcg_gen_helper_0_0(do_float_recip2_d); | |
5991 | 5992 | gen_store_fpr64(ctx, fpu64_T[2], fd); |
5992 | 5993 | opn = "recip2.d"; |
5993 | 5994 | break; |
5994 | 5995 | case FOP(29, 17): |
5995 | 5996 | check_cp1_64bitmode(ctx); |
5996 | 5997 | gen_load_fpr64(ctx, fpu64_T[0], fs); |
5997 | - gen_op_float_recip1_d(); | |
5998 | + tcg_gen_helper_0_0(do_float_recip1_d); | |
5998 | 5999 | gen_store_fpr64(ctx, fpu64_T[2], fd); |
5999 | 6000 | opn = "recip1.d"; |
6000 | 6001 | break; |
6001 | 6002 | case FOP(30, 17): |
6002 | 6003 | check_cp1_64bitmode(ctx); |
6003 | 6004 | gen_load_fpr64(ctx, fpu64_T[0], fs); |
6004 | - gen_op_float_rsqrt1_d(); | |
6005 | + tcg_gen_helper_0_0(do_float_rsqrt1_d); | |
6005 | 6006 | gen_store_fpr64(ctx, fpu64_T[2], fd); |
6006 | 6007 | opn = "rsqrt1.d"; |
6007 | 6008 | break; |
... | ... | @@ -6009,7 +6010,7 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
6009 | 6010 | check_cp1_64bitmode(ctx); |
6010 | 6011 | gen_load_fpr64(ctx, fpu64_T[0], fs); |
6011 | 6012 | gen_load_fpr64(ctx, fpu64_T[2], ft); |
6012 | - gen_op_float_rsqrt2_d(); | |
6013 | + tcg_gen_helper_0_0(do_float_rsqrt2_d); | |
6013 | 6014 | gen_store_fpr64(ctx, fpu64_T[2], fd); |
6014 | 6015 | opn = "rsqrt2.d"; |
6015 | 6016 | break; |
... | ... | @@ -6045,48 +6046,48 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
6045 | 6046 | case FOP(32, 17): |
6046 | 6047 | check_cp1_registers(ctx, fs); |
6047 | 6048 | gen_load_fpr64(ctx, fpu64_T[0], fs); |
6048 | - gen_op_float_cvts_d(); | |
6049 | + tcg_gen_helper_0_0(do_float_cvts_d); | |
6049 | 6050 | gen_store_fpr32(fpu32_T[2], fd); |
6050 | 6051 | opn = "cvt.s.d"; |
6051 | 6052 | break; |
6052 | 6053 | case FOP(36, 17): |
6053 | 6054 | check_cp1_registers(ctx, fs); |
6054 | 6055 | gen_load_fpr64(ctx, fpu64_T[0], fs); |
6055 | - gen_op_float_cvtw_d(); | |
6056 | + tcg_gen_helper_0_0(do_float_cvtw_d); | |
6056 | 6057 | gen_store_fpr32(fpu32_T[2], fd); |
6057 | 6058 | opn = "cvt.w.d"; |
6058 | 6059 | break; |
6059 | 6060 | case FOP(37, 17): |
6060 | 6061 | check_cp1_64bitmode(ctx); |
6061 | 6062 | gen_load_fpr64(ctx, fpu64_T[0], fs); |
6062 | - gen_op_float_cvtl_d(); | |
6063 | + tcg_gen_helper_0_0(do_float_cvtl_d); | |
6063 | 6064 | gen_store_fpr64(ctx, fpu64_T[2], fd); |
6064 | 6065 | opn = "cvt.l.d"; |
6065 | 6066 | break; |
6066 | 6067 | case FOP(32, 20): |
6067 | 6068 | gen_load_fpr32(fpu32_T[0], fs); |
6068 | - gen_op_float_cvts_w(); | |
6069 | + tcg_gen_helper_0_0(do_float_cvts_w); | |
6069 | 6070 | gen_store_fpr32(fpu32_T[2], fd); |
6070 | 6071 | opn = "cvt.s.w"; |
6071 | 6072 | break; |
6072 | 6073 | case FOP(33, 20): |
6073 | 6074 | check_cp1_registers(ctx, fd); |
6074 | 6075 | gen_load_fpr32(fpu32_T[0], fs); |
6075 | - gen_op_float_cvtd_w(); | |
6076 | + tcg_gen_helper_0_0(do_float_cvtd_w); | |
6076 | 6077 | gen_store_fpr64(ctx, fpu64_T[2], fd); |
6077 | 6078 | opn = "cvt.d.w"; |
6078 | 6079 | break; |
6079 | 6080 | case FOP(32, 21): |
6080 | 6081 | check_cp1_64bitmode(ctx); |
6081 | 6082 | gen_load_fpr64(ctx, fpu64_T[0], fs); |
6082 | - gen_op_float_cvts_l(); | |
6083 | + tcg_gen_helper_0_0(do_float_cvts_l); | |
6083 | 6084 | gen_store_fpr32(fpu32_T[2], fd); |
6084 | 6085 | opn = "cvt.s.l"; |
6085 | 6086 | break; |
6086 | 6087 | case FOP(33, 21): |
6087 | 6088 | check_cp1_64bitmode(ctx); |
6088 | 6089 | gen_load_fpr64(ctx, fpu64_T[0], fs); |
6089 | - gen_op_float_cvtd_l(); | |
6090 | + tcg_gen_helper_0_0(do_float_cvtd_l); | |
6090 | 6091 | gen_store_fpr64(ctx, fpu64_T[2], fd); |
6091 | 6092 | opn = "cvt.d.l"; |
6092 | 6093 | break; |
... | ... | @@ -6094,7 +6095,7 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
6094 | 6095 | check_cp1_64bitmode(ctx); |
6095 | 6096 | gen_load_fpr32(fpu32_T[0], fs); |
6096 | 6097 | gen_load_fpr32h(fpu32h_T[0], fs); |
6097 | - gen_op_float_cvtps_pw(); | |
6098 | + tcg_gen_helper_0_0(do_float_cvtps_pw); | |
6098 | 6099 | gen_store_fpr32(fpu32_T[2], fd); |
6099 | 6100 | gen_store_fpr32h(fpu32h_T[2], fd); |
6100 | 6101 | opn = "cvt.ps.pw"; |
... | ... | @@ -6105,7 +6106,7 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
6105 | 6106 | gen_load_fpr32h(fpu32h_T[0], fs); |
6106 | 6107 | gen_load_fpr32(fpu32_T[1], ft); |
6107 | 6108 | gen_load_fpr32h(fpu32h_T[1], ft); |
6108 | - gen_op_float_add_ps(); | |
6109 | + tcg_gen_helper_0_0(do_float_add_ps); | |
6109 | 6110 | gen_store_fpr32(fpu32_T[2], fd); |
6110 | 6111 | gen_store_fpr32h(fpu32h_T[2], fd); |
6111 | 6112 | opn = "add.ps"; |
... | ... | @@ -6116,7 +6117,7 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
6116 | 6117 | gen_load_fpr32h(fpu32h_T[0], fs); |
6117 | 6118 | gen_load_fpr32(fpu32_T[1], ft); |
6118 | 6119 | gen_load_fpr32h(fpu32h_T[1], ft); |
6119 | - gen_op_float_sub_ps(); | |
6120 | + tcg_gen_helper_0_0(do_float_sub_ps); | |
6120 | 6121 | gen_store_fpr32(fpu32_T[2], fd); |
6121 | 6122 | gen_store_fpr32h(fpu32h_T[2], fd); |
6122 | 6123 | opn = "sub.ps"; |
... | ... | @@ -6127,7 +6128,7 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
6127 | 6128 | gen_load_fpr32h(fpu32h_T[0], fs); |
6128 | 6129 | gen_load_fpr32(fpu32_T[1], ft); |
6129 | 6130 | gen_load_fpr32h(fpu32h_T[1], ft); |
6130 | - gen_op_float_mul_ps(); | |
6131 | + tcg_gen_helper_0_0(do_float_mul_ps); | |
6131 | 6132 | gen_store_fpr32(fpu32_T[2], fd); |
6132 | 6133 | gen_store_fpr32h(fpu32h_T[2], fd); |
6133 | 6134 | opn = "mul.ps"; |
... | ... | @@ -6204,7 +6205,7 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
6204 | 6205 | gen_load_fpr32h(fpu32h_T[0], ft); |
6205 | 6206 | gen_load_fpr32(fpu32_T[1], fs); |
6206 | 6207 | gen_load_fpr32h(fpu32h_T[1], fs); |
6207 | - gen_op_float_addr_ps(); | |
6208 | + tcg_gen_helper_0_0(do_float_addr_ps); | |
6208 | 6209 | gen_store_fpr32(fpu32_T[2], fd); |
6209 | 6210 | gen_store_fpr32h(fpu32h_T[2], fd); |
6210 | 6211 | opn = "addr.ps"; |
... | ... | @@ -6215,7 +6216,7 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
6215 | 6216 | gen_load_fpr32h(fpu32h_T[0], ft); |
6216 | 6217 | gen_load_fpr32(fpu32_T[1], fs); |
6217 | 6218 | gen_load_fpr32h(fpu32h_T[1], fs); |
6218 | - gen_op_float_mulr_ps(); | |
6219 | + tcg_gen_helper_0_0(do_float_mulr_ps); | |
6219 | 6220 | gen_store_fpr32(fpu32_T[2], fd); |
6220 | 6221 | gen_store_fpr32h(fpu32h_T[2], fd); |
6221 | 6222 | opn = "mulr.ps"; |
... | ... | @@ -6226,7 +6227,7 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
6226 | 6227 | gen_load_fpr32h(fpu32h_T[0], fs); |
6227 | 6228 | gen_load_fpr32(fpu32_T[2], fd); |
6228 | 6229 | gen_load_fpr32h(fpu32h_T[2], fd); |
6229 | - gen_op_float_recip2_ps(); | |
6230 | + tcg_gen_helper_0_0(do_float_recip2_ps); | |
6230 | 6231 | gen_store_fpr32(fpu32_T[2], fd); |
6231 | 6232 | gen_store_fpr32h(fpu32h_T[2], fd); |
6232 | 6233 | opn = "recip2.ps"; |
... | ... | @@ -6235,7 +6236,7 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
6235 | 6236 | check_cp1_64bitmode(ctx); |
6236 | 6237 | gen_load_fpr32(fpu32_T[0], fs); |
6237 | 6238 | gen_load_fpr32h(fpu32h_T[0], fs); |
6238 | - gen_op_float_recip1_ps(); | |
6239 | + tcg_gen_helper_0_0(do_float_recip1_ps); | |
6239 | 6240 | gen_store_fpr32(fpu32_T[2], fd); |
6240 | 6241 | gen_store_fpr32h(fpu32h_T[2], fd); |
6241 | 6242 | opn = "recip1.ps"; |
... | ... | @@ -6244,7 +6245,7 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
6244 | 6245 | check_cp1_64bitmode(ctx); |
6245 | 6246 | gen_load_fpr32(fpu32_T[0], fs); |
6246 | 6247 | gen_load_fpr32h(fpu32h_T[0], fs); |
6247 | - gen_op_float_rsqrt1_ps(); | |
6248 | + tcg_gen_helper_0_0(do_float_rsqrt1_ps); | |
6248 | 6249 | gen_store_fpr32(fpu32_T[2], fd); |
6249 | 6250 | gen_store_fpr32h(fpu32h_T[2], fd); |
6250 | 6251 | opn = "rsqrt1.ps"; |
... | ... | @@ -6255,7 +6256,7 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
6255 | 6256 | gen_load_fpr32h(fpu32h_T[0], fs); |
6256 | 6257 | gen_load_fpr32(fpu32_T[2], ft); |
6257 | 6258 | gen_load_fpr32h(fpu32h_T[2], ft); |
6258 | - gen_op_float_rsqrt2_ps(); | |
6259 | + tcg_gen_helper_0_0(do_float_rsqrt2_ps); | |
6259 | 6260 | gen_store_fpr32(fpu32_T[2], fd); |
6260 | 6261 | gen_store_fpr32h(fpu32h_T[2], fd); |
6261 | 6262 | opn = "rsqrt2.ps"; |
... | ... | @@ -6263,7 +6264,7 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
6263 | 6264 | case FOP(32, 22): |
6264 | 6265 | check_cp1_64bitmode(ctx); |
6265 | 6266 | gen_load_fpr32h(fpu32h_T[0], fs); |
6266 | - gen_op_float_cvts_pu(); | |
6267 | + tcg_gen_helper_0_0(do_float_cvts_pu); | |
6267 | 6268 | gen_store_fpr32(fpu32_T[2], fd); |
6268 | 6269 | opn = "cvt.s.pu"; |
6269 | 6270 | break; |
... | ... | @@ -6271,7 +6272,7 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
6271 | 6272 | check_cp1_64bitmode(ctx); |
6272 | 6273 | gen_load_fpr32(fpu32_T[0], fs); |
6273 | 6274 | gen_load_fpr32h(fpu32h_T[0], fs); |
6274 | - gen_op_float_cvtpw_ps(); | |
6275 | + tcg_gen_helper_0_0(do_float_cvtpw_ps); | |
6275 | 6276 | gen_store_fpr32(fpu32_T[2], fd); |
6276 | 6277 | gen_store_fpr32h(fpu32h_T[2], fd); |
6277 | 6278 | opn = "cvt.pw.ps"; |
... | ... | @@ -6279,7 +6280,7 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
6279 | 6280 | case FOP(40, 22): |
6280 | 6281 | check_cp1_64bitmode(ctx); |
6281 | 6282 | gen_load_fpr32(fpu32_T[0], fs); |
6282 | - gen_op_float_cvts_pl(); | |
6283 | + tcg_gen_helper_0_0(do_float_cvts_pl); | |
6283 | 6284 | gen_store_fpr32(fpu32_T[2], fd); |
6284 | 6285 | opn = "cvt.s.pl"; |
6285 | 6286 | break; | ... | ... |