Storing 16bit values in upper part of 32bit registers

Richard Henderson
Thu Oct 15 16:25:00 GMT 2009

On 10/15/2009 07:41 AM, Markus L wrote:
> However the IS is designed so that it is beneficial to to store 16bit
> values in the high part of the registers (rNh) and also the calling
> conventions that we want follow require 16bit values to be passed and
> returned in rNh.
> What would be the "proper way" make the compiler use the upper parts
> of these registers for the 16bit operands?

This feature is going to be difficult, but not impossible, and unless 
your ISA has some really odd features I won't vouch for the code quality.

You say you want to canonically represent HImode in the high-part of the 
register.  Additionally, you'll have to represent QImode in the 
high-part (if not further in the high byte).

You'll need to follow the mips port and define TRULY_NOOP_TRUNCATION and 
the associated truncMN2 patterns.

If you do all this, you won't have to do anything with FUNCTION_VALUE 
etc at all.


More information about the Gcc mailing list