PATCH: minor hppa disasm cleanup
Jeffrey A Law
law@cygnus.com
Wed Jul 28 03:42:00 GMT 1999
In message <376802F6.B6FBAE0F@americasm01.nt.com>you write:
> 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 2
> 5
> > > 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 wh
> ich
> > 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.
Now that we've fixed up xmpyu, fmpyfadd, & fmpynfadd I installed the
patch mentioned above.
Thanks,
jeff
More information about the Binutils
mailing list