This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Storing 16bit values in upper part of 32bit registers


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.


r~



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]