[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 4/6] target-arm: fix saturated values for Neon r
From: |
Christophe Lyon |
Subject: |
Re: [Qemu-devel] [PATCH 4/6] target-arm: fix saturated values for Neon right shifts. |
Date: |
Tue, 15 Feb 2011 15:06:04 +0100 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.2.13) Gecko/20101207 Lightning/1.0b2 Thunderbird/3.1.7 |
>> @@ -924,7 +924,11 @@ uint32_t HELPER(neon_qrshl_s32)(CPUState *env, uint32_t
>> valop, uint32_t shiftop)
>> dest = val << shift;
>> if ((dest >> shift) != val) {
>> SET_QC();
>> - dest = (uint32_t)(1 << (sizeof(val) * 8 - 1)) - (val > 0 ? 1 :
>> 0);
>> + if (val < 0) {
>> + dest = INT32_MIN;
>> + } else {
>> + dest = INT32_MAX;
>> + }
>
> Again, right answers but the way most of the rest of the code
> forces a 32 bit value to signed saturation is
> dest = (val >> 31) ^ ~SIGNBIT;
>
Indeed; I hadn't given a close look at how saturation is performed elsewhere.
Anyway I find my version more readable ;-)
Quite a few times, I have wondered whether there are rules in QEmu development
helping decide between performance of the code vs readability/maintainability?
Christophe.
- [Qemu-devel] [PATCH v3 0/6] target-arm: Fix Neon shift instructions., christophe.lyon, 2011/02/11
- [Qemu-devel] [PATCH 6/6] target-arm: fix decoding of Neon 64 bit shifts., christophe.lyon, 2011/02/11
- [Qemu-devel] [PATCH 4/6] target-arm: fix saturated values for Neon right shifts., christophe.lyon, 2011/02/11
- [Qemu-devel] [PATCH 1/6] target-arm: Fix rounding constant addition for Neon shift instructions., christophe.lyon, 2011/02/11
- [Qemu-devel] [PATCH 2/6] target-arm: fix Neon right shifts with shift amount == input width., christophe.lyon, 2011/02/11
- [Qemu-devel] [PATCH 5/6] target-arm: fix Neon VQSHRN and VSHRN., christophe.lyon, 2011/02/11
- [Qemu-devel] [PATCH 3/6] target-arm: fix unsigned 64 bit right shifts., christophe.lyon, 2011/02/11