This is the mail archive of the binutils@sourceware.cygnus.com 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]

Re: PATCH: minor hppa disasm cleanup


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

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