summaryrefslogtreecommitdiff
path: root/target-sh4/translate.c
diff options
context:
space:
mode:
authorpbrook <pbrook@c046a42c-6fe2-441c-8c8c-71466251a162>2008-09-21 13:48:32 +0000
committerpbrook <pbrook@c046a42c-6fe2-441c-8c8c-71466251a162>2008-09-21 13:48:32 +0000
commitfb8da77a27b6c046450d87a06705d0a0cb50ad7c (patch)
tree8cae41e48031febf5bfbc04d0c84c639f62ed2ab /target-sh4/translate.c
parent1424e5f0a46e4a61d71054c99d8e732af102caf1 (diff)
downloadqemu-fb8da77a27b6c046450d87a06705d0a0cb50ad7c.tar.gz
qemu-fb8da77a27b6c046450d87a06705d0a0cb50ad7c.tar.bz2
qemu-fb8da77a27b6c046450d87a06705d0a0cb50ad7c.zip
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/translate.c')
-rw-r--r--target-sh4/translate.c9
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);
}