Revision 3b6dac34 tcg/mips/tcg-target.c
b/tcg/mips/tcg-target.c | ||
---|---|---|
377 | 377 |
tcg_out32(s, 0); |
378 | 378 |
} |
379 | 379 |
|
380 |
static inline void tcg_out_mov(TCGContext *s, int ret, int arg) |
|
380 |
static inline void tcg_out_mov(TCGContext *s, TCGType type, int ret, int arg)
|
|
381 | 381 |
{ |
382 | 382 |
tcg_out_opc_reg(s, OPC_ADDU, ret, arg, TCG_REG_ZERO); |
383 | 383 |
} |
... | ... | |
849 | 849 |
|
850 | 850 |
/* slow path */ |
851 | 851 |
sp_args = TCG_REG_A0; |
852 |
tcg_out_mov(s, sp_args++, addr_reg1); |
|
852 |
tcg_out_mov(s, TCG_TYPE_I32, sp_args++, addr_reg1);
|
|
853 | 853 |
# if TARGET_LONG_BITS == 64 |
854 |
tcg_out_mov(s, sp_args++, addr_reg2); |
|
854 |
tcg_out_mov(s, TCG_TYPE_I32, sp_args++, addr_reg2);
|
|
855 | 855 |
# endif |
856 | 856 |
tcg_out_movi(s, TCG_TYPE_I32, sp_args++, mem_index); |
857 | 857 |
tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_T9, (tcg_target_long)qemu_ld_helpers[s_bits]); |
... | ... | |
872 | 872 |
tcg_out_ext16s(s, data_reg1, TCG_REG_V0); |
873 | 873 |
break; |
874 | 874 |
case 2: |
875 |
tcg_out_mov(s, data_reg1, TCG_REG_V0); |
|
875 |
tcg_out_mov(s, TCG_TYPE_I32, data_reg1, TCG_REG_V0);
|
|
876 | 876 |
break; |
877 | 877 |
case 3: |
878 |
tcg_out_mov(s, data_reg2, TCG_REG_V1); |
|
879 |
tcg_out_mov(s, data_reg1, TCG_REG_V0); |
|
878 |
tcg_out_mov(s, TCG_TYPE_I32, data_reg2, TCG_REG_V1);
|
|
879 |
tcg_out_mov(s, TCG_TYPE_I32, data_reg1, TCG_REG_V0);
|
|
880 | 880 |
break; |
881 | 881 |
default: |
882 | 882 |
tcg_abort(); |
... | ... | |
1035 | 1035 |
|
1036 | 1036 |
/* slow path */ |
1037 | 1037 |
sp_args = TCG_REG_A0; |
1038 |
tcg_out_mov(s, sp_args++, addr_reg1); |
|
1038 |
tcg_out_mov(s, TCG_TYPE_I32, sp_args++, addr_reg1);
|
|
1039 | 1039 |
# if TARGET_LONG_BITS == 64 |
1040 |
tcg_out_mov(s, sp_args++, addr_reg2); |
|
1040 |
tcg_out_mov(s, TCG_TYPE_I32, sp_args++, addr_reg2);
|
|
1041 | 1041 |
# endif |
1042 | 1042 |
switch(opc) { |
1043 | 1043 |
case 0: |
... | ... | |
1047 | 1047 |
tcg_out_opc_imm(s, OPC_ANDI, sp_args++, data_reg1, 0xffff); |
1048 | 1048 |
break; |
1049 | 1049 |
case 2: |
1050 |
tcg_out_mov(s, sp_args++, data_reg1); |
|
1050 |
tcg_out_mov(s, TCG_TYPE_I32, sp_args++, data_reg1);
|
|
1051 | 1051 |
break; |
1052 | 1052 |
case 3: |
1053 | 1053 |
sp_args = (sp_args + 1) & ~1; |
1054 |
tcg_out_mov(s, sp_args++, data_reg1); |
|
1055 |
tcg_out_mov(s, sp_args++, data_reg2); |
|
1054 |
tcg_out_mov(s, TCG_TYPE_I32, sp_args++, data_reg1);
|
|
1055 |
tcg_out_mov(s, TCG_TYPE_I32, sp_args++, data_reg2);
|
|
1056 | 1056 |
break; |
1057 | 1057 |
default: |
1058 | 1058 |
tcg_abort(); |
... | ... | |
1165 | 1165 |
break; |
1166 | 1166 |
|
1167 | 1167 |
case INDEX_op_mov_i32: |
1168 |
tcg_out_mov(s, args[0], args[1]); |
|
1168 |
tcg_out_mov(s, TCG_TYPE_I32, args[0], args[1]);
|
|
1169 | 1169 |
break; |
1170 | 1170 |
case INDEX_op_movi_i32: |
1171 | 1171 |
tcg_out_movi(s, TCG_TYPE_I32, args[0], args[1]); |
... | ... | |
1216 | 1216 |
tcg_out_opc_reg(s, OPC_ADDU, args[1], args[3], args[5]); |
1217 | 1217 |
} |
1218 | 1218 |
tcg_out_opc_reg(s, OPC_ADDU, args[1], args[1], TCG_REG_T0); |
1219 |
tcg_out_mov(s, args[0], TCG_REG_AT); |
|
1219 |
tcg_out_mov(s, TCG_TYPE_I32, args[0], TCG_REG_AT);
|
|
1220 | 1220 |
break; |
1221 | 1221 |
case INDEX_op_sub_i32: |
1222 | 1222 |
if (const_args[2]) { |
... | ... | |
1238 | 1238 |
tcg_out_opc_reg(s, OPC_SUBU, args[1], args[3], args[5]); |
1239 | 1239 |
} |
1240 | 1240 |
tcg_out_opc_reg(s, OPC_SUBU, args[1], args[1], TCG_REG_T0); |
1241 |
tcg_out_mov(s, args[0], TCG_REG_AT); |
|
1241 |
tcg_out_mov(s, TCG_TYPE_I32, args[0], TCG_REG_AT);
|
|
1242 | 1242 |
break; |
1243 | 1243 |
case INDEX_op_mul_i32: |
1244 | 1244 |
tcg_out_opc_reg(s, OPC_MULT, 0, args[1], args[2]); |
Also available in: Unified diff