target-alpha: Convert gen_zap/not to source/sink
Signed-off-by: Richard Henderson <rth@twiddle.net>
This commit is contained in:
parent
5e5863ecf1
commit
b144be9e06
@ -1169,38 +1169,11 @@ static void gen_zapnoti(TCGv dest, TCGv src, uint8_t lit)
|
||||
tcg_gen_mov_i64(dest, src);
|
||||
break;
|
||||
default:
|
||||
tcg_gen_andi_i64 (dest, src, zapnot_mask (lit));
|
||||
tcg_gen_andi_i64(dest, src, zapnot_mask(lit));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static inline void gen_zapnot(int ra, int rb, int rc, int islit, uint8_t lit)
|
||||
{
|
||||
if (unlikely(rc == 31)) {
|
||||
return;
|
||||
} else if (unlikely(ra == 31)) {
|
||||
tcg_gen_movi_i64(cpu_ir[rc], 0);
|
||||
} else if (islit) {
|
||||
gen_zapnoti(cpu_ir[rc], cpu_ir[ra], lit);
|
||||
} else {
|
||||
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)
|
||||
{
|
||||
if (unlikely(rc == 31)) {
|
||||
return;
|
||||
} else if (unlikely(ra == 31)) {
|
||||
tcg_gen_movi_i64(cpu_ir[rc], 0);
|
||||
} else if (islit) {
|
||||
gen_zapnoti(cpu_ir[rc], cpu_ir[ra], ~lit);
|
||||
} else {
|
||||
gen_helper_zap (cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* EXTWH, EXTLH, EXTQH */
|
||||
static void gen_ext_h(DisasContext *ctx, TCGv vc, TCGv va, int rb, bool islit,
|
||||
uint8_t lit, uint8_t byte_mask)
|
||||
@ -2111,11 +2084,19 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
|
||||
break;
|
||||
case 0x30:
|
||||
/* ZAP */
|
||||
gen_zap(ra, rb, rc, islit, lit);
|
||||
if (islit) {
|
||||
gen_zapnoti(vc, va, ~lit);
|
||||
} else {
|
||||
gen_helper_zap(vc, va, load_gpr(ctx, rb));
|
||||
}
|
||||
break;
|
||||
case 0x31:
|
||||
/* ZAPNOT */
|
||||
gen_zapnot(ra, rb, rc, islit, lit);
|
||||
if (islit) {
|
||||
gen_zapnoti(vc, va, lit);
|
||||
} else {
|
||||
gen_helper_zapnot(vc, va, load_gpr(ctx, rb));
|
||||
}
|
||||
break;
|
||||
case 0x32:
|
||||
/* MSKQL */
|
||||
|
Loading…
Reference in New Issue
Block a user