This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: proposal for new single-bit BImode for IA-64
- To: Jim Wilson <wilson at cygnus dot com>
- Subject: Re: proposal for new single-bit BImode for IA-64
- From: Alan Lehotsky <lehotsky at tiac dot net>
- Date: Tue, 2 May 2000 16:33:55 -0400
- Cc: gcc-patches at gcc dot gnu dot org
- References: <200005021944.MAA26628@rtl.cygnus.com>
At 12:44 -0700 5/2/00, Jim Wilson wrote:
> Why can't you use QI and make the predicate registers part of
> a special class that has a unique constraint character.
>
>It is a special class with its own contraint letter. However, I still need
>patterns to move values in and out of these registers, for various reasons,
>constant folding, spilling, etc. Once I have an RTL that moves a QImode
>value into a single-bit predicate register, it is possible for an optimization
>pass to confuse the RTL a bit such that it then moves a register value into
>a predicate register, and then things start failing. I couldn't see a way
>to make this work right as long as I used a mode that was larger than the
>register size.
>
But you can still constrain those moves involving a predicate
register by only permitting constants 1 and 0 as constants.
Any moves involving predicate registers and normal QI register
or memory operands should have the predicate-register constraint
character prefixed by '*' so that it won't try and preference
the operand into a predicate register unless some REAL use
has already put it there.
I'm probably missing some other gotcha...
I was thinking that you might be able to set the MOVE_COST high
for this, but I'm not sure that would end up doing anything
useful....
--
------------------------------------------------------------------------
Quality Software Management
http://www.tiac.net/users/lehotsky
lehotsky@tiac.net
(978)287-0435 Voice
(978)808-6836 Cellular
(978)287-0436 Fax/Data
Software Process Improvement and Management Consulting
Language Design and Compiler Implementation