summaryrefslogtreecommitdiffstats
path: root/target
diff options
context:
space:
mode:
authorNi Hui2022-05-03 15:07:08 +0200
committerPhilippe Mathieu-Daudé2022-06-11 11:34:12 +0200
commitead0bf0d3349522e9e496a2d3bfe344fafc584dc (patch)
tree77caafce03c9a320c657ff3720e3b60c50d855e2 /target
parenttarget/mips: Fix msa checking condition in trans_msa_elm_fn() (diff)
downloadqemu-ead0bf0d3349522e9e496a2d3bfe344fafc584dc.tar.gz
qemu-ead0bf0d3349522e9e496a2d3bfe344fafc584dc.tar.xz
qemu-ead0bf0d3349522e9e496a2d3bfe344fafc584dc.zip
target/mips: Do not treat msa INSERT as NOP when wd is zero
Only for msa COPY_U/COPY_S with wd zero, we treat it as NOP. Move this special rule into COPY_U and COPY_S trans function. Fixes: 97fe675519 ("target/mips: Convert MSA COPY_S and INSERT opcodes to decodetree") Signed-off-by: Ni Hui <shuizhuyuanluo@126.com> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-Id: <20220503130708.272850-4-shuizhuyuanluo@126.com> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Diffstat (limited to 'target')
-rw-r--r--target/mips/tcg/msa_translate.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translate.c
index 92ccc6f921..0b3dd0957c 100644
--- a/target/mips/tcg/msa_translate.c
+++ b/target/mips/tcg/msa_translate.c
@@ -603,11 +603,6 @@ static bool trans_msa_elm_fn(DisasContext *ctx, arg_msa_elm_df *a,
return true;
}
- if (a->wd == 0) {
- /* Treat as NOP. */
- return true;
- }
-
gen_msa_elm[a->df](cpu_env,
tcg_constant_i32(a->wd),
tcg_constant_i32(a->ws),
@@ -624,6 +619,11 @@ static bool trans_msa_elm_fn(DisasContext *ctx, arg_msa_elm_df *a,
static bool trans_COPY_U(DisasContext *ctx, arg_msa_elm_df *a)
{
+ if (a->wd == 0) {
+ /* Treat as NOP. */
+ return true;
+ }
+
static gen_helper_piii * const gen_msa_copy_u[4] = {
gen_helper_msa_copy_u_b, gen_helper_msa_copy_u_h,
NULL_IF_MIPS32(gen_helper_msa_copy_u_w), NULL
@@ -634,6 +634,11 @@ static bool trans_COPY_U(DisasContext *ctx, arg_msa_elm_df *a)
static bool trans_COPY_S(DisasContext *ctx, arg_msa_elm_df *a)
{
+ if (a->wd == 0) {
+ /* Treat as NOP. */
+ return true;
+ }
+
static gen_helper_piii * const gen_msa_copy_s[4] = {
gen_helper_msa_copy_s_b, gen_helper_msa_copy_s_h,
gen_helper_msa_copy_s_w, NULL_IF_MIPS32(gen_helper_msa_copy_s_d)