target/ppc: Implement PLQ and PSTQ
Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br> Message-Id: <20211029202424.175401-7-matheus.ferst@eldorado.org.br> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
e10271e104
commit
49de064889
@ -38,6 +38,8 @@ PLWA 000001 00 0--.-- .................. \
|
|||||||
101001 ..... ..... ................ @PLS_D
|
101001 ..... ..... ................ @PLS_D
|
||||||
PLD 000001 00 0--.-- .................. \
|
PLD 000001 00 0--.-- .................. \
|
||||||
111001 ..... ..... ................ @PLS_D
|
111001 ..... ..... ................ @PLS_D
|
||||||
|
PLQ 000001 00 0--.-- .................. \
|
||||||
|
111000 ..... ..... ................ @PLS_D
|
||||||
|
|
||||||
### Fixed-Point Store Instructions
|
### Fixed-Point Store Instructions
|
||||||
|
|
||||||
@ -50,6 +52,8 @@ PSTH 000001 10 0--.-- .................. \
|
|||||||
|
|
||||||
PSTD 000001 00 0--.-- .................. \
|
PSTD 000001 00 0--.-- .................. \
|
||||||
111101 ..... ..... ................ @PLS_D
|
111101 ..... ..... ................ @PLS_D
|
||||||
|
PSTQ 000001 00 0--.-- .................. \
|
||||||
|
111100 ..... ..... ................ @PLS_D
|
||||||
|
|
||||||
### Fixed-Point Arithmetic Instructions
|
### Fixed-Point Arithmetic Instructions
|
||||||
|
|
||||||
|
@ -160,6 +160,16 @@ static bool do_ldst_quad(DisasContext *ctx, arg_D *a, bool store, bool prefixed)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool do_ldst_quad_PLS_D(DisasContext *ctx, arg_PLS_D *a, bool store)
|
||||||
|
{
|
||||||
|
arg_D d;
|
||||||
|
if (!resolve_PLS_D(ctx, &d, a)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return do_ldst_quad(ctx, &d, store, true);
|
||||||
|
}
|
||||||
|
|
||||||
/* Load Byte and Zero */
|
/* Load Byte and Zero */
|
||||||
TRANS(LBZ, do_ldst_D, false, false, MO_UB)
|
TRANS(LBZ, do_ldst_D, false, false, MO_UB)
|
||||||
TRANS(LBZX, do_ldst_X, false, false, MO_UB)
|
TRANS(LBZX, do_ldst_X, false, false, MO_UB)
|
||||||
@ -203,6 +213,7 @@ TRANS64(PLD, do_ldst_PLS_D, false, false, MO_Q)
|
|||||||
|
|
||||||
/* Load Quadword */
|
/* Load Quadword */
|
||||||
TRANS64(LQ, do_ldst_quad, false, false);
|
TRANS64(LQ, do_ldst_quad, false, false);
|
||||||
|
TRANS64(PLQ, do_ldst_quad_PLS_D, false);
|
||||||
|
|
||||||
/* Store Byte */
|
/* Store Byte */
|
||||||
TRANS(STB, do_ldst_D, false, true, MO_UB)
|
TRANS(STB, do_ldst_D, false, true, MO_UB)
|
||||||
@ -234,6 +245,7 @@ TRANS64(PSTD, do_ldst_PLS_D, false, true, MO_Q)
|
|||||||
|
|
||||||
/* Store Quadword */
|
/* Store Quadword */
|
||||||
TRANS64(STQ, do_ldst_quad, true, false);
|
TRANS64(STQ, do_ldst_quad, true, false);
|
||||||
|
TRANS64(PSTQ, do_ldst_quad_PLS_D, true);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Fixed-Point Compare Instructions
|
* Fixed-Point Compare Instructions
|
||||||
|
Loading…
Reference in New Issue
Block a user