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:
Paolo Bonzini 2014-03-17 12:28:02 +01:00 committed by Richard Henderson
parent a9e8aeb375
commit 67debe3ae5

View file

@ -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,8 +1118,9 @@ 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,19 +1830,21 @@ 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:
@ -1885,10 +1891,11 @@ 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;
@ -1898,17 +1905,19 @@ 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;
@ -1916,15 +1925,16 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
/* 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,17 +1974,19 @@ 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;
@ -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,15 +2021,17 @@ 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 } else {
tcg_gen_add_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]); tcg_gen_add_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
}
} 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;
@ -2025,16 +2041,18 @@ 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;
@ -2042,15 +2060,17 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
/* 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 } 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]);
}
} 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;
@ -2060,16 +2080,18 @@ 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;
@ -2083,16 +2105,18 @@ 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;
@ -2102,16 +2126,18 @@ 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;
@ -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,15 +2212,17 @@ 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 } else {
tcg_gen_or_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]); tcg_gen_or_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
}
} 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;
@ -2208,15 +2238,17 @@ 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 } else {
tcg_gen_orc_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]); tcg_gen_orc_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
}
} 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_not_i64(cpu_ir[rc], cpu_ir[rb]); tcg_gen_not_i64(cpu_ir[rc], cpu_ir[rb]);
}
} }
} }
break; break;
@ -2224,15 +2256,17 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
/* 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 } else {
tcg_gen_xor_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]); tcg_gen_xor_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
}
} 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;
@ -2248,15 +2282,17 @@ 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 } else {
tcg_gen_eqv_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]); tcg_gen_eqv_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
}
} 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_not_i64(cpu_ir[rc], cpu_ir[rb]); tcg_gen_not_i64(cpu_ir[rc], cpu_ir[rb]);
}
} }
} }
break; break;
@ -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,12 +2492,13 @@ 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:
@ -2548,10 +2586,11 @@ 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:
@ -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,10 +3026,11 @@ 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:
@ -3151,10 +3194,11 @@ 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:
@ -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++;