[PATCH] operands_match_p for multiple hard registers

Richard Earnshaw rearnsha@gcc.gnu.org
Thu Feb 24 18:59:00 GMT 2005


On Thu, 2005-02-24 at 09:32, Richard Henderson wrote:
> On Wed, Feb 23, 2005 at 08:36:54PM -0500, David Edelsohn wrote:
> > 	This behavior only seems to make sense for scalar integers...
> 
> I don't agree.  It could easily make sense for fp single to fp double
> extension.  Would you like to describe the actual problem?
> 
> 
> r~

Thinking about this, I suspect it's a classic 'mixed-endian' type
problem.  Not everything is 'big-endian' or 'little-endian'.  Sometimes
things are a mixture of both.

In this particular case it seems that we need a new macro that replaces
the use of WORDS_BIG_ENDIAN that takes the CLASS into account. 
Something like

CLASS_MODE_SUBWORDS_BIG_ENDIAN(CLASS, MODE)

Where a subword defines the amount that fits into a single register of
CLASS when holding values of mode MODE.

A default definition would probably be something like

GET_MODE_CLASS (MODE) == CLASS_FLOAT \
  ? FLOAT_WORDS_BIG_ENDIAN : WORDS_BIG_ENDIAN

But machines could vary that as required.

R.



More information about the Gcc-patches mailing list