This is the mail archive of the gcc-patches@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: powerpc patch 3 of 9



Alan Modra <amodra@bigpond.net.au> writes:

> Here's a revised patch.
> 
> Enables use of a bunch of SImode insns on PowerPC64, and fixes bad
> code generated on PowerPC64 targets for
> 
> unsigned long foo (unsigned long base, unsigned int val)
> {
>   return base + (val & 0x80000001);
> }
> 
> and a number of other cases involving rlwinm.

Please add the testcase to the testsuite!

> 	* config/rs6000/rs6000.c (mask_operand): Don't allow masks that
> 	wrap on PowerPC64 targets.
> 	(mask_operand_wrap): New predicate.
> 	(extract_MB, extract_ME): New functions split out of..
> 	(print_operand): ..here.
> 	* config/rs6000/rs6000-protos.h (mask_operand_wrap): Declare.
> 	(extract_MB, extract_ME): Likewise.
> 	* config/rs6000/rs6000.h (PREDICATE_CODES): Add mask_operand_wrap.
> 	* config/rs6000/rs6000.md: Enable many insns involving rlwinm for
> 	TARGET_POWERPC64.  Handle rlwinm corner cases.  Remove redundant
> 	`T' constraint from patterns using mask_operand.

-- 
- Geoffrey Keating <geoffk@geoffk.org> <geoffk@redhat.com>


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