[PATCH] powerpc: ignore opcodes on e500/SPE which can't be mixed
Mon May 3 11:05:00 GMT 2010
On Mon, May 03, 2010 at 10:10:21AM +0200, Sebastian Andrzej Siewior wrote:
> * Alan Modra | 2010-05-03 16:01:15 [+0930]:
> >On Sun, May 02, 2010 at 03:41:32PM +0200, Sebastian Andrzej Siewior wrote:
> >> + * ppc-opcodes.c: Deprecate all PPCVEC opcodes on PPCSPE,
> >> + deprecate opcodes which use floating point registers on PPCEFS,
> >> + deprecate lwsync on PPCSPE.
> >This isn't correct. Please don't add the "deprecate" to all vec/fp
> I though the deprecate flag is for invalid mix of opcodes.
It was really a means to disable a few opcodes from the common powerpc
set for newer processors that implement most of them but have a few
exceptions, perhaps using a new encoding.
> >opcodes like this. Most should not be enabled for e500 anyway, so
> >don't need to be deprecated.
> The compiler throws in -mppc -mspe -me500 -many. The first three are CPU
> specific, the last one is used by gcc for all powerpcs.
-many is supposed to assemble for any processor! Have you actually
tried your patch with -many to see what happens? I think you'll find
setting "deprecated" has no effect, except to match a non-deprecated
instruction before a deprecated one.
> Is there something you recommend so I can forbid this?
First, I think you will need to stop gcc passing -many. Then just
change the instructions you really must. If I've counted correctly,
that will be 86 changes to the opcodes table.
> >Also, I see you disabled "lfdepx".
> Why disabled? I marked all opcodes which touch FP regs. I could make a
> sane subset which exlude power6 and so on. If you refer to E500MC then
> that one does not use embedded FPU, it uses the "traditional" one.
My mistake. I'm not that familiar with e500.
Australia Development Lab, IBM
More information about the Binutils