This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: How to configure a bi-arch PowerPC GCC?
- From: Segher Boessenkool <segher at kernel dot crashing dot org>
- To: Sebastian Huber <sebastian dot huber at embedded-brains dot de>
- Cc: GCC Development <gcc at gcc dot gnu dot org>
- Date: Fri, 21 Jul 2017 15:09:41 -0500
- Subject: Re: How to configure a bi-arch PowerPC GCC?
- Authentication-results: sourceware.org; auth=none
- References: <5880B3FD.2030605@embedded-brains.de> <20170120010404.GW30284@gate.crashing.org> <5881BDB2.3050505@embedded-brains.de> <20170121004635.GB30284@gate.crashing.org> <5885BC78.8010804@embedded-brains.de> <20170123171823.GF30284@gate.crashing.org> <58889605.4060501@embedded-brains.de> <20170125175520.GP30284@gate.crashing.org> <588F179B.70402@embedded-brains.de> <1b060957-eb13-0018-4f18-604914d863a7@embedded-brains.de>
Hi!
On Thu, Jul 20, 2017 at 02:46:41PM +0200, Sebastian Huber wrote:
> xgcc -B/build/git-build/b-gcc-git-powerpc-rtems4.12/./gcc/ -mcpu=e6500
> -m64 -O2 -fpreprocessed -S test-v0.i -o /dev/null 2>&1
> test-v0.i: In function 'f':
> test-v0.i:8:1: error: unrecognizable insn:
> }
> ^
> (insn 12 11 13 2 (set (reg:CCFP 126)
> (compare:CCFP (reg:TF 123)
> (reg:TF 124))) "test-v0.i":5 -1
> (nil))
> during RTL pass: vregs
> test-v0.i:8:1: internal compiler error: in extract_insn, at recog.c:2311
> 0x40a233 _fatal_insn(char const*, rtx_def const*, char const*, int, char
> const*)
So, this instruction is what was expanded, but it is not a valid
instruction for your configuration.
> So, I looked for " __gcc_qsub" in the GCC sources. It seems this is
> generated by rs6000_init_libfuncs() for some "sub_optab" stuff.
It ends up in libgcc.a, from ibm-ldouble.c .
> I don't know how I can figure out the corresponding GCC sources that are
> involved here.
In your testcase you use TFmode directly. This either is the
"double-double" ("IBM128") format, or IEEE 128-bit format (another
option for "long double" is to make it the same as "double").
Using a 64-bit long double has as downside that it is not bigger than
double.
Using double-double has as downsides that we are trying to move away
from it, it has funny rounding, historically it has had quite a few
bugs.
IEEE 128-bit is currently only supported on systems with VSX. If you
want to use it on other systems you'll have to make emulation support
for it in libgcc -- which then will work on *all* systems. Maybe
this is a bit much work.
Segher