Commit 2301db49 authored by Juha Riihimäki's avatar Juha Riihimäki Committed by Aurelien Jarno
Browse files

target-arm: fix neon vshrn/vrshrn ops



In the existing code shift value is clobbered during the pass loop.
This patch changes the code so that it stores the intermediate
result in the target neon register directly and eliminates the need
to use a temporary to hold the intermediate value thus leaving the
shift value in the temporary variable intact. This is a new patch
in this version of the patch series.
Signed-off-by: default avatarJuha Riihimäki <juha.riihimaki@nokia.com>
Acked-by: default avatarLaurent Desnogues <laurent.desnogues@gmail.com>
Signed-off-by: default avatarAurelien Jarno <aurelien@aurel32.net>
parent 25aeb69b
......@@ -4680,18 +4680,12 @@ static int disas_neon_data_insn(CPUState * env, DisasContext *s, uint32_t insn)
else
gen_neon_narrow_satu(size - 1, tmp, cpu_V0);
}
if (pass == 0) {
if (size != 3) {
dead_tmp(tmp2);
}
tmp2 = tmp;
} else {
neon_store_reg(rd, 0, tmp2);
neon_store_reg(rd, 1, tmp);
}
neon_store_reg(rd, pass, tmp);
} /* for pass */
if (size == 3) {
tcg_temp_free_i64(tmp64);
} else {
dead_tmp(tmp2);
}
} else if (op == 10) {
/* VSHLL */
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment