Storing 16bit values in upper part of 32bit registers
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