Add another e500 subreg pattern.
commit8814c0a882bab675165381cd20aef9ade72198a4
authorjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 23 Nov 2016 23:32:54 +0000 (23 23:32 +0000)
committerjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 23 Nov 2016 23:32:54 +0000 (23 23:32 +0000)
tree4e33e2bd653cb98b8c630bb7f24924b2057de920
parent74d925e95b7b84f4b86bd80b691b28b73db3143f
Add another e500 subreg pattern.

Building glibc for powerpc-linux-gnuspe --enable-e500-double, given
the patch <https://gcc.gnu.org/ml/gcc-patches/2016-11/msg02404.html>
applied, fails with errors such as:

../sysdeps/ieee754/ldbl-128ibm/s_modfl.c: In function '__modfl':
../sysdeps/ieee754/ldbl-128ibm/s_modfl.c:91:1: error: unrecognizable insn:
 }
 ^
(insn 31 30 32 2 (set (reg:DF 203)
        (subreg:DF (reg:TI 202) 8)) "../sysdeps/ieee754/ldbl-128ibm/s_modfl.c":44 -1
     (nil))
../sysdeps/ieee754/ldbl-128ibm/s_modfl.c:91:1: internal compiler error: in extract_insn, at recog.c:2311

This patch adds an insn pattern similar to various patterns already
present to handle extracting such a subreg.  This allows the glibc
build to get further, until it runs into an assembler error for which
I have another patch.

gcc:
* config/rs6000/spe.md (*frob_<SPE64:mode>_ti_8): New insn
pattern.

gcc/testsuite:
* gcc.c-torture/compile/20161123-1.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@242813 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/config/rs6000/spe.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/compile/20161123-1.c [new file with mode: 0644]