https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81924
--- Comment #8 from Bill Schmidt <wschmidt at gcc dot gnu.org> --- Matthias, the following appears to fix this problem for gcc-5-branch. Obviously the branch is closed to further development, but if you want to consider carrying this patch, let me know and I will give it a full regstrap test. With the patch, we subreg the V1TImode as a V2DImode so that the RTL is legitimate: (insn 19 18 4 2 (set (subreg:V2DI (reg:V1TI 161 [ D.2389 ]) 0) (vec_select:V2DI (reg:V2DI 174 [ D.2389 ]) (parallel [ (const_int 1 [0x1]) (const_int 0 [0]) ]))) 956 {*vsx_xxpermdi2_le_v2di} (nil)) Here's the simple patch: (insn 19 18 4 2 (set (subreg:V2DI (reg:V1TI 161 [ D.2389 ]) 0) (vec_select:V2DI (reg:V2DI 174 [ D.2389 ]) (parallel [ (const_int 1 [0x1]) (const_int 0 [0]) ]))) 956 {*vsx_xxpermdi2_le_v2di} (nil)) Again, this needs full testing before I would recommend using it. Suggest we close this bug as there will be no upstream resolution for GCC 5.