http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52457
--- Comment #1 from Peter Bergner <bergner at gcc dot gnu.org> 2012-03-02 01:59:22 UTC --- I'm bootstrapping the following patch which fixes the bug for me. Index: gcc/config/rs6000/vsx.md =================================================================== --- gcc/config/rs6000/vsx.md (revision 184649) +++ gcc/config/rs6000/vsx.md (working copy) @@ -1119,9 +1119,9 @@ (define_insn "vsx_set_<mode>" "VECTOR_MEM_VSX_P (<MODE>mode)" { if (INTVAL (operands[3]) == 0) - return \"xxpermdi %x0,%x1,%x2,1\"; + return \"xxpermdi %x0,%x2,%x1,1\"; else if (INTVAL (operands[3]) == 1) - return \"xxpermdi %x0,%x2,%x1,0\"; + return \"xxpermdi %x0,%x1,%x2,0\"; else gcc_unreachable (); }