[PATCH] powerpc: ignore opcodes on e500/SPE which can't be mixed

Sebastian Andrzej Siewior binutils@ml.breakpoint.cc
Mon May 3 08:10:00 GMT 2010


* 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.

>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. Without the last
one VMX would be ignored but I am not sure what else might. So even without
-many floating point and lwsync gets assmebled successfully:

.gnu_attribute 4, 2
.gnu_attribute 8, 3
.section        ".text"
.align 2
.globl main
.type   main, @function
 main:
    fmul 0, 1, 2
    blr
.size   main, .-main
.section        .note.GNU-stack,"",@progbits

Is there something you recommend so I can forbid this? As I wrote
earlier: the compiler does throw any of this opcodes but itself, they
are just .S files and asm() syntax within the .c file.

>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.

Sebastian



More information about the Binutils mailing list