Commit dfa1a3f1c40b120e863cd56605ddbec276569bcd
1 parent
84aafb06
tcg: optimize tcg_gen_bswap16_i32
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6831 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
5 additions
and
8 deletions
tcg/tcg-op.h
| ... | ... | @@ -1207,16 +1207,13 @@ static inline void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg) |
| 1207 | 1207 | #ifdef TCG_TARGET_HAS_bswap16_i32 |
| 1208 | 1208 | tcg_gen_op2_i32(INDEX_op_bswap16_i32, ret, arg); |
| 1209 | 1209 | #else |
| 1210 | - TCGv_i32 t0, t1; | |
| 1211 | - t0 = tcg_temp_new_i32(); | |
| 1212 | - t1 = tcg_temp_new_i32(); | |
| 1210 | + TCGv_i32 t0 = tcg_temp_new_i32(); | |
| 1213 | 1211 | |
| 1214 | - tcg_gen_shri_i32(t0, arg, 8); | |
| 1215 | - tcg_gen_andi_i32(t1, arg, 0x000000ff); | |
| 1216 | - tcg_gen_shli_i32(t1, t1, 8); | |
| 1217 | - tcg_gen_or_i32(ret, t0, t1); | |
| 1212 | + tcg_gen_ext8u_i32(t0, arg); | |
| 1213 | + tcg_gen_shli_i32(t0, t0, 8); | |
| 1214 | + tcg_gen_shri_i32(ret, arg, 8); | |
| 1215 | + tcg_gen_or_i32(ret, ret, t0); | |
| 1218 | 1216 | tcg_temp_free_i32(t0); |
| 1219 | - tcg_temp_free_i32(t1); | |
| 1220 | 1217 | #endif |
| 1221 | 1218 | } |
| 1222 | 1219 | ... | ... |