Commit cb2c9921f851b5cb54c188106800331ab172ba78
1 parent
28de16da
Use concet TCG instructions in the MIPS target.
Signed-off-by: Thiemo Seufer <ths@networkno.de> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5303 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
4 additions
and
24 deletions
target-mips/translate.c
... | ... | @@ -2129,7 +2129,6 @@ static void gen_muldiv (DisasContext *ctx, uint32_t opc, |
2129 | 2129 | { |
2130 | 2130 | TCGv r_tmp1 = tcg_temp_new(TCG_TYPE_I64); |
2131 | 2131 | TCGv r_tmp2 = tcg_temp_new(TCG_TYPE_I64); |
2132 | - TCGv r_tmp3 = tcg_temp_new(TCG_TYPE_I64); | |
2133 | 2132 | |
2134 | 2133 | tcg_gen_ext32s_tl(t0, t0); |
2135 | 2134 | tcg_gen_ext32s_tl(t1, t1); |
... | ... | @@ -2138,11 +2137,7 @@ static void gen_muldiv (DisasContext *ctx, uint32_t opc, |
2138 | 2137 | tcg_gen_mul_i64(r_tmp1, r_tmp1, r_tmp2); |
2139 | 2138 | gen_load_LO(t0, 0); |
2140 | 2139 | gen_load_HI(t1, 0); |
2141 | - tcg_gen_extu_tl_i64(r_tmp2, t0); | |
2142 | - tcg_gen_extu_tl_i64(r_tmp3, t1); | |
2143 | - tcg_gen_shli_i64(r_tmp3, r_tmp3, 32); | |
2144 | - tcg_gen_or_i64(r_tmp2, r_tmp2, r_tmp3); | |
2145 | - tcg_temp_free(r_tmp3); | |
2140 | + tcg_gen_concat_tl_i64(r_tmp2, t0, t1); | |
2146 | 2141 | tcg_gen_add_i64(r_tmp1, r_tmp1, r_tmp2); |
2147 | 2142 | tcg_temp_free(r_tmp2); |
2148 | 2143 | tcg_gen_trunc_i64_tl(t0, r_tmp1); |
... | ... | @@ -2160,7 +2155,6 @@ static void gen_muldiv (DisasContext *ctx, uint32_t opc, |
2160 | 2155 | { |
2161 | 2156 | TCGv r_tmp1 = tcg_temp_new(TCG_TYPE_I64); |
2162 | 2157 | TCGv r_tmp2 = tcg_temp_new(TCG_TYPE_I64); |
2163 | - TCGv r_tmp3 = tcg_temp_new(TCG_TYPE_I64); | |
2164 | 2158 | |
2165 | 2159 | tcg_gen_ext32u_tl(t0, t0); |
2166 | 2160 | tcg_gen_ext32u_tl(t1, t1); |
... | ... | @@ -2169,11 +2163,7 @@ static void gen_muldiv (DisasContext *ctx, uint32_t opc, |
2169 | 2163 | tcg_gen_mul_i64(r_tmp1, r_tmp1, r_tmp2); |
2170 | 2164 | gen_load_LO(t0, 0); |
2171 | 2165 | gen_load_HI(t1, 0); |
2172 | - tcg_gen_extu_tl_i64(r_tmp2, t0); | |
2173 | - tcg_gen_extu_tl_i64(r_tmp3, t1); | |
2174 | - tcg_gen_shli_i64(r_tmp3, r_tmp3, 32); | |
2175 | - tcg_gen_or_i64(r_tmp2, r_tmp2, r_tmp3); | |
2176 | - tcg_temp_free(r_tmp3); | |
2166 | + tcg_gen_concat_tl_i64(r_tmp2, t0, t1); | |
2177 | 2167 | tcg_gen_add_i64(r_tmp1, r_tmp1, r_tmp2); |
2178 | 2168 | tcg_temp_free(r_tmp2); |
2179 | 2169 | tcg_gen_trunc_i64_tl(t0, r_tmp1); |
... | ... | @@ -2191,7 +2181,6 @@ static void gen_muldiv (DisasContext *ctx, uint32_t opc, |
2191 | 2181 | { |
2192 | 2182 | TCGv r_tmp1 = tcg_temp_new(TCG_TYPE_I64); |
2193 | 2183 | TCGv r_tmp2 = tcg_temp_new(TCG_TYPE_I64); |
2194 | - TCGv r_tmp3 = tcg_temp_new(TCG_TYPE_I64); | |
2195 | 2184 | |
2196 | 2185 | tcg_gen_ext32s_tl(t0, t0); |
2197 | 2186 | tcg_gen_ext32s_tl(t1, t1); |
... | ... | @@ -2200,11 +2189,7 @@ static void gen_muldiv (DisasContext *ctx, uint32_t opc, |
2200 | 2189 | tcg_gen_mul_i64(r_tmp1, r_tmp1, r_tmp2); |
2201 | 2190 | gen_load_LO(t0, 0); |
2202 | 2191 | gen_load_HI(t1, 0); |
2203 | - tcg_gen_extu_tl_i64(r_tmp2, t0); | |
2204 | - tcg_gen_extu_tl_i64(r_tmp3, t1); | |
2205 | - tcg_gen_shli_i64(r_tmp3, r_tmp3, 32); | |
2206 | - tcg_gen_or_i64(r_tmp2, r_tmp2, r_tmp3); | |
2207 | - tcg_temp_free(r_tmp3); | |
2192 | + tcg_gen_concat_tl_i64(r_tmp2, t0, t1); | |
2208 | 2193 | tcg_gen_sub_i64(r_tmp1, r_tmp1, r_tmp2); |
2209 | 2194 | tcg_temp_free(r_tmp2); |
2210 | 2195 | tcg_gen_trunc_i64_tl(t0, r_tmp1); |
... | ... | @@ -2222,7 +2207,6 @@ static void gen_muldiv (DisasContext *ctx, uint32_t opc, |
2222 | 2207 | { |
2223 | 2208 | TCGv r_tmp1 = tcg_temp_new(TCG_TYPE_I64); |
2224 | 2209 | TCGv r_tmp2 = tcg_temp_new(TCG_TYPE_I64); |
2225 | - TCGv r_tmp3 = tcg_temp_new(TCG_TYPE_I64); | |
2226 | 2210 | |
2227 | 2211 | tcg_gen_ext32u_tl(t0, t0); |
2228 | 2212 | tcg_gen_ext32u_tl(t1, t1); |
... | ... | @@ -2231,11 +2215,7 @@ static void gen_muldiv (DisasContext *ctx, uint32_t opc, |
2231 | 2215 | tcg_gen_mul_i64(r_tmp1, r_tmp1, r_tmp2); |
2232 | 2216 | gen_load_LO(t0, 0); |
2233 | 2217 | gen_load_HI(t1, 0); |
2234 | - tcg_gen_extu_tl_i64(r_tmp2, t0); | |
2235 | - tcg_gen_extu_tl_i64(r_tmp3, t1); | |
2236 | - tcg_gen_shli_i64(r_tmp3, r_tmp3, 32); | |
2237 | - tcg_gen_or_i64(r_tmp2, r_tmp2, r_tmp3); | |
2238 | - tcg_temp_free(r_tmp3); | |
2218 | + tcg_gen_concat_tl_i64(r_tmp2, t0, t1); | |
2239 | 2219 | tcg_gen_sub_i64(r_tmp1, r_tmp1, r_tmp2); |
2240 | 2220 | tcg_temp_free(r_tmp2); |
2241 | 2221 | tcg_gen_trunc_i64_tl(t0, r_tmp1); | ... | ... |