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.

Reply via email to