diff options
author | Aurelien Jarno <aurelien@aurel32.net> | 2012-10-05 15:04:44 +0100 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2012-10-05 15:04:44 +0100 |
commit | 365af80e47bf150506345cdfbcbf32120f18cdf6 (patch) | |
tree | 6fe81992eb8d77b7fe88aaf20764270efcd8cb70 /target-arm/op_helper.c | |
parent | 72485ec4f63d86c428f9223fc966bd7d2cc8100c (diff) | |
download | qemu-365af80e47bf150506345cdfbcbf32120f18cdf6.tar.gz qemu-365af80e47bf150506345cdfbcbf32120f18cdf6.tar.bz2 qemu-365af80e47bf150506345cdfbcbf32120f18cdf6.zip |
target-arm: convert sar, shl and shr helpers to TCG
Now that the movcond TCG op is available, it's possible to replace
shl and shr helpers by TCG code. The code generated by TCG is slightly
longer than the code generated by GCC for the helper but is still worth
it as this avoid all the consequences of using an helper: globals saved
back to memory, no possible optimization, call overhead, etc.
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'target-arm/op_helper.c')
-rw-r--r-- | target-arm/op_helper.c | 24 |
1 files changed, 0 insertions, 24 deletions
diff --git a/target-arm/op_helper.c b/target-arm/op_helper.c index 6095f2435c..aef592ab8d 100644 --- a/target-arm/op_helper.c +++ b/target-arm/op_helper.c @@ -355,30 +355,6 @@ uint32_t HELPER(sbc_cc)(CPUARMState *env, uint32_t a, uint32_t b) /* Similarly for variable shift instructions. */ -uint32_t HELPER(shl)(CPUARMState *env, uint32_t x, uint32_t i) -{ - int shift = i & 0xff; - if (shift >= 32) - return 0; - return x << shift; -} - -uint32_t HELPER(shr)(CPUARMState *env, uint32_t x, uint32_t i) -{ - int shift = i & 0xff; - if (shift >= 32) - return 0; - return (uint32_t)x >> shift; -} - -uint32_t HELPER(sar)(CPUARMState *env, uint32_t x, uint32_t i) -{ - int shift = i & 0xff; - if (shift >= 32) - shift = 31; - return (int32_t)x >> shift; -} - uint32_t HELPER(shl_cc)(CPUARMState *env, uint32_t x, uint32_t i) { int shift = i & 0xff; |