On 24 August 2015 at 17:17, Richard Henderson <r...@twiddle.net> wrote: > Signed-off-by: Richard Henderson <r...@twiddle.net> > --- > target-tilegx/translate.c | 57 > +++++++++++++++++++++++++++++++++++++++++++++-- > 1 file changed, 55 insertions(+), 2 deletions(-) > > diff --git a/target-tilegx/translate.c b/target-tilegx/translate.c > index 6be751b..4e6d577 100644 > --- a/target-tilegx/translate.c > +++ b/target-tilegx/translate.c > @@ -474,6 +474,7 @@ static TileExcp gen_rrr_opcode(DisasContext *dc, unsigned > opext, > TCGv tdest = dest_gr(dc, dest); > TCGv tsrca = load_gr(dc, srca); > TCGv tsrcb = load_gr(dc, srcb); > + TCGv t0;
Personally I would restrict the scope of this to just the case block where it's used. > case OE_RRR(SHRUX, 0, X0): > case OE_RRR(SHRUX, 0, X1): > + t0 = tcg_temp_new(); > + tcg_gen_andi_tl(t0, tsrcb, 31); > + tcg_gen_ext32u_tl(tdest, tsrca); > + tcg_gen_shl_tl(tdest, tdest, t0); > + tcg_gen_ext32s_tl(tdest, tdest); > + tcg_temp_free(t0); > + mnemonic = "shrux"; > + break; Using shl for a shift right doesn't look right... > case OE_SH(SHRUI, X0): > case OE_SH(SHRUI, X1): > case OE_SH(SHRUI, Y0): > case OE_SH(SHRUI, Y1): > + tcg_gen_shri_tl(tdest, tsrca, imm); > + mnemonic = "shrui"; > + break; > case OE_SH(SHRUXI, X0): > case OE_SH(SHRUXI, X1): > + if ((imm & 31) == 0) { > + tcg_gen_ext32s_tl(tdest, tsrca); > + } else { > + tcg_gen_ext32u_tl(tdest, tsrca); > + tcg_gen_shli_tl(tdest, tdest, imm & 31); Shift left used when shift right intended ? > + } > + mnemonic = "shlxi"; > + break; > case OE_SH(V1SHLI, X0): > case OE_SH(V1SHLI, X1): > case OE_SH(V1SHRSI, X0): > @@ -1096,6 +1148,7 @@ static TileExcp gen_rri_opcode(DisasContext *dc, > unsigned opext, > case OE_SH(V2SHRSI, X1): > case OE_SH(V2SHRUI, X0): > case OE_SH(V2SHRUI, X1): > + return TILEGX_EXCP_OPCODE_UNIMPLEMENTED; Why does this change appear in this patch? > > case OE(ADDLI_OPCODE_X0, 0, X0): > case OE(ADDLI_OPCODE_X1, 0, X1): > -- > 2.4.3 > thanks -- PMM