Skip to content

Commit 1b5c0a1

Browse files
committed
target/mips: Use tcg_constant_i32() in gen_msa_3rf()
Avoid using a TCG temporary by moving Data Format to the constant pool. Signed-off-by: Philippe Mathieu-Daudé <[email protected]> Reviewed-by: Richard Henderson <[email protected]> Message-Id: <[email protected]>
1 parent 74341af commit 1b5c0a1

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

target/mips/tcg/msa_translate.c

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1790,10 +1790,22 @@ static void gen_msa_3rf(DisasContext *ctx)
17901790
TCGv_i32 twd = tcg_const_i32(wd);
17911791
TCGv_i32 tws = tcg_const_i32(ws);
17921792
TCGv_i32 twt = tcg_const_i32(wt);
1793-
TCGv_i32 tdf = tcg_temp_new_i32();
1793+
TCGv_i32 tdf;
17941794

17951795
/* adjust df value for floating-point instruction */
1796-
tcg_gen_movi_i32(tdf, df + 2);
1796+
switch (MASK_MSA_3RF(ctx->opcode)) {
1797+
case OPC_MUL_Q_df:
1798+
case OPC_MADD_Q_df:
1799+
case OPC_MSUB_Q_df:
1800+
case OPC_MULR_Q_df:
1801+
case OPC_MADDR_Q_df:
1802+
case OPC_MSUBR_Q_df:
1803+
tdf = tcg_constant_i32(df + 1);
1804+
break;
1805+
default:
1806+
tdf = tcg_constant_i32(df + 2);
1807+
break;
1808+
}
17971809

17981810
switch (MASK_MSA_3RF(ctx->opcode)) {
17991811
case OPC_FCAF_df:
@@ -1836,7 +1848,6 @@ static void gen_msa_3rf(DisasContext *ctx)
18361848
gen_helper_msa_fmadd_df(cpu_env, tdf, twd, tws, twt);
18371849
break;
18381850
case OPC_MUL_Q_df:
1839-
tcg_gen_movi_i32(tdf, df + 1);
18401851
gen_helper_msa_mul_q_df(cpu_env, tdf, twd, tws, twt);
18411852
break;
18421853
case OPC_FCULT_df:
@@ -1846,14 +1857,12 @@ static void gen_msa_3rf(DisasContext *ctx)
18461857
gen_helper_msa_fmsub_df(cpu_env, tdf, twd, tws, twt);
18471858
break;
18481859
case OPC_MADD_Q_df:
1849-
tcg_gen_movi_i32(tdf, df + 1);
18501860
gen_helper_msa_madd_q_df(cpu_env, tdf, twd, tws, twt);
18511861
break;
18521862
case OPC_FCLE_df:
18531863
gen_helper_msa_fcle_df(cpu_env, tdf, twd, tws, twt);
18541864
break;
18551865
case OPC_MSUB_Q_df:
1856-
tcg_gen_movi_i32(tdf, df + 1);
18571866
gen_helper_msa_msub_q_df(cpu_env, tdf, twd, tws, twt);
18581867
break;
18591868
case OPC_FCULE_df:
@@ -1896,7 +1905,6 @@ static void gen_msa_3rf(DisasContext *ctx)
18961905
gen_helper_msa_fmin_df(cpu_env, tdf, twd, tws, twt);
18971906
break;
18981907
case OPC_MULR_Q_df:
1899-
tcg_gen_movi_i32(tdf, df + 1);
19001908
gen_helper_msa_mulr_q_df(cpu_env, tdf, twd, tws, twt);
19011909
break;
19021910
case OPC_FSULT_df:
@@ -1906,7 +1914,6 @@ static void gen_msa_3rf(DisasContext *ctx)
19061914
gen_helper_msa_fmin_a_df(cpu_env, tdf, twd, tws, twt);
19071915
break;
19081916
case OPC_MADDR_Q_df:
1909-
tcg_gen_movi_i32(tdf, df + 1);
19101917
gen_helper_msa_maddr_q_df(cpu_env, tdf, twd, tws, twt);
19111918
break;
19121919
case OPC_FSLE_df:
@@ -1916,7 +1923,6 @@ static void gen_msa_3rf(DisasContext *ctx)
19161923
gen_helper_msa_fmax_df(cpu_env, tdf, twd, tws, twt);
19171924
break;
19181925
case OPC_MSUBR_Q_df:
1919-
tcg_gen_movi_i32(tdf, df + 1);
19201926
gen_helper_msa_msubr_q_df(cpu_env, tdf, twd, tws, twt);
19211927
break;
19221928
case OPC_FSULE_df:
@@ -1934,7 +1940,6 @@ static void gen_msa_3rf(DisasContext *ctx)
19341940
tcg_temp_free_i32(twd);
19351941
tcg_temp_free_i32(tws);
19361942
tcg_temp_free_i32(twt);
1937-
tcg_temp_free_i32(tdf);
19381943
}
19391944

19401945
static void gen_msa_2r(DisasContext *ctx)

0 commit comments

Comments
 (0)