target-tilegx: Handle comparison instructions
Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <rth@twiddle.net>
This commit is contained in:
parent
e04e98bf27
commit
73c543776b
@ -473,32 +473,52 @@ static TileExcp gen_rrr_opcode(DisasContext *dc, unsigned opext,
|
||||
case OE_RRR(CMOVEQZ, 4, Y0):
|
||||
case OE_RRR(CMOVNEZ, 0, X0):
|
||||
case OE_RRR(CMOVNEZ, 4, Y0):
|
||||
return TILEGX_EXCP_OPCODE_UNIMPLEMENTED;
|
||||
case OE_RRR(CMPEQ, 0, X0):
|
||||
case OE_RRR(CMPEQ, 0, X1):
|
||||
case OE_RRR(CMPEQ, 3, Y0):
|
||||
case OE_RRR(CMPEQ, 3, Y1):
|
||||
tcg_gen_setcond_tl(TCG_COND_EQ, tdest, tsrca, tsrcb);
|
||||
mnemonic = "cmpeq";
|
||||
break;
|
||||
case OE_RRR(CMPEXCH4, 0, X1):
|
||||
case OE_RRR(CMPEXCH, 0, X1):
|
||||
return TILEGX_EXCP_OPCODE_UNIMPLEMENTED;
|
||||
case OE_RRR(CMPLES, 0, X0):
|
||||
case OE_RRR(CMPLES, 0, X1):
|
||||
case OE_RRR(CMPLES, 2, Y0):
|
||||
case OE_RRR(CMPLES, 2, Y1):
|
||||
tcg_gen_setcond_tl(TCG_COND_LE, tdest, tsrca, tsrcb);
|
||||
mnemonic = "cmples";
|
||||
break;
|
||||
case OE_RRR(CMPLEU, 0, X0):
|
||||
case OE_RRR(CMPLEU, 0, X1):
|
||||
case OE_RRR(CMPLEU, 2, Y0):
|
||||
case OE_RRR(CMPLEU, 2, Y1):
|
||||
tcg_gen_setcond_tl(TCG_COND_LEU, tdest, tsrca, tsrcb);
|
||||
mnemonic = "cmpleu";
|
||||
break;
|
||||
case OE_RRR(CMPLTS, 0, X0):
|
||||
case OE_RRR(CMPLTS, 0, X1):
|
||||
case OE_RRR(CMPLTS, 2, Y0):
|
||||
case OE_RRR(CMPLTS, 2, Y1):
|
||||
tcg_gen_setcond_tl(TCG_COND_LT, tdest, tsrca, tsrcb);
|
||||
mnemonic = "cmplts";
|
||||
break;
|
||||
case OE_RRR(CMPLTU, 0, X0):
|
||||
case OE_RRR(CMPLTU, 0, X1):
|
||||
case OE_RRR(CMPLTU, 2, Y0):
|
||||
case OE_RRR(CMPLTU, 2, Y1):
|
||||
tcg_gen_setcond_tl(TCG_COND_LTU, tdest, tsrca, tsrcb);
|
||||
mnemonic = "cmpltu";
|
||||
break;
|
||||
case OE_RRR(CMPNE, 0, X0):
|
||||
case OE_RRR(CMPNE, 0, X1):
|
||||
case OE_RRR(CMPNE, 3, Y0):
|
||||
case OE_RRR(CMPNE, 3, Y1):
|
||||
tcg_gen_setcond_tl(TCG_COND_NE, tdest, tsrca, tsrcb);
|
||||
mnemonic = "cmpne";
|
||||
break;
|
||||
case OE_RRR(CMULAF, 0, X0):
|
||||
case OE_RRR(CMULA, 0, X0):
|
||||
case OE_RRR(CMULFR, 0, X0):
|
||||
@ -886,13 +906,25 @@ static TileExcp gen_rri_opcode(DisasContext *dc, unsigned opext,
|
||||
tcg_gen_andi_tl(tdest, tsrca, imm);
|
||||
mnemonic = "andi";
|
||||
break;
|
||||
case OE(CMPEQI_OPCODE_Y0, 0, Y0):
|
||||
case OE(CMPEQI_OPCODE_Y1, 0, Y1):
|
||||
case OE_IM(CMPEQI, X0):
|
||||
case OE_IM(CMPEQI, X1):
|
||||
tcg_gen_setcondi_tl(TCG_COND_EQ, tdest, tsrca, imm);
|
||||
mnemonic = "cmpeqi";
|
||||
break;
|
||||
case OE(CMPLTSI_OPCODE_Y0, 0, Y0):
|
||||
case OE(CMPLTSI_OPCODE_Y1, 0, Y1):
|
||||
case OE_IM(CMPLTSI, X0):
|
||||
case OE_IM(CMPLTSI, X1):
|
||||
tcg_gen_setcondi_tl(TCG_COND_LT, tdest, tsrca, imm);
|
||||
mnemonic = "cmpltsi";
|
||||
break;
|
||||
case OE_IM(CMPLTUI, X0):
|
||||
case OE_IM(CMPLTUI, X1):
|
||||
return TILEGX_EXCP_OPCODE_UNIMPLEMENTED;
|
||||
tcg_gen_setcondi_tl(TCG_COND_LTU, tdest, tsrca, imm);
|
||||
mnemonic = "cmpltui";
|
||||
break;
|
||||
case OE_IM(LD1S_ADD, X1):
|
||||
memop = MO_SB;
|
||||
mnemonic = "ld1s_add";
|
||||
@ -1042,11 +1074,6 @@ static TileExcp gen_rri_opcode(DisasContext *dc, unsigned opext,
|
||||
tcg_gen_ext32s_tl(tdest, tdest);
|
||||
mnemonic = "addxli";
|
||||
break;
|
||||
case OE(CMPEQI_OPCODE_Y0, 0, Y0):
|
||||
case OE(CMPEQI_OPCODE_Y1, 0, Y1):
|
||||
case OE(CMPLTSI_OPCODE_Y0, 0, Y0):
|
||||
case OE(CMPLTSI_OPCODE_Y1, 0, Y1):
|
||||
return TILEGX_EXCP_OPCODE_UNIMPLEMENTED;
|
||||
case OE(SHL16INSLI_OPCODE_X0, 0, X0):
|
||||
case OE(SHL16INSLI_OPCODE_X1, 0, X1):
|
||||
tcg_gen_shli_tl(tdest, tsrca, 16);
|
||||
|
Loading…
Reference in New Issue
Block a user