From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeffrey A Law To: "Jerry Quinn" Cc: binutils@sourceware.cygnus.com Subject: Re: PATCH: minor hppa disasm cleanup Date: Wed, 28 Jul 1999 03:42:00 -0000 Message-id: <16979.933158224@upchuck.cygnus.com> References: <376802F6.B6FBAE0F@americasm01.nt.com> X-SW-Source: 1999-07/msg00017.html 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 > > > > > > * 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