On 05/22/2018 07:50 AM, Peter Maydell wrote:
> Hi; I was reading about the x86-64 calling convention and I found
> out that apparently for returns of smaller-than-register types the
> high parts may contain garbage:
> https://stackoverflow.com/questions/36706721/is-a-sign-or-zero-extension-required-when-adding-a-32bit-offset-to-a-pointer-for/36760539#36760539

Yes, that's one reason I didn't want to get involved in returning a "real"
16-bit quantity.

> However, for TCG helper functions, although we allow the helper
> macro to say that the return type is 'f16', in helper-head.h we
> seem to just alias f16 as i32, and in dh_sizemask() we only record
> "is this 64 bits" and "is this signed". Am I missing the place
> where we zero-extend the value we get back from the helper so
> that it's the right thing in TCG's i32 ?

It happens in C, implicit in "typedef uint16_t float16".


r~

Reply via email to