Skip to content

Commit d754f0c

Browse files
committed
target/ppc: Move mffs[.] to decodetree
Signed-off-by: Víctor Colombo <[email protected]>
1 parent 45c0d58 commit d754f0c

File tree

3 files changed

+16
-19
lines changed

3 files changed

+16
-19
lines changed

target/ppc/insn32.decode

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,9 @@
9494
&X_t rt
9595
@X_t ...... rt:5 ..... ..... .......... . &X_t
9696

97+
&X_t_rc rt rc:bool
98+
@X_t_rc ...... rt:5 ..... ..... .......... rc:1 &X_t_rc
99+
97100
&X_tb rt rb
98101
@X_tb ...... rt:5 ..... rb:5 .......... . &X_tb
99102

@@ -326,6 +329,7 @@ SETNBCR 011111 ..... ..... ----- 0111100000 - @X_bi
326329

327330
### Move To/From FPSCR
328331

332+
MFFS 111111 ..... 00000 ----- 1001000111 . @X_t_rc
329333
MFFSCE 111111 ..... 00001 ----- 1001000111 - @X_t
330334
MFFSCDRN 111111 ..... 10100 ..... 1001000111 - @X_tb
331335
MFFSCDRNI 111111 ..... 10101 --... 1001000111 - @X_imm3

target/ppc/translate/fp-impl.c.inc

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -589,24 +589,6 @@ static void gen_mcrfs(DisasContext *ctx)
589589
tcg_temp_free_i64(tnew_fpscr);
590590
}
591591

592-
/* mffs */
593-
static void gen_mffs(DisasContext *ctx)
594-
{
595-
TCGv_i64 t0;
596-
if (unlikely(!ctx->fpu_enabled)) {
597-
gen_exception(ctx, POWERPC_EXCP_FPU);
598-
return;
599-
}
600-
t0 = tcg_temp_new_i64();
601-
gen_reset_fpstatus();
602-
tcg_gen_extu_tl_i64(t0, cpu_fpscr);
603-
set_fpr(rD(ctx->opcode), t0);
604-
if (unlikely(Rc(ctx->opcode))) {
605-
gen_set_cr1_from_fpscr(ctx);
606-
}
607-
tcg_temp_free_i64(t0);
608-
}
609-
610592
static void do_mffsc(int rt, TCGv_i64 t1, uint64_t set_mask,
611593
uint64_t clear_mask, uint32_t fpscr_mask)
612594
{
@@ -627,6 +609,18 @@ static void do_mffsc(int rt, TCGv_i64 t1, uint64_t set_mask,
627609
tcg_temp_free_i64(fpscr);
628610
}
629611

612+
static bool trans_MFFS(DisasContext *ctx, arg_X_t_rc *a)
613+
{
614+
REQUIRE_FPU(ctx);
615+
616+
do_mffsc(a->rt, tcg_constant_i64(0), 0xFFFFFFFFFFFFFFFFULL, 0, 0);
617+
if (a->rc) {
618+
gen_set_cr1_from_fpscr(ctx);
619+
}
620+
621+
return true;
622+
}
623+
630624
static bool trans_MFFSCE(DisasContext *ctx, arg_X_t *a)
631625
{
632626
REQUIRE_INSNS_FLAGS2(ctx, ISA300);

target/ppc/translate/fp-ops.c.inc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ GEN_HANDLER_E(fcpsgn, 0x3F, 0x08, 0x00, 0x00000000, PPC_NONE, PPC2_ISA205),
7575
GEN_HANDLER_E(fmrgew, 0x3F, 0x06, 0x1E, 0x00000001, PPC_NONE, PPC2_VSX207),
7676
GEN_HANDLER_E(fmrgow, 0x3F, 0x06, 0x1A, 0x00000001, PPC_NONE, PPC2_VSX207),
7777
GEN_HANDLER(mcrfs, 0x3F, 0x00, 0x02, 0x0063F801, PPC_FLOAT),
78-
GEN_HANDLER_E_2(mffs, 0x3F, 0x07, 0x12, 0x00, 0x00000000, PPC_FLOAT, PPC_NONE),
7978
GEN_HANDLER(mtfsb0, 0x3F, 0x06, 0x02, 0x001FF800, PPC_FLOAT),
8079
GEN_HANDLER(mtfsb1, 0x3F, 0x06, 0x01, 0x001FF800, PPC_FLOAT),
8180
GEN_HANDLER(mtfsf, 0x3F, 0x07, 0x16, 0x00000000, PPC_FLOAT),

0 commit comments

Comments
 (0)