This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Remove E6500 insns from PPC_OPCODE_ALTIVEC2


On Fri, Apr 07, 2017 at 07:59:23AM -0500, Peter Bergner wrote:
> On 4/7/17 4:53 AM, Alan Modra wrote:
> > This isn't losing anything from the testsuite.  All of these insns
> > appear in testsuite/gas/ppc/e6500.s
> > 
> > opcodes/
> > 	* ppc-opc.c (powerpc_opcodes <mviwsplt, mvidsplt, lvexbx, lvepxl,
> > 	lvexhx, lvepx, lvexwx, stvexbx, stvexhx, stvexwx, lvtrx, lvtlx,
> > 	lvswx, stvfrx, stvflx, stvswx, lvsm, stvepxl, lvtrxl, stvepx,
> > 	lvtlxl, lvswxl, stvfrxl, stvflxl, stvswxl>): Enable E6500 only
> > 	vector instructions with E6500 not PPCVEC2.
> > gas/
> > 	* testsuite/gas/ppc/altivec2.s: Delete E6500 vector insns.
> > 	* testsuite/gas/ppc/altivec2.d: Adjust to suit.
> 
> Looks good to me, but I have to wonder how you noticed these, unless
> you read various PPC ISA docs in your free time? ;-)

Thanks for reviewing.  The patch came from Aaron finding an odd opcode
in traces of SPEC which objdump disassembled as stswxl, then Aaron
saying he couldn't find that in ISA 3.0 or 2.07.

Of course, even after this patch objdump still disassembles the opcode
to stswxl since we default to power9 with PPC_OPCODE_ANY, if objdump
is invoked without selected a cpu.

On another subject, I'd like your opinion on removing -[mM]htm options
from gas and the disassembler.  I think now that it was a mistake to
add them in the first place (and every other use of .sticky except for
-mall and -mraw).  I would have liked to remove -[mM]vsx too, but
"gcc -mvsx" passes on -mvsx to gas, and has done so for quite some
time.  So -mvsx looks impossible to remove without breaking gcc.
"gcc -mhtm" on the other hand, passes -mpower8 to gas, and it's been
that way since -mhtm was added to gcc.

Also, I'm intending to remove some of PPC_OPCODE_*, for instance
PPC_OPCODE_ALTIVEC2 can disappear and we then use

#define PPCVEC2 (PPC_OPCODE_POWER8 | PPC_OPCODE_E6500)
#define PPCVEC3 PPC_OPCODE_POWER9

in opcodes/ppc-opc.c which should improve gas opcode checks vs. cpu.
Dodgy gcc output would then be found at compile time rather than run
time (assuming -many is removed from powerpc gcc, another little
project of mine).

-- 
Alan Modra
Australia Development Lab, IBM


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]