target/mips: Avoid tcg_const_* throughout

All remaining uses are strictly read-only.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
Richard Henderson 2023-02-25 17:46:54 -10:00
parent 0bcc6b4cfd
commit c29e79af27
5 changed files with 43 additions and 41 deletions

View File

@ -704,8 +704,8 @@ static void gen_ldst_multiple(DisasContext *ctx, uint32_t opc, int reglist,
gen_base_offset_addr(ctx, t0, base, offset); gen_base_offset_addr(ctx, t0, base, offset);
t1 = tcg_const_tl(reglist); t1 = tcg_constant_tl(reglist);
t2 = tcg_const_i32(ctx->mem_idx); t2 = tcg_constant_i32(ctx->mem_idx);
save_cpu_state(ctx, 1); save_cpu_state(ctx, 1);
switch (opc) { switch (opc) {

View File

@ -1072,7 +1072,7 @@ static void gen_mxu_D16MAX_D16MIN(DisasContext *ctx)
uint32_t XRx = XRb ? XRb : XRc; uint32_t XRx = XRb ? XRb : XRc;
/* ...and do half-word-wise max/min with one operand 0 */ /* ...and do half-word-wise max/min with one operand 0 */
TCGv_i32 t0 = tcg_temp_new(); TCGv_i32 t0 = tcg_temp_new();
TCGv_i32 t1 = tcg_const_i32(0); TCGv_i32 t1 = tcg_constant_i32(0);
/* the left half-word first */ /* the left half-word first */
tcg_gen_andi_i32(t0, mxu_gpr[XRx - 1], 0xFFFF0000); tcg_gen_andi_i32(t0, mxu_gpr[XRx - 1], 0xFFFF0000);
@ -1163,7 +1163,7 @@ static void gen_mxu_Q8MAX_Q8MIN(DisasContext *ctx)
uint32_t XRx = XRb ? XRb : XRc; uint32_t XRx = XRb ? XRb : XRc;
/* ...and do byte-wise max/min with one operand 0 */ /* ...and do byte-wise max/min with one operand 0 */
TCGv_i32 t0 = tcg_temp_new(); TCGv_i32 t0 = tcg_temp_new();
TCGv_i32 t1 = tcg_const_i32(0); TCGv_i32 t1 = tcg_constant_i32(0);
int32_t i; int32_t i;
/* the leftmost byte (byte 3) first */ /* the leftmost byte (byte 3) first */

View File

@ -3359,7 +3359,7 @@ static void gen_pool32a5_nanomips_insn(DisasContext *ctx, int opc,
case 0: case 0:
/* PRECR_SRA_PH_W */ /* PRECR_SRA_PH_W */
{ {
TCGv_i32 sa_t = tcg_const_i32(rd); TCGv_i32 sa_t = tcg_constant_i32(rd);
gen_helper_precr_sra_ph_w(v1_t, sa_t, v1_t, gen_helper_precr_sra_ph_w(v1_t, sa_t, v1_t,
cpu_gpr[rt]); cpu_gpr[rt]);
gen_store_gpr(v1_t, rt); gen_store_gpr(v1_t, rt);
@ -3368,7 +3368,7 @@ static void gen_pool32a5_nanomips_insn(DisasContext *ctx, int opc,
case 1: case 1:
/* PRECR_SRA_R_PH_W */ /* PRECR_SRA_R_PH_W */
{ {
TCGv_i32 sa_t = tcg_const_i32(rd); TCGv_i32 sa_t = tcg_constant_i32(rd);
gen_helper_precr_sra_r_ph_w(v1_t, sa_t, v1_t, gen_helper_precr_sra_r_ph_w(v1_t, sa_t, v1_t,
cpu_gpr[rt]); cpu_gpr[rt]);
gen_store_gpr(v1_t, rt); gen_store_gpr(v1_t, rt);
@ -3864,10 +3864,12 @@ static int decode_nanomips_32_48_opc(CPUMIPSState *env, DisasContext *ctx)
check_nms(ctx); check_nms(ctx);
if (rt != 0) { if (rt != 0) {
TCGv t0 = tcg_temp_new(); TCGv t0 = tcg_temp_new();
TCGv_i32 shift = tcg_const_i32(extract32(ctx->opcode, 0, 5)); TCGv_i32 shift =
TCGv_i32 shiftx = tcg_const_i32(extract32(ctx->opcode, 7, 4) tcg_constant_i32(extract32(ctx->opcode, 0, 5));
<< 1); TCGv_i32 shiftx =
TCGv_i32 stripe = tcg_const_i32(extract32(ctx->opcode, 6, 1)); tcg_constant_i32(extract32(ctx->opcode, 7, 4) << 1);
TCGv_i32 stripe =
tcg_constant_i32(extract32(ctx->opcode, 6, 1));
gen_load_gpr(t0, rs); gen_load_gpr(t0, rs);
gen_helper_rotx(cpu_gpr[rt], t0, shift, shiftx, stripe); gen_helper_rotx(cpu_gpr[rt], t0, shift, shiftx, stripe);
@ -4500,7 +4502,7 @@ static int decode_isa_nanomips(CPUMIPSState *env, DisasContext *ctx)
/* make sure instructions are on a halfword boundary */ /* make sure instructions are on a halfword boundary */
if (ctx->base.pc_next & 0x1) { if (ctx->base.pc_next & 0x1) {
TCGv tmp = tcg_const_tl(ctx->base.pc_next); TCGv tmp = tcg_constant_tl(ctx->base.pc_next);
tcg_gen_st_tl(tmp, cpu_env, offsetof(CPUMIPSState, CP0_BadVAddr)); tcg_gen_st_tl(tmp, cpu_env, offsetof(CPUMIPSState, CP0_BadVAddr));
generate_exception_end(ctx, EXCP_AdEL); generate_exception_end(ctx, EXCP_AdEL);
return 2; return 2;

View File

@ -2099,14 +2099,14 @@ static void gen_ld(DisasContext *ctx, uint32_t opc,
gen_store_gpr(t1, rt); gen_store_gpr(t1, rt);
break; break;
case OPC_LDPC: case OPC_LDPC:
t1 = tcg_const_tl(pc_relative_pc(ctx)); t1 = tcg_constant_tl(pc_relative_pc(ctx));
gen_op_addr_add(ctx, t0, t0, t1); gen_op_addr_add(ctx, t0, t0, t1);
tcg_gen_qemu_ld_tl(t0, t0, mem_idx, MO_TEUQ); tcg_gen_qemu_ld_tl(t0, t0, mem_idx, MO_TEUQ);
gen_store_gpr(t0, rt); gen_store_gpr(t0, rt);
break; break;
#endif #endif
case OPC_LWPC: case OPC_LWPC:
t1 = tcg_const_tl(pc_relative_pc(ctx)); t1 = tcg_constant_tl(pc_relative_pc(ctx));
gen_op_addr_add(ctx, t0, t0, t1); gen_op_addr_add(ctx, t0, t0, t1);
tcg_gen_qemu_ld_tl(t0, t0, mem_idx, MO_TESL); tcg_gen_qemu_ld_tl(t0, t0, mem_idx, MO_TESL);
gen_store_gpr(t0, rt); gen_store_gpr(t0, rt);
@ -2733,7 +2733,7 @@ static void gen_cond_move(DisasContext *ctx, uint32_t opc,
t0 = tcg_temp_new(); t0 = tcg_temp_new();
gen_load_gpr(t0, rt); gen_load_gpr(t0, rt);
t1 = tcg_const_tl(0); t1 = tcg_constant_tl(0);
t2 = tcg_temp_new(); t2 = tcg_temp_new();
gen_load_gpr(t2, rs); gen_load_gpr(t2, rs);
switch (opc) { switch (opc) {
@ -3084,8 +3084,8 @@ static void gen_r6_muldiv(DisasContext *ctx, int opc, int rd, int rs, int rt)
break; break;
case R6_OPC_DIVU: case R6_OPC_DIVU:
{ {
TCGv t2 = tcg_const_tl(0); TCGv t2 = tcg_constant_tl(0);
TCGv t3 = tcg_const_tl(1); TCGv t3 = tcg_constant_tl(1);
tcg_gen_ext32u_tl(t0, t0); tcg_gen_ext32u_tl(t0, t0);
tcg_gen_ext32u_tl(t1, t1); tcg_gen_ext32u_tl(t1, t1);
tcg_gen_movcond_tl(TCG_COND_EQ, t1, t1, t2, t3, t1); tcg_gen_movcond_tl(TCG_COND_EQ, t1, t1, t2, t3, t1);
@ -3095,8 +3095,8 @@ static void gen_r6_muldiv(DisasContext *ctx, int opc, int rd, int rs, int rt)
break; break;
case R6_OPC_MODU: case R6_OPC_MODU:
{ {
TCGv t2 = tcg_const_tl(0); TCGv t2 = tcg_constant_tl(0);
TCGv t3 = tcg_const_tl(1); TCGv t3 = tcg_constant_tl(1);
tcg_gen_ext32u_tl(t0, t0); tcg_gen_ext32u_tl(t0, t0);
tcg_gen_ext32u_tl(t1, t1); tcg_gen_ext32u_tl(t1, t1);
tcg_gen_movcond_tl(TCG_COND_EQ, t1, t1, t2, t3, t1); tcg_gen_movcond_tl(TCG_COND_EQ, t1, t1, t2, t3, t1);
@ -3175,16 +3175,16 @@ static void gen_r6_muldiv(DisasContext *ctx, int opc, int rd, int rs, int rt)
break; break;
case R6_OPC_DDIVU: case R6_OPC_DDIVU:
{ {
TCGv t2 = tcg_const_tl(0); TCGv t2 = tcg_constant_tl(0);
TCGv t3 = tcg_const_tl(1); TCGv t3 = tcg_constant_tl(1);
tcg_gen_movcond_tl(TCG_COND_EQ, t1, t1, t2, t3, t1); tcg_gen_movcond_tl(TCG_COND_EQ, t1, t1, t2, t3, t1);
tcg_gen_divu_i64(cpu_gpr[rd], t0, t1); tcg_gen_divu_i64(cpu_gpr[rd], t0, t1);
} }
break; break;
case R6_OPC_DMODU: case R6_OPC_DMODU:
{ {
TCGv t2 = tcg_const_tl(0); TCGv t2 = tcg_constant_tl(0);
TCGv t3 = tcg_const_tl(1); TCGv t3 = tcg_constant_tl(1);
tcg_gen_movcond_tl(TCG_COND_EQ, t1, t1, t2, t3, t1); tcg_gen_movcond_tl(TCG_COND_EQ, t1, t1, t2, t3, t1);
tcg_gen_remu_i64(cpu_gpr[rd], t0, t1); tcg_gen_remu_i64(cpu_gpr[rd], t0, t1);
} }
@ -3248,8 +3248,8 @@ static void gen_div1_tx79(DisasContext *ctx, uint32_t opc, int rs, int rt)
break; break;
case MMI_OPC_DIVU1: case MMI_OPC_DIVU1:
{ {
TCGv t2 = tcg_const_tl(0); TCGv t2 = tcg_constant_tl(0);
TCGv t3 = tcg_const_tl(1); TCGv t3 = tcg_constant_tl(1);
tcg_gen_ext32u_tl(t0, t0); tcg_gen_ext32u_tl(t0, t0);
tcg_gen_ext32u_tl(t1, t1); tcg_gen_ext32u_tl(t1, t1);
tcg_gen_movcond_tl(TCG_COND_EQ, t1, t1, t2, t3, t1); tcg_gen_movcond_tl(TCG_COND_EQ, t1, t1, t2, t3, t1);
@ -3304,8 +3304,8 @@ static void gen_muldiv(DisasContext *ctx, uint32_t opc,
break; break;
case OPC_DIVU: case OPC_DIVU:
{ {
TCGv t2 = tcg_const_tl(0); TCGv t2 = tcg_constant_tl(0);
TCGv t3 = tcg_const_tl(1); TCGv t3 = tcg_constant_tl(1);
tcg_gen_ext32u_tl(t0, t0); tcg_gen_ext32u_tl(t0, t0);
tcg_gen_ext32u_tl(t1, t1); tcg_gen_ext32u_tl(t1, t1);
tcg_gen_movcond_tl(TCG_COND_EQ, t1, t1, t2, t3, t1); tcg_gen_movcond_tl(TCG_COND_EQ, t1, t1, t2, t3, t1);
@ -3355,8 +3355,8 @@ static void gen_muldiv(DisasContext *ctx, uint32_t opc,
break; break;
case OPC_DDIVU: case OPC_DDIVU:
{ {
TCGv t2 = tcg_const_tl(0); TCGv t2 = tcg_constant_tl(0);
TCGv t3 = tcg_const_tl(1); TCGv t3 = tcg_constant_tl(1);
tcg_gen_movcond_tl(TCG_COND_EQ, t1, t1, t2, t3, t1); tcg_gen_movcond_tl(TCG_COND_EQ, t1, t1, t2, t3, t1);
tcg_gen_divu_i64(cpu_LO[acc], t0, t1); tcg_gen_divu_i64(cpu_LO[acc], t0, t1);
tcg_gen_remu_i64(cpu_HI[acc], t0, t1); tcg_gen_remu_i64(cpu_HI[acc], t0, t1);
@ -4916,7 +4916,7 @@ static void gen_bshfl(DisasContext *ctx, uint32_t op2, int rt, int rd)
case OPC_WSBH: case OPC_WSBH:
{ {
TCGv t1 = tcg_temp_new(); TCGv t1 = tcg_temp_new();
TCGv t2 = tcg_const_tl(0x00FF00FF); TCGv t2 = tcg_constant_tl(0x00FF00FF);
tcg_gen_shri_tl(t1, t0, 8); tcg_gen_shri_tl(t1, t0, 8);
tcg_gen_and_tl(t1, t1, t2); tcg_gen_and_tl(t1, t1, t2);
@ -4936,7 +4936,7 @@ static void gen_bshfl(DisasContext *ctx, uint32_t op2, int rt, int rd)
case OPC_DSBH: case OPC_DSBH:
{ {
TCGv t1 = tcg_temp_new(); TCGv t1 = tcg_temp_new();
TCGv t2 = tcg_const_tl(0x00FF00FF00FF00FFULL); TCGv t2 = tcg_constant_tl(0x00FF00FF00FF00FFULL);
tcg_gen_shri_tl(t1, t0, 8); tcg_gen_shri_tl(t1, t0, 8);
tcg_gen_and_tl(t1, t1, t2); tcg_gen_and_tl(t1, t1, t2);
@ -4948,7 +4948,7 @@ static void gen_bshfl(DisasContext *ctx, uint32_t op2, int rt, int rd)
case OPC_DSHD: case OPC_DSHD:
{ {
TCGv t1 = tcg_temp_new(); TCGv t1 = tcg_temp_new();
TCGv t2 = tcg_const_tl(0x0000FFFF0000FFFFULL); TCGv t2 = tcg_constant_tl(0x0000FFFF0000FFFFULL);
tcg_gen_shri_tl(t1, t0, 16); tcg_gen_shri_tl(t1, t0, 16);
tcg_gen_and_tl(t1, t1, t2); tcg_gen_and_tl(t1, t1, t2);
@ -8459,7 +8459,7 @@ static void gen_mftr(CPUMIPSState *env, DisasContext *ctx, int rt, int rd,
case 5: case 5:
case 6: case 6:
case 7: case 7:
gen_helper_mftc0_configx(t0, cpu_env, tcg_const_tl(sel)); gen_helper_mftc0_configx(t0, cpu_env, tcg_constant_tl(sel));
break; break;
default: default:
goto die; goto die;
@ -9485,7 +9485,7 @@ static inline void gen_movcf_ps(DisasContext *ctx, int fs, int fd,
static void gen_sel_s(DisasContext *ctx, enum fopcode op1, int fd, int ft, static void gen_sel_s(DisasContext *ctx, enum fopcode op1, int fd, int ft,
int fs) int fs)
{ {
TCGv_i32 t1 = tcg_const_i32(0); TCGv_i32 t1 = tcg_constant_i32(0);
TCGv_i32 fp0 = tcg_temp_new_i32(); TCGv_i32 fp0 = tcg_temp_new_i32();
TCGv_i32 fp1 = tcg_temp_new_i32(); TCGv_i32 fp1 = tcg_temp_new_i32();
TCGv_i32 fp2 = tcg_temp_new_i32(); TCGv_i32 fp2 = tcg_temp_new_i32();
@ -9518,7 +9518,7 @@ static void gen_sel_s(DisasContext *ctx, enum fopcode op1, int fd, int ft,
static void gen_sel_d(DisasContext *ctx, enum fopcode op1, int fd, int ft, static void gen_sel_d(DisasContext *ctx, enum fopcode op1, int fd, int ft,
int fs) int fs)
{ {
TCGv_i64 t1 = tcg_const_i64(0); TCGv_i64 t1 = tcg_constant_i64(0);
TCGv_i64 fp0 = tcg_temp_new_i64(); TCGv_i64 fp0 = tcg_temp_new_i64();
TCGv_i64 fp1 = tcg_temp_new_i64(); TCGv_i64 fp1 = tcg_temp_new_i64();
TCGv_i64 fp2 = tcg_temp_new_i64(); TCGv_i64 fp2 = tcg_temp_new_i64();
@ -11516,7 +11516,7 @@ void gen_addiupc(DisasContext *ctx, int rx, int imm,
static void gen_cache_operation(DisasContext *ctx, uint32_t op, int base, static void gen_cache_operation(DisasContext *ctx, uint32_t op, int base,
int16_t offset) int16_t offset)
{ {
TCGv_i32 t0 = tcg_const_i32(op); TCGv_i32 t0 = tcg_constant_i32(op);
TCGv t1 = tcg_temp_new(); TCGv t1 = tcg_temp_new();
gen_base_offset_addr(ctx, t1, base, offset); gen_base_offset_addr(ctx, t1, base, offset);
gen_helper_cache(cpu_env, t1, t0); gen_helper_cache(cpu_env, t1, t0);
@ -11860,7 +11860,7 @@ static void gen_mipsdsp_arith(DisasContext *ctx, uint32_t op1, uint32_t op2,
case OPC_PRECR_SRA_PH_W: case OPC_PRECR_SRA_PH_W:
check_dsp_r2(ctx); check_dsp_r2(ctx);
{ {
TCGv_i32 sa_t = tcg_const_i32(v2); TCGv_i32 sa_t = tcg_constant_i32(v2);
gen_helper_precr_sra_ph_w(cpu_gpr[ret], sa_t, v1_t, gen_helper_precr_sra_ph_w(cpu_gpr[ret], sa_t, v1_t,
cpu_gpr[ret]); cpu_gpr[ret]);
break; break;
@ -11868,7 +11868,7 @@ static void gen_mipsdsp_arith(DisasContext *ctx, uint32_t op1, uint32_t op2,
case OPC_PRECR_SRA_R_PH_W: case OPC_PRECR_SRA_R_PH_W:
check_dsp_r2(ctx); check_dsp_r2(ctx);
{ {
TCGv_i32 sa_t = tcg_const_i32(v2); TCGv_i32 sa_t = tcg_constant_i32(v2);
gen_helper_precr_sra_r_ph_w(cpu_gpr[ret], sa_t, v1_t, gen_helper_precr_sra_r_ph_w(cpu_gpr[ret], sa_t, v1_t,
cpu_gpr[ret]); cpu_gpr[ret]);
break; break;
@ -12057,14 +12057,14 @@ static void gen_mipsdsp_arith(DisasContext *ctx, uint32_t op1, uint32_t op2,
case OPC_PRECR_SRA_QH_PW: case OPC_PRECR_SRA_QH_PW:
check_dsp_r2(ctx); check_dsp_r2(ctx);
{ {
TCGv_i32 ret_t = tcg_const_i32(ret); TCGv_i32 ret_t = tcg_constant_i32(ret);
gen_helper_precr_sra_qh_pw(v2_t, v1_t, v2_t, ret_t); gen_helper_precr_sra_qh_pw(v2_t, v1_t, v2_t, ret_t);
break; break;
} }
case OPC_PRECR_SRA_R_QH_PW: case OPC_PRECR_SRA_R_QH_PW:
check_dsp_r2(ctx); check_dsp_r2(ctx);
{ {
TCGv_i32 sa_v = tcg_const_i32(ret); TCGv_i32 sa_v = tcg_constant_i32(ret);
gen_helper_precr_sra_r_qh_pw(v2_t, v1_t, v2_t, sa_v); gen_helper_precr_sra_r_qh_pw(v2_t, v1_t, v2_t, sa_v);
break; break;
} }

View File

@ -243,8 +243,8 @@ static bool trans_parallel_compare(DisasContext *ctx, arg_r *a,
return true; return true;
} }
c0 = tcg_const_tl(0); c0 = tcg_constant_tl(0);
c1 = tcg_const_tl(0xffffffff); c1 = tcg_constant_tl(0xffffffff);
ax = tcg_temp_new_i64(); ax = tcg_temp_new_i64();
bx = tcg_temp_new_i64(); bx = tcg_temp_new_i64();
t0 = tcg_temp_new_i64(); t0 = tcg_temp_new_i64();