https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61397
--- Comment #8 from Michael Meissner <meissner at gcc dot gnu.org> --- I added the lp64 test when I added the -mupper-regs support and rewrote the test. The rationale is I was using a long bit vector to make sure that each floating point variable got used (in_mask and out_mask each have a bit set for the 40 floating point values, to make sure that each value gets set in ways that the optimizer can't rearrange things and use less live variables). If we use long long in doing the masking in 32-bit, we run the risk that you have to call a function to do long long shifting, and/or, and testing. So, I added the && lp64 conditional to the test. The original version of p8vector-ldst.c no longer works with the -mupper-regs support, as the compiler will happily move variables into the appropriate register class without keeping the register there normally. So, I wrote the test to have 40 live FP values. If people feel strongly enough that it needs to work on big endian 32-bit (little endian powerpc64 no longer supports 32-bit mode), we can rewrite the test to have 2 separate in_masks and out_masks. Note as of this writing, the 4.9 branch has the original version of the p8vector-ldst.c (and no restriction on 32-bit), since the -mupper-regs patches are not back ported to GCC 4.9. If the back port of the patches for upper regs for 4.9 that I have in a branch are applied to the official FSF 4.9 branch, then the new version of p8vector-ldst.c will be installed.