On 14 February 2011 17:46, Peter Maydell <peter.mayd...@linaro.org> wrote: > On 11 February 2011 15:11, <christophe.l...@st.com> wrote: >> NEON_VOP_ENV(qrshl_s8, neon_s8, 4) >> @@ -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;
...and also this is patching a function newly introduced in patch 1/6 -- better to just have 1/6 have the correct code. -- PMM