diff options
author | pbrook <pbrook@c046a42c-6fe2-441c-8c8c-71466251a162> | 2008-09-21 13:48:32 +0000 |
---|---|---|
committer | pbrook <pbrook@c046a42c-6fe2-441c-8c8c-71466251a162> | 2008-09-21 13:48:32 +0000 |
commit | 36aa55dcd9775a2164d831d3d3e2a16977995f14 (patch) | |
tree | 8cae41e48031febf5bfbc04d0c84c639f62ed2ab /target-sh4 | |
parent | 436d124b7d538b1fd9cf72edf17770664c309856 (diff) |
Add concat_i32_i64 op.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5280 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-sh4')
-rw-r--r-- | target-sh4/translate.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/target-sh4/translate.c b/target-sh4/translate.c index b9dcbc2f03..4614c8674b 100644 --- a/target-sh4/translate.c +++ b/target-sh4/translate.c @@ -400,15 +400,12 @@ static inline void gen_load_fpr32(TCGv t, int reg) static inline void gen_load_fpr64(TCGv t, int reg) { TCGv tmp1 = tcg_temp_new(TCG_TYPE_I32); - TCGv tmp2 = tcg_temp_new(TCG_TYPE_I64); + TCGv tmp2 = tcg_temp_new(TCG_TYPE_I32); tcg_gen_ld_i32(tmp1, cpu_env, offsetof(CPUState, fregs[reg])); - tcg_gen_extu_i32_i64(t, tmp1); - tcg_gen_shli_i64(t, t, 32); - tcg_gen_ld_i32(tmp1, cpu_env, offsetof(CPUState, fregs[reg + 1])); - tcg_gen_extu_i32_i64(tmp2, tmp1); + tcg_gen_ld_i32(tmp2, cpu_env, offsetof(CPUState, fregs[reg + 1])); + tcg_gen_concat_i32_i64(t, tmp2, tmp1); tcg_temp_free(tmp1); - tcg_gen_or_i64(t, t, tmp2); tcg_temp_free(tmp2); } |