This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
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>