aboutsummaryrefslogtreecommitdiff
path: root/target-arm/op_helper.c
diff options
context:
space:
mode:
authorpbrook <pbrook@c046a42c-6fe2-441c-8c8c-71466251a162>2008-03-31 03:48:01 +0000
committerpbrook <pbrook@c046a42c-6fe2-441c-8c8c-71466251a162>2008-03-31 03:48:01 +0000
commit8f8e3aa45185dbb99a25edee384a18ca3d931132 (patch)
tree0cbfbfa45b457e28a51f9f8c979bc7c96f2e1a28 /target-arm/op_helper.c
parent8984bd2e833ae0824caa3d63176639c70a6fe654 (diff)
ARM TCG conversion 13/16.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4150 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-arm/op_helper.c')
-rw-r--r--target-arm/op_helper.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/target-arm/op_helper.c b/target-arm/op_helper.c
index 79b3f1a456..d1ce3a657c 100644
--- a/target-arm/op_helper.c
+++ b/target-arm/op_helper.c
@@ -40,27 +40,26 @@ void cpu_unlock(void)
spin_unlock(&global_cpu_lock);
}
-void helper_neon_tbl(int rn, int maxindex)
+uint32_t HELPER(neon_tbl)(uint32_t ireg, uint32_t def,
+ uint32_t rn, uint32_t maxindex)
{
uint32_t val;
- uint32_t mask;
uint32_t tmp;
int index;
int shift;
uint64_t *table;
table = (uint64_t *)&env->vfp.regs[rn];
val = 0;
- mask = 0;
for (shift = 0; shift < 32; shift += 8) {
- index = (T1 >> shift) & 0xff;
- if (index <= maxindex) {
+ index = (ireg >> shift) & 0xff;
+ if (index < maxindex) {
tmp = (table[index >> 3] >> (index & 7)) & 0xff;
val |= tmp << shift;
} else {
- val |= T0 & (0xff << shift);
+ val |= def & (0xff << shift);
}
}
- T0 = val;
+ return val;
}
#if !defined(CONFIG_USER_ONLY)