From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jerry Quinn" To: law@cygnus.com Cc: binutils@sourceware.cygnus.com Subject: Re: PATCH: minor hppa disasm cleanup Date: Thu, 01 Jul 1999 00:00:00 -0000 Message-id: <376802F6.B6FBAE0F@americasm01.nt.com> References: <1127.929431269@upchuck.cygnus.com> X-SW-Source: 1999-q2/msg00275.html Jeffrey A Law wrote: > > In message < 199906011505.LAA08672@wmtl249c.us.nortel.com >you write: > > In the pa disassembler, the 'E' code is always used for 0x0C opcodes > > where only left register halves occur. So the L/R selection bit at 25 > > is always 0 and the test isn't required. > > > > This is patched against 990413, since I can't use cvs to update my > > snapshot (restrictive firewall) and this is the last one I have. > > > > Changelog entry: > > > > Tue Jun 1 11:03:02 EDT 1999 Jerry Quinn > > > > * hppa-dis.c (print_insn_hppa): Remove unnecessary test in 'E' > > code. > Is this really correct? Consider xmpyu, fmpyfadd & fmpynfadd, none of which > are 0xc opcodes, but all use 'E' I think the 'E' code in these three instructions is incorrect. The disassembler considers E to be 6:10,25 while J is 6:10,24. In the assembler, the templates with 'J' are never used at all. Instead, the template with 'E' detects if there is an R float reg and then flips the opcode from 0xc to 0xe. It just happens that that opcode flip is safe and does nothing for these three instructions. My feeling for how it should work is that E is a left half float reg code only. When that fails, the compiler would try to use the J template and succeed. Also, the change from pa10 to pa11 could be handled by the J templates being pa11 while E templates are pa10. If that sounds OK, I'll see if I can find some time to reorganize the code. Jerry -- Jerry Quinn Tel: (514) 761-8737 jquinn@nortelnetworks.com Fax: (514) 761-8505 Speech Recognition Research