On 11/05/2015 10:25 AM, Paolo Bonzini wrote:
On 05/11/2015 10:20, Richard Henderson wrote:
/* Ugly code */
int64_t scaled = (uint64_t)(int64_t)src << scale;
You mean
int64_t scaled = (int64_t)((uint64_t)src << scale);
No, that also looks like a typo.
I mean:
- unnecessary cast to int64_t to get the sign extension while avoiding
the impression of a typo
Huh. This part doesn't seem a typo to me at all.
- cast to uint64_t to avoid overflow
- the shift is done in the uint64_t type
- finally there is an implicit cast to int64_t
r~