mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-11 03:24:58 -06:00
target/hppa: Decode d for cmpb instructions
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
84e224d422
commit
e9efd4bcdc
2 changed files with 15 additions and 6 deletions
|
@ -67,6 +67,7 @@
|
||||||
&rri_cf_d t r i cf d
|
&rri_cf_d t r i cf d
|
||||||
|
|
||||||
&rrb_c_f disp n c f r1 r2
|
&rrb_c_f disp n c f r1 r2
|
||||||
|
&rrb_c_d_f disp n c d f r1 r2
|
||||||
&rib_c_f disp n c f r i
|
&rib_c_f disp n c f r i
|
||||||
|
|
||||||
####
|
####
|
||||||
|
@ -83,6 +84,8 @@
|
||||||
|
|
||||||
@rrb_cf ...... r2:5 r1:5 c:3 ........... n:1 . \
|
@rrb_cf ...... r2:5 r1:5 c:3 ........... n:1 . \
|
||||||
&rrb_c_f disp=%assemble_12
|
&rrb_c_f disp=%assemble_12
|
||||||
|
@rrb_cdf ...... r2:5 r1:5 c:3 ........... n:1 . \
|
||||||
|
&rrb_c_d_f disp=%assemble_12
|
||||||
@rib_cf ...... r:5 ..... c:3 ........... n:1 . \
|
@rib_cf ...... r:5 ..... c:3 ........... n:1 . \
|
||||||
&rib_c_f disp=%assemble_12 i=%im5_16
|
&rib_c_f disp=%assemble_12 i=%im5_16
|
||||||
|
|
||||||
|
@ -296,8 +299,10 @@ bb_imm 110001 p:5 r:5 c:1 1 d:1 ........... n:1 . disp=%assemble_12
|
||||||
movb 110010 ..... ..... ... ........... . . @rrb_cf f=0
|
movb 110010 ..... ..... ... ........... . . @rrb_cf f=0
|
||||||
movbi 110011 ..... ..... ... ........... . . @rib_cf f=0
|
movbi 110011 ..... ..... ... ........... . . @rib_cf f=0
|
||||||
|
|
||||||
cmpb 100000 ..... ..... ... ........... . . @rrb_cf f=0
|
cmpb 100000 ..... ..... ... ........... . . @rrb_cdf d=0 f=0
|
||||||
cmpb 100010 ..... ..... ... ........... . . @rrb_cf f=1
|
cmpb 100010 ..... ..... ... ........... . . @rrb_cdf d=0 f=1
|
||||||
|
cmpb 100111 ..... ..... ... ........... . . @rrb_cdf d=1 f=0
|
||||||
|
cmpb 101111 ..... ..... ... ........... . . @rrb_cdf d=1 f=1
|
||||||
cmpbi 100001 ..... ..... ... ........... . . @rib_cf f=0
|
cmpbi 100001 ..... ..... ... ........... . . @rib_cf f=0
|
||||||
cmpbi 100011 ..... ..... ... ........... . . @rib_cf f=1
|
cmpbi 100011 ..... ..... ... ........... . . @rib_cf f=1
|
||||||
|
|
||||||
|
|
|
@ -3091,11 +3091,10 @@ static bool trans_ldo(DisasContext *ctx, arg_ldo *a)
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool do_cmpb(DisasContext *ctx, unsigned r, TCGv_reg in1,
|
static bool do_cmpb(DisasContext *ctx, unsigned r, TCGv_reg in1,
|
||||||
unsigned c, unsigned f, unsigned n, int disp)
|
unsigned c, unsigned f, bool d, unsigned n, int disp)
|
||||||
{
|
{
|
||||||
TCGv_reg dest, in2, sv;
|
TCGv_reg dest, in2, sv;
|
||||||
DisasCond cond;
|
DisasCond cond;
|
||||||
bool d = false;
|
|
||||||
|
|
||||||
in2 = load_gpr(ctx, r);
|
in2 = load_gpr(ctx, r);
|
||||||
dest = tcg_temp_new();
|
dest = tcg_temp_new();
|
||||||
|
@ -3113,14 +3112,19 @@ static bool do_cmpb(DisasContext *ctx, unsigned r, TCGv_reg in1,
|
||||||
|
|
||||||
static bool trans_cmpb(DisasContext *ctx, arg_cmpb *a)
|
static bool trans_cmpb(DisasContext *ctx, arg_cmpb *a)
|
||||||
{
|
{
|
||||||
|
if (!ctx->is_pa20 && a->d) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
nullify_over(ctx);
|
nullify_over(ctx);
|
||||||
return do_cmpb(ctx, a->r2, load_gpr(ctx, a->r1), a->c, a->f, a->n, a->disp);
|
return do_cmpb(ctx, a->r2, load_gpr(ctx, a->r1),
|
||||||
|
a->c, a->f, a->d, a->n, a->disp);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool trans_cmpbi(DisasContext *ctx, arg_cmpbi *a)
|
static bool trans_cmpbi(DisasContext *ctx, arg_cmpbi *a)
|
||||||
{
|
{
|
||||||
nullify_over(ctx);
|
nullify_over(ctx);
|
||||||
return do_cmpb(ctx, a->r, tcg_constant_reg(a->i), a->c, a->f, a->n, a->disp);
|
return do_cmpb(ctx, a->r, tcg_constant_reg(a->i),
|
||||||
|
a->c, a->f, false, a->n, a->disp);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool do_addb(DisasContext *ctx, unsigned r, TCGv_reg in1,
|
static bool do_addb(DisasContext *ctx, unsigned r, TCGv_reg in1,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue