PATCH: minor hppa disasm cleanup

Jerry Quinn jquinn@nortelnetworks.com
Thu Jul 1 00:00:00 GMT 1999


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 <jquinn@nortelnetworks.com>
>   >
>   >     * 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


More information about the Binutils mailing list