target-alpha: fix the braces
Conform to coding style, and avoid further occurrences of bugs due to misplaced braces. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Richard Henderson <rth@twiddle.net>
This commit is contained in:
parent
a9e8aeb375
commit
67debe3ae5
|
@ -100,8 +100,9 @@ void alpha_translate_init(void)
|
||||||
char *p;
|
char *p;
|
||||||
static int done_init = 0;
|
static int done_init = 0;
|
||||||
|
|
||||||
if (done_init)
|
if (done_init) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
cpu_env = tcg_global_reg_new_ptr(TCG_AREG0, "env");
|
cpu_env = tcg_global_reg_new_ptr(TCG_AREG0, "env");
|
||||||
|
|
||||||
|
@ -1117,9 +1118,10 @@ static inline uint64_t zapnot_mask(uint8_t lit)
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < 8; ++i) {
|
for (i = 0; i < 8; ++i) {
|
||||||
if ((lit >> i) & 1)
|
if ((lit >> i) & 1) {
|
||||||
mask |= 0xffull << (i * 8);
|
mask |= 0xffull << (i * 8);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return mask;
|
return mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1152,26 +1154,28 @@ static void gen_zapnoti(TCGv dest, TCGv src, uint8_t lit)
|
||||||
|
|
||||||
static inline void gen_zapnot(int ra, int rb, int rc, int islit, uint8_t lit)
|
static inline void gen_zapnot(int ra, int rb, int rc, int islit, uint8_t lit)
|
||||||
{
|
{
|
||||||
if (unlikely(rc == 31))
|
if (unlikely(rc == 31)) {
|
||||||
return;
|
return;
|
||||||
else if (unlikely(ra == 31))
|
} else if (unlikely(ra == 31)) {
|
||||||
tcg_gen_movi_i64(cpu_ir[rc], 0);
|
tcg_gen_movi_i64(cpu_ir[rc], 0);
|
||||||
else if (islit)
|
} else if (islit) {
|
||||||
gen_zapnoti(cpu_ir[rc], cpu_ir[ra], lit);
|
gen_zapnoti(cpu_ir[rc], cpu_ir[ra], lit);
|
||||||
else
|
} else {
|
||||||
gen_helper_zapnot (cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
|
gen_helper_zapnot (cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void gen_zap(int ra, int rb, int rc, int islit, uint8_t lit)
|
static inline void gen_zap(int ra, int rb, int rc, int islit, uint8_t lit)
|
||||||
{
|
{
|
||||||
if (unlikely(rc == 31))
|
if (unlikely(rc == 31)) {
|
||||||
return;
|
return;
|
||||||
else if (unlikely(ra == 31))
|
} else if (unlikely(ra == 31)) {
|
||||||
tcg_gen_movi_i64(cpu_ir[rc], 0);
|
tcg_gen_movi_i64(cpu_ir[rc], 0);
|
||||||
else if (islit)
|
} else if (islit) {
|
||||||
gen_zapnoti(cpu_ir[rc], cpu_ir[ra], ~lit);
|
gen_zapnoti(cpu_ir[rc], cpu_ir[ra], ~lit);
|
||||||
else
|
} else {
|
||||||
gen_helper_zap (cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
|
gen_helper_zap (cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1179,11 +1183,11 @@ static inline void gen_zap(int ra, int rb, int rc, int islit, uint8_t lit)
|
||||||
static void gen_ext_h(int ra, int rb, int rc, int islit,
|
static void gen_ext_h(int ra, int rb, int rc, int islit,
|
||||||
uint8_t lit, uint8_t byte_mask)
|
uint8_t lit, uint8_t byte_mask)
|
||||||
{
|
{
|
||||||
if (unlikely(rc == 31))
|
if (unlikely(rc == 31)) {
|
||||||
return;
|
return;
|
||||||
else if (unlikely(ra == 31))
|
} else if (unlikely(ra == 31)) {
|
||||||
tcg_gen_movi_i64(cpu_ir[rc], 0);
|
tcg_gen_movi_i64(cpu_ir[rc], 0);
|
||||||
else {
|
} else {
|
||||||
if (islit) {
|
if (islit) {
|
||||||
lit = (64 - (lit & 7) * 8) & 0x3f;
|
lit = (64 - (lit & 7) * 8) & 0x3f;
|
||||||
tcg_gen_shli_i64(cpu_ir[rc], cpu_ir[ra], lit);
|
tcg_gen_shli_i64(cpu_ir[rc], cpu_ir[ra], lit);
|
||||||
|
@ -1204,11 +1208,11 @@ static void gen_ext_h(int ra, int rb, int rc, int islit,
|
||||||
static void gen_ext_l(int ra, int rb, int rc, int islit,
|
static void gen_ext_l(int ra, int rb, int rc, int islit,
|
||||||
uint8_t lit, uint8_t byte_mask)
|
uint8_t lit, uint8_t byte_mask)
|
||||||
{
|
{
|
||||||
if (unlikely(rc == 31))
|
if (unlikely(rc == 31)) {
|
||||||
return;
|
return;
|
||||||
else if (unlikely(ra == 31))
|
} else if (unlikely(ra == 31)) {
|
||||||
tcg_gen_movi_i64(cpu_ir[rc], 0);
|
tcg_gen_movi_i64(cpu_ir[rc], 0);
|
||||||
else {
|
} else {
|
||||||
if (islit) {
|
if (islit) {
|
||||||
tcg_gen_shri_i64(cpu_ir[rc], cpu_ir[ra], (lit & 7) * 8);
|
tcg_gen_shri_i64(cpu_ir[rc], cpu_ir[ra], (lit & 7) * 8);
|
||||||
} else {
|
} else {
|
||||||
|
@ -1226,11 +1230,11 @@ static void gen_ext_l(int ra, int rb, int rc, int islit,
|
||||||
static void gen_ins_h(int ra, int rb, int rc, int islit,
|
static void gen_ins_h(int ra, int rb, int rc, int islit,
|
||||||
uint8_t lit, uint8_t byte_mask)
|
uint8_t lit, uint8_t byte_mask)
|
||||||
{
|
{
|
||||||
if (unlikely(rc == 31))
|
if (unlikely(rc == 31)) {
|
||||||
return;
|
return;
|
||||||
else if (unlikely(ra == 31) || (islit && (lit & 7) == 0))
|
} else if (unlikely(ra == 31) || (islit && (lit & 7) == 0)) {
|
||||||
tcg_gen_movi_i64(cpu_ir[rc], 0);
|
tcg_gen_movi_i64(cpu_ir[rc], 0);
|
||||||
else {
|
} else {
|
||||||
TCGv tmp = tcg_temp_new();
|
TCGv tmp = tcg_temp_new();
|
||||||
|
|
||||||
/* The instruction description has us left-shift the byte mask
|
/* The instruction description has us left-shift the byte mask
|
||||||
|
@ -1268,11 +1272,11 @@ static void gen_ins_h(int ra, int rb, int rc, int islit,
|
||||||
static void gen_ins_l(int ra, int rb, int rc, int islit,
|
static void gen_ins_l(int ra, int rb, int rc, int islit,
|
||||||
uint8_t lit, uint8_t byte_mask)
|
uint8_t lit, uint8_t byte_mask)
|
||||||
{
|
{
|
||||||
if (unlikely(rc == 31))
|
if (unlikely(rc == 31)) {
|
||||||
return;
|
return;
|
||||||
else if (unlikely(ra == 31))
|
} else if (unlikely(ra == 31)) {
|
||||||
tcg_gen_movi_i64(cpu_ir[rc], 0);
|
tcg_gen_movi_i64(cpu_ir[rc], 0);
|
||||||
else {
|
} else {
|
||||||
TCGv tmp = tcg_temp_new();
|
TCGv tmp = tcg_temp_new();
|
||||||
|
|
||||||
/* The instruction description has us left-shift the byte mask
|
/* The instruction description has us left-shift the byte mask
|
||||||
|
@ -1298,11 +1302,11 @@ static void gen_ins_l(int ra, int rb, int rc, int islit,
|
||||||
static void gen_msk_h(int ra, int rb, int rc, int islit,
|
static void gen_msk_h(int ra, int rb, int rc, int islit,
|
||||||
uint8_t lit, uint8_t byte_mask)
|
uint8_t lit, uint8_t byte_mask)
|
||||||
{
|
{
|
||||||
if (unlikely(rc == 31))
|
if (unlikely(rc == 31)) {
|
||||||
return;
|
return;
|
||||||
else if (unlikely(ra == 31))
|
} else if (unlikely(ra == 31)) {
|
||||||
tcg_gen_movi_i64(cpu_ir[rc], 0);
|
tcg_gen_movi_i64(cpu_ir[rc], 0);
|
||||||
else if (islit) {
|
} else if (islit) {
|
||||||
gen_zapnoti (cpu_ir[rc], cpu_ir[ra], ~((byte_mask << (lit & 7)) >> 8));
|
gen_zapnoti (cpu_ir[rc], cpu_ir[ra], ~((byte_mask << (lit & 7)) >> 8));
|
||||||
} else {
|
} else {
|
||||||
TCGv shift = tcg_temp_new();
|
TCGv shift = tcg_temp_new();
|
||||||
|
@ -1336,11 +1340,11 @@ static void gen_msk_h(int ra, int rb, int rc, int islit,
|
||||||
static void gen_msk_l(int ra, int rb, int rc, int islit,
|
static void gen_msk_l(int ra, int rb, int rc, int islit,
|
||||||
uint8_t lit, uint8_t byte_mask)
|
uint8_t lit, uint8_t byte_mask)
|
||||||
{
|
{
|
||||||
if (unlikely(rc == 31))
|
if (unlikely(rc == 31)) {
|
||||||
return;
|
return;
|
||||||
else if (unlikely(ra == 31))
|
} else if (unlikely(ra == 31)) {
|
||||||
tcg_gen_movi_i64(cpu_ir[rc], 0);
|
tcg_gen_movi_i64(cpu_ir[rc], 0);
|
||||||
else if (islit) {
|
} else if (islit) {
|
||||||
gen_zapnoti (cpu_ir[rc], cpu_ir[ra], ~(byte_mask << (lit & 7)));
|
gen_zapnoti (cpu_ir[rc], cpu_ir[ra], ~(byte_mask << (lit & 7)));
|
||||||
} else {
|
} else {
|
||||||
TCGv shift = tcg_temp_new();
|
TCGv shift = tcg_temp_new();
|
||||||
|
@ -1826,20 +1830,22 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||||
case 0x08:
|
case 0x08:
|
||||||
/* LDA */
|
/* LDA */
|
||||||
if (likely(ra != 31)) {
|
if (likely(ra != 31)) {
|
||||||
if (rb != 31)
|
if (rb != 31) {
|
||||||
tcg_gen_addi_i64(cpu_ir[ra], cpu_ir[rb], disp16);
|
tcg_gen_addi_i64(cpu_ir[ra], cpu_ir[rb], disp16);
|
||||||
else
|
} else {
|
||||||
tcg_gen_movi_i64(cpu_ir[ra], disp16);
|
tcg_gen_movi_i64(cpu_ir[ra], disp16);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 0x09:
|
case 0x09:
|
||||||
/* LDAH */
|
/* LDAH */
|
||||||
if (likely(ra != 31)) {
|
if (likely(ra != 31)) {
|
||||||
if (rb != 31)
|
if (rb != 31) {
|
||||||
tcg_gen_addi_i64(cpu_ir[ra], cpu_ir[rb], disp16 << 16);
|
tcg_gen_addi_i64(cpu_ir[ra], cpu_ir[rb], disp16 << 16);
|
||||||
else
|
} else {
|
||||||
tcg_gen_movi_i64(cpu_ir[ra], disp16 << 16);
|
tcg_gen_movi_i64(cpu_ir[ra], disp16 << 16);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 0x0A:
|
case 0x0A:
|
||||||
/* LDBU */
|
/* LDBU */
|
||||||
|
@ -1885,12 +1891,13 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||||
tcg_gen_ext32s_i64(cpu_ir[rc], cpu_ir[rc]);
|
tcg_gen_ext32s_i64(cpu_ir[rc], cpu_ir[rc]);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_movi_i64(cpu_ir[rc], lit);
|
tcg_gen_movi_i64(cpu_ir[rc], lit);
|
||||||
else
|
} else {
|
||||||
tcg_gen_ext32s_i64(cpu_ir[rc], cpu_ir[rb]);
|
tcg_gen_ext32s_i64(cpu_ir[rc], cpu_ir[rb]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 0x02:
|
case 0x02:
|
||||||
/* S4ADDL */
|
/* S4ADDL */
|
||||||
|
@ -1898,33 +1905,36 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||||
if (ra != 31) {
|
if (ra != 31) {
|
||||||
TCGv tmp = tcg_temp_new();
|
TCGv tmp = tcg_temp_new();
|
||||||
tcg_gen_shli_i64(tmp, cpu_ir[ra], 2);
|
tcg_gen_shli_i64(tmp, cpu_ir[ra], 2);
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_addi_i64(tmp, tmp, lit);
|
tcg_gen_addi_i64(tmp, tmp, lit);
|
||||||
else
|
} else {
|
||||||
tcg_gen_add_i64(tmp, tmp, cpu_ir[rb]);
|
tcg_gen_add_i64(tmp, tmp, cpu_ir[rb]);
|
||||||
|
}
|
||||||
tcg_gen_ext32s_i64(cpu_ir[rc], tmp);
|
tcg_gen_ext32s_i64(cpu_ir[rc], tmp);
|
||||||
tcg_temp_free(tmp);
|
tcg_temp_free(tmp);
|
||||||
} else {
|
} else {
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_movi_i64(cpu_ir[rc], lit);
|
tcg_gen_movi_i64(cpu_ir[rc], lit);
|
||||||
else
|
} else {
|
||||||
tcg_gen_ext32s_i64(cpu_ir[rc], cpu_ir[rb]);
|
tcg_gen_ext32s_i64(cpu_ir[rc], cpu_ir[rb]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 0x09:
|
case 0x09:
|
||||||
/* SUBL */
|
/* SUBL */
|
||||||
if (likely(rc != 31)) {
|
if (likely(rc != 31)) {
|
||||||
if (ra != 31) {
|
if (ra != 31) {
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_subi_i64(cpu_ir[rc], cpu_ir[ra], lit);
|
tcg_gen_subi_i64(cpu_ir[rc], cpu_ir[ra], lit);
|
||||||
else
|
} else {
|
||||||
tcg_gen_sub_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
|
tcg_gen_sub_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
|
||||||
|
}
|
||||||
tcg_gen_ext32s_i64(cpu_ir[rc], cpu_ir[rc]);
|
tcg_gen_ext32s_i64(cpu_ir[rc], cpu_ir[rc]);
|
||||||
} else {
|
} else {
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_movi_i64(cpu_ir[rc], -lit);
|
tcg_gen_movi_i64(cpu_ir[rc], -lit);
|
||||||
else {
|
} else {
|
||||||
tcg_gen_neg_i64(cpu_ir[rc], cpu_ir[rb]);
|
tcg_gen_neg_i64(cpu_ir[rc], cpu_ir[rb]);
|
||||||
tcg_gen_ext32s_i64(cpu_ir[rc], cpu_ir[rc]);
|
tcg_gen_ext32s_i64(cpu_ir[rc], cpu_ir[rc]);
|
||||||
}
|
}
|
||||||
|
@ -1937,16 +1947,17 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||||
if (ra != 31) {
|
if (ra != 31) {
|
||||||
TCGv tmp = tcg_temp_new();
|
TCGv tmp = tcg_temp_new();
|
||||||
tcg_gen_shli_i64(tmp, cpu_ir[ra], 2);
|
tcg_gen_shli_i64(tmp, cpu_ir[ra], 2);
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_subi_i64(tmp, tmp, lit);
|
tcg_gen_subi_i64(tmp, tmp, lit);
|
||||||
else
|
} else {
|
||||||
tcg_gen_sub_i64(tmp, tmp, cpu_ir[rb]);
|
tcg_gen_sub_i64(tmp, tmp, cpu_ir[rb]);
|
||||||
|
}
|
||||||
tcg_gen_ext32s_i64(cpu_ir[rc], tmp);
|
tcg_gen_ext32s_i64(cpu_ir[rc], tmp);
|
||||||
tcg_temp_free(tmp);
|
tcg_temp_free(tmp);
|
||||||
} else {
|
} else {
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_movi_i64(cpu_ir[rc], -lit);
|
tcg_gen_movi_i64(cpu_ir[rc], -lit);
|
||||||
else {
|
} else {
|
||||||
tcg_gen_neg_i64(cpu_ir[rc], cpu_ir[rb]);
|
tcg_gen_neg_i64(cpu_ir[rc], cpu_ir[rb]);
|
||||||
tcg_gen_ext32s_i64(cpu_ir[rc], cpu_ir[rc]);
|
tcg_gen_ext32s_i64(cpu_ir[rc], cpu_ir[rc]);
|
||||||
}
|
}
|
||||||
|
@ -1963,19 +1974,21 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||||
if (ra != 31) {
|
if (ra != 31) {
|
||||||
TCGv tmp = tcg_temp_new();
|
TCGv tmp = tcg_temp_new();
|
||||||
tcg_gen_shli_i64(tmp, cpu_ir[ra], 3);
|
tcg_gen_shli_i64(tmp, cpu_ir[ra], 3);
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_addi_i64(tmp, tmp, lit);
|
tcg_gen_addi_i64(tmp, tmp, lit);
|
||||||
else
|
} else {
|
||||||
tcg_gen_add_i64(tmp, tmp, cpu_ir[rb]);
|
tcg_gen_add_i64(tmp, tmp, cpu_ir[rb]);
|
||||||
|
}
|
||||||
tcg_gen_ext32s_i64(cpu_ir[rc], tmp);
|
tcg_gen_ext32s_i64(cpu_ir[rc], tmp);
|
||||||
tcg_temp_free(tmp);
|
tcg_temp_free(tmp);
|
||||||
} else {
|
} else {
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_movi_i64(cpu_ir[rc], lit);
|
tcg_gen_movi_i64(cpu_ir[rc], lit);
|
||||||
else
|
} else {
|
||||||
tcg_gen_ext32s_i64(cpu_ir[rc], cpu_ir[rb]);
|
tcg_gen_ext32s_i64(cpu_ir[rc], cpu_ir[rb]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 0x1B:
|
case 0x1B:
|
||||||
/* S8SUBL */
|
/* S8SUBL */
|
||||||
|
@ -1983,16 +1996,17 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||||
if (ra != 31) {
|
if (ra != 31) {
|
||||||
TCGv tmp = tcg_temp_new();
|
TCGv tmp = tcg_temp_new();
|
||||||
tcg_gen_shli_i64(tmp, cpu_ir[ra], 3);
|
tcg_gen_shli_i64(tmp, cpu_ir[ra], 3);
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_subi_i64(tmp, tmp, lit);
|
tcg_gen_subi_i64(tmp, tmp, lit);
|
||||||
else
|
} else {
|
||||||
tcg_gen_sub_i64(tmp, tmp, cpu_ir[rb]);
|
tcg_gen_sub_i64(tmp, tmp, cpu_ir[rb]);
|
||||||
|
}
|
||||||
tcg_gen_ext32s_i64(cpu_ir[rc], tmp);
|
tcg_gen_ext32s_i64(cpu_ir[rc], tmp);
|
||||||
tcg_temp_free(tmp);
|
tcg_temp_free(tmp);
|
||||||
} else {
|
} else {
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_movi_i64(cpu_ir[rc], -lit);
|
tcg_gen_movi_i64(cpu_ir[rc], -lit);
|
||||||
else {
|
} else {
|
||||||
tcg_gen_neg_i64(cpu_ir[rc], cpu_ir[rb]);
|
tcg_gen_neg_i64(cpu_ir[rc], cpu_ir[rb]);
|
||||||
tcg_gen_ext32s_i64(cpu_ir[rc], cpu_ir[rc]);
|
tcg_gen_ext32s_i64(cpu_ir[rc], cpu_ir[rc]);
|
||||||
}
|
}
|
||||||
|
@ -2007,17 +2021,19 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||||
/* ADDQ */
|
/* ADDQ */
|
||||||
if (likely(rc != 31)) {
|
if (likely(rc != 31)) {
|
||||||
if (ra != 31) {
|
if (ra != 31) {
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_addi_i64(cpu_ir[rc], cpu_ir[ra], lit);
|
tcg_gen_addi_i64(cpu_ir[rc], cpu_ir[ra], lit);
|
||||||
else
|
|
||||||
tcg_gen_add_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
|
|
||||||
} else {
|
} else {
|
||||||
if (islit)
|
tcg_gen_add_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (islit) {
|
||||||
tcg_gen_movi_i64(cpu_ir[rc], lit);
|
tcg_gen_movi_i64(cpu_ir[rc], lit);
|
||||||
else
|
} else {
|
||||||
tcg_gen_mov_i64(cpu_ir[rc], cpu_ir[rb]);
|
tcg_gen_mov_i64(cpu_ir[rc], cpu_ir[rb]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 0x22:
|
case 0x22:
|
||||||
/* S4ADDQ */
|
/* S4ADDQ */
|
||||||
|
@ -2025,34 +2041,38 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||||
if (ra != 31) {
|
if (ra != 31) {
|
||||||
TCGv tmp = tcg_temp_new();
|
TCGv tmp = tcg_temp_new();
|
||||||
tcg_gen_shli_i64(tmp, cpu_ir[ra], 2);
|
tcg_gen_shli_i64(tmp, cpu_ir[ra], 2);
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_addi_i64(cpu_ir[rc], tmp, lit);
|
tcg_gen_addi_i64(cpu_ir[rc], tmp, lit);
|
||||||
else
|
} else {
|
||||||
tcg_gen_add_i64(cpu_ir[rc], tmp, cpu_ir[rb]);
|
tcg_gen_add_i64(cpu_ir[rc], tmp, cpu_ir[rb]);
|
||||||
|
}
|
||||||
tcg_temp_free(tmp);
|
tcg_temp_free(tmp);
|
||||||
} else {
|
} else {
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_movi_i64(cpu_ir[rc], lit);
|
tcg_gen_movi_i64(cpu_ir[rc], lit);
|
||||||
else
|
} else {
|
||||||
tcg_gen_mov_i64(cpu_ir[rc], cpu_ir[rb]);
|
tcg_gen_mov_i64(cpu_ir[rc], cpu_ir[rb]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 0x29:
|
case 0x29:
|
||||||
/* SUBQ */
|
/* SUBQ */
|
||||||
if (likely(rc != 31)) {
|
if (likely(rc != 31)) {
|
||||||
if (ra != 31) {
|
if (ra != 31) {
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_subi_i64(cpu_ir[rc], cpu_ir[ra], lit);
|
tcg_gen_subi_i64(cpu_ir[rc], cpu_ir[ra], lit);
|
||||||
else
|
|
||||||
tcg_gen_sub_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
|
|
||||||
} else {
|
} else {
|
||||||
if (islit)
|
tcg_gen_sub_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (islit) {
|
||||||
tcg_gen_movi_i64(cpu_ir[rc], -lit);
|
tcg_gen_movi_i64(cpu_ir[rc], -lit);
|
||||||
else
|
} else {
|
||||||
tcg_gen_neg_i64(cpu_ir[rc], cpu_ir[rb]);
|
tcg_gen_neg_i64(cpu_ir[rc], cpu_ir[rb]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 0x2B:
|
case 0x2B:
|
||||||
/* S4SUBQ */
|
/* S4SUBQ */
|
||||||
|
@ -2060,18 +2080,20 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||||
if (ra != 31) {
|
if (ra != 31) {
|
||||||
TCGv tmp = tcg_temp_new();
|
TCGv tmp = tcg_temp_new();
|
||||||
tcg_gen_shli_i64(tmp, cpu_ir[ra], 2);
|
tcg_gen_shli_i64(tmp, cpu_ir[ra], 2);
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_subi_i64(cpu_ir[rc], tmp, lit);
|
tcg_gen_subi_i64(cpu_ir[rc], tmp, lit);
|
||||||
else
|
} else {
|
||||||
tcg_gen_sub_i64(cpu_ir[rc], tmp, cpu_ir[rb]);
|
tcg_gen_sub_i64(cpu_ir[rc], tmp, cpu_ir[rb]);
|
||||||
|
}
|
||||||
tcg_temp_free(tmp);
|
tcg_temp_free(tmp);
|
||||||
} else {
|
} else {
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_movi_i64(cpu_ir[rc], -lit);
|
tcg_gen_movi_i64(cpu_ir[rc], -lit);
|
||||||
else
|
} else {
|
||||||
tcg_gen_neg_i64(cpu_ir[rc], cpu_ir[rb]);
|
tcg_gen_neg_i64(cpu_ir[rc], cpu_ir[rb]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 0x2D:
|
case 0x2D:
|
||||||
/* CMPEQ */
|
/* CMPEQ */
|
||||||
|
@ -2083,18 +2105,20 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||||
if (ra != 31) {
|
if (ra != 31) {
|
||||||
TCGv tmp = tcg_temp_new();
|
TCGv tmp = tcg_temp_new();
|
||||||
tcg_gen_shli_i64(tmp, cpu_ir[ra], 3);
|
tcg_gen_shli_i64(tmp, cpu_ir[ra], 3);
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_addi_i64(cpu_ir[rc], tmp, lit);
|
tcg_gen_addi_i64(cpu_ir[rc], tmp, lit);
|
||||||
else
|
} else {
|
||||||
tcg_gen_add_i64(cpu_ir[rc], tmp, cpu_ir[rb]);
|
tcg_gen_add_i64(cpu_ir[rc], tmp, cpu_ir[rb]);
|
||||||
|
}
|
||||||
tcg_temp_free(tmp);
|
tcg_temp_free(tmp);
|
||||||
} else {
|
} else {
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_movi_i64(cpu_ir[rc], lit);
|
tcg_gen_movi_i64(cpu_ir[rc], lit);
|
||||||
else
|
} else {
|
||||||
tcg_gen_mov_i64(cpu_ir[rc], cpu_ir[rb]);
|
tcg_gen_mov_i64(cpu_ir[rc], cpu_ir[rb]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 0x3B:
|
case 0x3B:
|
||||||
/* S8SUBQ */
|
/* S8SUBQ */
|
||||||
|
@ -2102,18 +2126,20 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||||
if (ra != 31) {
|
if (ra != 31) {
|
||||||
TCGv tmp = tcg_temp_new();
|
TCGv tmp = tcg_temp_new();
|
||||||
tcg_gen_shli_i64(tmp, cpu_ir[ra], 3);
|
tcg_gen_shli_i64(tmp, cpu_ir[ra], 3);
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_subi_i64(cpu_ir[rc], tmp, lit);
|
tcg_gen_subi_i64(cpu_ir[rc], tmp, lit);
|
||||||
else
|
} else {
|
||||||
tcg_gen_sub_i64(cpu_ir[rc], tmp, cpu_ir[rb]);
|
tcg_gen_sub_i64(cpu_ir[rc], tmp, cpu_ir[rb]);
|
||||||
|
}
|
||||||
tcg_temp_free(tmp);
|
tcg_temp_free(tmp);
|
||||||
} else {
|
} else {
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_movi_i64(cpu_ir[rc], -lit);
|
tcg_gen_movi_i64(cpu_ir[rc], -lit);
|
||||||
else
|
} else {
|
||||||
tcg_gen_neg_i64(cpu_ir[rc], cpu_ir[rb]);
|
tcg_gen_neg_i64(cpu_ir[rc], cpu_ir[rb]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 0x3D:
|
case 0x3D:
|
||||||
/* CMPULE */
|
/* CMPULE */
|
||||||
|
@ -2152,22 +2178,24 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||||
case 0x00:
|
case 0x00:
|
||||||
/* AND */
|
/* AND */
|
||||||
if (likely(rc != 31)) {
|
if (likely(rc != 31)) {
|
||||||
if (ra == 31)
|
if (ra == 31) {
|
||||||
tcg_gen_movi_i64(cpu_ir[rc], 0);
|
tcg_gen_movi_i64(cpu_ir[rc], 0);
|
||||||
else if (islit)
|
} else if (islit) {
|
||||||
tcg_gen_andi_i64(cpu_ir[rc], cpu_ir[ra], lit);
|
tcg_gen_andi_i64(cpu_ir[rc], cpu_ir[ra], lit);
|
||||||
else
|
} else {
|
||||||
tcg_gen_and_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
|
tcg_gen_and_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 0x08:
|
case 0x08:
|
||||||
/* BIC */
|
/* BIC */
|
||||||
if (likely(rc != 31)) {
|
if (likely(rc != 31)) {
|
||||||
if (ra != 31) {
|
if (ra != 31) {
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_andi_i64(cpu_ir[rc], cpu_ir[ra], ~lit);
|
tcg_gen_andi_i64(cpu_ir[rc], cpu_ir[ra], ~lit);
|
||||||
else
|
} else {
|
||||||
tcg_gen_andc_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
|
tcg_gen_andc_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
|
||||||
|
}
|
||||||
} else
|
} else
|
||||||
tcg_gen_movi_i64(cpu_ir[rc], 0);
|
tcg_gen_movi_i64(cpu_ir[rc], 0);
|
||||||
}
|
}
|
||||||
|
@ -2184,17 +2212,19 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||||
/* BIS */
|
/* BIS */
|
||||||
if (likely(rc != 31)) {
|
if (likely(rc != 31)) {
|
||||||
if (ra != 31) {
|
if (ra != 31) {
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_ori_i64(cpu_ir[rc], cpu_ir[ra], lit);
|
tcg_gen_ori_i64(cpu_ir[rc], cpu_ir[ra], lit);
|
||||||
else
|
|
||||||
tcg_gen_or_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
|
|
||||||
} else {
|
} else {
|
||||||
if (islit)
|
tcg_gen_or_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (islit) {
|
||||||
tcg_gen_movi_i64(cpu_ir[rc], lit);
|
tcg_gen_movi_i64(cpu_ir[rc], lit);
|
||||||
else
|
} else {
|
||||||
tcg_gen_mov_i64(cpu_ir[rc], cpu_ir[rb]);
|
tcg_gen_mov_i64(cpu_ir[rc], cpu_ir[rb]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 0x24:
|
case 0x24:
|
||||||
/* CMOVEQ */
|
/* CMOVEQ */
|
||||||
|
@ -2208,33 +2238,37 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||||
/* ORNOT */
|
/* ORNOT */
|
||||||
if (likely(rc != 31)) {
|
if (likely(rc != 31)) {
|
||||||
if (ra != 31) {
|
if (ra != 31) {
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_ori_i64(cpu_ir[rc], cpu_ir[ra], ~lit);
|
tcg_gen_ori_i64(cpu_ir[rc], cpu_ir[ra], ~lit);
|
||||||
else
|
|
||||||
tcg_gen_orc_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
|
|
||||||
} else {
|
} else {
|
||||||
if (islit)
|
tcg_gen_orc_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (islit) {
|
||||||
tcg_gen_movi_i64(cpu_ir[rc], ~lit);
|
tcg_gen_movi_i64(cpu_ir[rc], ~lit);
|
||||||
else
|
} else {
|
||||||
tcg_gen_not_i64(cpu_ir[rc], cpu_ir[rb]);
|
tcg_gen_not_i64(cpu_ir[rc], cpu_ir[rb]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 0x40:
|
case 0x40:
|
||||||
/* XOR */
|
/* XOR */
|
||||||
if (likely(rc != 31)) {
|
if (likely(rc != 31)) {
|
||||||
if (ra != 31) {
|
if (ra != 31) {
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_xori_i64(cpu_ir[rc], cpu_ir[ra], lit);
|
tcg_gen_xori_i64(cpu_ir[rc], cpu_ir[ra], lit);
|
||||||
else
|
|
||||||
tcg_gen_xor_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
|
|
||||||
} else {
|
} else {
|
||||||
if (islit)
|
tcg_gen_xor_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (islit) {
|
||||||
tcg_gen_movi_i64(cpu_ir[rc], lit);
|
tcg_gen_movi_i64(cpu_ir[rc], lit);
|
||||||
else
|
} else {
|
||||||
tcg_gen_mov_i64(cpu_ir[rc], cpu_ir[rb]);
|
tcg_gen_mov_i64(cpu_ir[rc], cpu_ir[rb]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 0x44:
|
case 0x44:
|
||||||
/* CMOVLT */
|
/* CMOVLT */
|
||||||
|
@ -2248,17 +2282,19 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||||
/* EQV */
|
/* EQV */
|
||||||
if (likely(rc != 31)) {
|
if (likely(rc != 31)) {
|
||||||
if (ra != 31) {
|
if (ra != 31) {
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_xori_i64(cpu_ir[rc], cpu_ir[ra], ~lit);
|
tcg_gen_xori_i64(cpu_ir[rc], cpu_ir[ra], ~lit);
|
||||||
else
|
|
||||||
tcg_gen_eqv_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
|
|
||||||
} else {
|
} else {
|
||||||
if (islit)
|
tcg_gen_eqv_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (islit) {
|
||||||
tcg_gen_movi_i64(cpu_ir[rc], ~lit);
|
tcg_gen_movi_i64(cpu_ir[rc], ~lit);
|
||||||
else
|
} else {
|
||||||
tcg_gen_not_i64(cpu_ir[rc], cpu_ir[rb]);
|
tcg_gen_not_i64(cpu_ir[rc], cpu_ir[rb]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 0x61:
|
case 0x61:
|
||||||
/* AMASK */
|
/* AMASK */
|
||||||
|
@ -2344,9 +2380,9 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||||
/* SRL */
|
/* SRL */
|
||||||
if (likely(rc != 31)) {
|
if (likely(rc != 31)) {
|
||||||
if (ra != 31) {
|
if (ra != 31) {
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_shri_i64(cpu_ir[rc], cpu_ir[ra], lit & 0x3f);
|
tcg_gen_shri_i64(cpu_ir[rc], cpu_ir[ra], lit & 0x3f);
|
||||||
else {
|
} else {
|
||||||
TCGv shift = tcg_temp_new();
|
TCGv shift = tcg_temp_new();
|
||||||
tcg_gen_andi_i64(shift, cpu_ir[rb], 0x3f);
|
tcg_gen_andi_i64(shift, cpu_ir[rb], 0x3f);
|
||||||
tcg_gen_shr_i64(cpu_ir[rc], cpu_ir[ra], shift);
|
tcg_gen_shr_i64(cpu_ir[rc], cpu_ir[ra], shift);
|
||||||
|
@ -2364,9 +2400,9 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||||
/* SLL */
|
/* SLL */
|
||||||
if (likely(rc != 31)) {
|
if (likely(rc != 31)) {
|
||||||
if (ra != 31) {
|
if (ra != 31) {
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_shli_i64(cpu_ir[rc], cpu_ir[ra], lit & 0x3f);
|
tcg_gen_shli_i64(cpu_ir[rc], cpu_ir[ra], lit & 0x3f);
|
||||||
else {
|
} else {
|
||||||
TCGv shift = tcg_temp_new();
|
TCGv shift = tcg_temp_new();
|
||||||
tcg_gen_andi_i64(shift, cpu_ir[rb], 0x3f);
|
tcg_gen_andi_i64(shift, cpu_ir[rb], 0x3f);
|
||||||
tcg_gen_shl_i64(cpu_ir[rc], cpu_ir[ra], shift);
|
tcg_gen_shl_i64(cpu_ir[rc], cpu_ir[ra], shift);
|
||||||
|
@ -2384,9 +2420,9 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||||
/* SRA */
|
/* SRA */
|
||||||
if (likely(rc != 31)) {
|
if (likely(rc != 31)) {
|
||||||
if (ra != 31) {
|
if (ra != 31) {
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_sari_i64(cpu_ir[rc], cpu_ir[ra], lit & 0x3f);
|
tcg_gen_sari_i64(cpu_ir[rc], cpu_ir[ra], lit & 0x3f);
|
||||||
else {
|
} else {
|
||||||
TCGv shift = tcg_temp_new();
|
TCGv shift = tcg_temp_new();
|
||||||
tcg_gen_andi_i64(shift, cpu_ir[rb], 0x3f);
|
tcg_gen_andi_i64(shift, cpu_ir[rb], 0x3f);
|
||||||
tcg_gen_sar_i64(cpu_ir[rc], cpu_ir[ra], shift);
|
tcg_gen_sar_i64(cpu_ir[rc], cpu_ir[ra], shift);
|
||||||
|
@ -2441,13 +2477,14 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||||
case 0x00:
|
case 0x00:
|
||||||
/* MULL */
|
/* MULL */
|
||||||
if (likely(rc != 31)) {
|
if (likely(rc != 31)) {
|
||||||
if (ra == 31)
|
if (ra == 31) {
|
||||||
tcg_gen_movi_i64(cpu_ir[rc], 0);
|
tcg_gen_movi_i64(cpu_ir[rc], 0);
|
||||||
else {
|
} else {
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_muli_i64(cpu_ir[rc], cpu_ir[ra], lit);
|
tcg_gen_muli_i64(cpu_ir[rc], cpu_ir[ra], lit);
|
||||||
else
|
} else {
|
||||||
tcg_gen_mul_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
|
tcg_gen_mul_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
|
||||||
|
}
|
||||||
tcg_gen_ext32s_i64(cpu_ir[rc], cpu_ir[rc]);
|
tcg_gen_ext32s_i64(cpu_ir[rc], cpu_ir[rc]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2455,13 +2492,14 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||||
case 0x20:
|
case 0x20:
|
||||||
/* MULQ */
|
/* MULQ */
|
||||||
if (likely(rc != 31)) {
|
if (likely(rc != 31)) {
|
||||||
if (ra == 31)
|
if (ra == 31) {
|
||||||
tcg_gen_movi_i64(cpu_ir[rc], 0);
|
tcg_gen_movi_i64(cpu_ir[rc], 0);
|
||||||
else if (islit)
|
} else if (islit) {
|
||||||
tcg_gen_muli_i64(cpu_ir[rc], cpu_ir[ra], lit);
|
tcg_gen_muli_i64(cpu_ir[rc], cpu_ir[ra], lit);
|
||||||
else
|
} else {
|
||||||
tcg_gen_mul_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
|
tcg_gen_mul_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 0x30:
|
case 0x30:
|
||||||
/* UMULH */
|
/* UMULH */
|
||||||
|
@ -2548,11 +2586,12 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||||
goto invalid_opc;
|
goto invalid_opc;
|
||||||
}
|
}
|
||||||
if (likely(rc != 31)) {
|
if (likely(rc != 31)) {
|
||||||
if (ra != 31)
|
if (ra != 31) {
|
||||||
tcg_gen_mov_i64(cpu_fir[rc], cpu_ir[ra]);
|
tcg_gen_mov_i64(cpu_fir[rc], cpu_ir[ra]);
|
||||||
else
|
} else {
|
||||||
tcg_gen_movi_i64(cpu_fir[rc], 0);
|
tcg_gen_movi_i64(cpu_fir[rc], 0);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 0x2A:
|
case 0x2A:
|
||||||
/* SQRTG */
|
/* SQRTG */
|
||||||
|
@ -2742,10 +2781,11 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||||
if (likely(rc != 31)) {
|
if (likely(rc != 31)) {
|
||||||
if (ra == rb) {
|
if (ra == rb) {
|
||||||
/* FMOV */
|
/* FMOV */
|
||||||
if (ra == 31)
|
if (ra == 31) {
|
||||||
tcg_gen_movi_i64(cpu_fir[rc], 0);
|
tcg_gen_movi_i64(cpu_fir[rc], 0);
|
||||||
else
|
} else {
|
||||||
tcg_gen_mov_i64(cpu_fir[rc], cpu_fir[ra]);
|
tcg_gen_mov_i64(cpu_fir[rc], cpu_fir[ra]);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
/* CPYS */
|
/* CPYS */
|
||||||
gen_fcpys(ra, rb, rc);
|
gen_fcpys(ra, rb, rc);
|
||||||
|
@ -2762,9 +2802,9 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||||
break;
|
break;
|
||||||
case 0x024:
|
case 0x024:
|
||||||
/* MT_FPCR */
|
/* MT_FPCR */
|
||||||
if (likely(ra != 31))
|
if (likely(ra != 31)) {
|
||||||
gen_helper_store_fpcr(cpu_env, cpu_fir[ra]);
|
gen_helper_store_fpcr(cpu_env, cpu_fir[ra]);
|
||||||
else {
|
} else {
|
||||||
TCGv tmp = tcg_const_i64(0);
|
TCGv tmp = tcg_const_i64(0);
|
||||||
gen_helper_store_fpcr(cpu_env, tmp);
|
gen_helper_store_fpcr(cpu_env, tmp);
|
||||||
tcg_temp_free(tmp);
|
tcg_temp_free(tmp);
|
||||||
|
@ -2772,8 +2812,9 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||||
break;
|
break;
|
||||||
case 0x025:
|
case 0x025:
|
||||||
/* MF_FPCR */
|
/* MF_FPCR */
|
||||||
if (likely(ra != 31))
|
if (likely(ra != 31)) {
|
||||||
gen_helper_load_fpcr(cpu_fir[ra], cpu_env);
|
gen_helper_load_fpcr(cpu_fir[ra], cpu_env);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 0x02A:
|
case 0x02A:
|
||||||
/* FCMOVEQ */
|
/* FCMOVEQ */
|
||||||
|
@ -2906,10 +2947,11 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||||
}
|
}
|
||||||
|
|
||||||
addr = tcg_temp_new();
|
addr = tcg_temp_new();
|
||||||
if (rb != 31)
|
if (rb != 31) {
|
||||||
tcg_gen_addi_i64(addr, cpu_ir[rb], disp12);
|
tcg_gen_addi_i64(addr, cpu_ir[rb], disp12);
|
||||||
else
|
} else {
|
||||||
tcg_gen_movi_i64(addr, disp12);
|
tcg_gen_movi_i64(addr, disp12);
|
||||||
|
}
|
||||||
switch ((insn >> 12) & 0xF) {
|
switch ((insn >> 12) & 0xF) {
|
||||||
case 0x0:
|
case 0x0:
|
||||||
/* Longword physical access (hw_ldl/p) */
|
/* Longword physical access (hw_ldl/p) */
|
||||||
|
@ -2984,11 +3026,12 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||||
goto invalid_opc;
|
goto invalid_opc;
|
||||||
}
|
}
|
||||||
if (likely(rc != 31)) {
|
if (likely(rc != 31)) {
|
||||||
if (islit)
|
if (islit) {
|
||||||
tcg_gen_movi_i64(cpu_ir[rc], (int64_t)((int8_t)lit));
|
tcg_gen_movi_i64(cpu_ir[rc], (int64_t)((int8_t)lit));
|
||||||
else
|
} else {
|
||||||
tcg_gen_ext8s_i64(cpu_ir[rc], cpu_ir[rb]);
|
tcg_gen_ext8s_i64(cpu_ir[rc], cpu_ir[rb]);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 0x01:
|
case 0x01:
|
||||||
/* SEXTW */
|
/* SEXTW */
|
||||||
|
@ -3151,11 +3194,12 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||||
goto invalid_opc;
|
goto invalid_opc;
|
||||||
}
|
}
|
||||||
if (likely(rc != 31)) {
|
if (likely(rc != 31)) {
|
||||||
if (ra != 31)
|
if (ra != 31) {
|
||||||
tcg_gen_mov_i64(cpu_ir[rc], cpu_fir[ra]);
|
tcg_gen_mov_i64(cpu_ir[rc], cpu_fir[ra]);
|
||||||
else
|
} else {
|
||||||
tcg_gen_movi_i64(cpu_ir[rc], 0);
|
tcg_gen_movi_i64(cpu_ir[rc], 0);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 0x78:
|
case 0x78:
|
||||||
/* FTOIS */
|
/* FTOIS */
|
||||||
|
@ -3164,9 +3208,9 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||||
}
|
}
|
||||||
if (rc != 31) {
|
if (rc != 31) {
|
||||||
TCGv_i32 tmp1 = tcg_temp_new_i32();
|
TCGv_i32 tmp1 = tcg_temp_new_i32();
|
||||||
if (ra != 31)
|
if (ra != 31) {
|
||||||
gen_helper_s_to_memory(tmp1, cpu_fir[ra]);
|
gen_helper_s_to_memory(tmp1, cpu_fir[ra]);
|
||||||
else {
|
} else {
|
||||||
TCGv tmp2 = tcg_const_i64(0);
|
TCGv tmp2 = tcg_const_i64(0);
|
||||||
gen_helper_s_to_memory(tmp1, tmp2);
|
gen_helper_s_to_memory(tmp1, tmp2);
|
||||||
tcg_temp_free(tmp2);
|
tcg_temp_free(tmp2);
|
||||||
|
@ -3213,13 +3257,14 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||||
if (ctx->tb->flags & TB_FLAGS_PAL_MODE) {
|
if (ctx->tb->flags & TB_FLAGS_PAL_MODE) {
|
||||||
TCGv addr, val;
|
TCGv addr, val;
|
||||||
addr = tcg_temp_new();
|
addr = tcg_temp_new();
|
||||||
if (rb != 31)
|
if (rb != 31) {
|
||||||
tcg_gen_addi_i64(addr, cpu_ir[rb], disp12);
|
tcg_gen_addi_i64(addr, cpu_ir[rb], disp12);
|
||||||
else
|
} else {
|
||||||
tcg_gen_movi_i64(addr, disp12);
|
tcg_gen_movi_i64(addr, disp12);
|
||||||
if (ra != 31)
|
}
|
||||||
|
if (ra != 31) {
|
||||||
val = cpu_ir[ra];
|
val = cpu_ir[ra];
|
||||||
else {
|
} else {
|
||||||
val = tcg_temp_new();
|
val = tcg_temp_new();
|
||||||
tcg_gen_movi_i64(val, 0);
|
tcg_gen_movi_i64(val, 0);
|
||||||
}
|
}
|
||||||
|
@ -3277,8 +3322,9 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||||
/* Invalid */
|
/* Invalid */
|
||||||
goto invalid_opc;
|
goto invalid_opc;
|
||||||
}
|
}
|
||||||
if (ra == 31)
|
if (ra == 31) {
|
||||||
tcg_temp_free(val);
|
tcg_temp_free(val);
|
||||||
|
}
|
||||||
tcg_temp_free(addr);
|
tcg_temp_free(addr);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -3483,8 +3529,9 @@ static inline void gen_intermediate_code_internal(AlphaCPU *cpu,
|
||||||
tcg_ctx.gen_opc_instr_start[lj] = 1;
|
tcg_ctx.gen_opc_instr_start[lj] = 1;
|
||||||
tcg_ctx.gen_opc_icount[lj] = num_insns;
|
tcg_ctx.gen_opc_icount[lj] = num_insns;
|
||||||
}
|
}
|
||||||
if (num_insns + 1 == max_insns && (tb->cflags & CF_LAST_IO))
|
if (num_insns + 1 == max_insns && (tb->cflags & CF_LAST_IO)) {
|
||||||
gen_io_start();
|
gen_io_start();
|
||||||
|
}
|
||||||
insn = cpu_ldl_code(env, ctx.pc);
|
insn = cpu_ldl_code(env, ctx.pc);
|
||||||
num_insns++;
|
num_insns++;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue