This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: gas for itanium: ia64-ic.tbl: dependency bug due to error in the itanium specification
- From: Jim Wilson <wilson at specifix dot com>
- To: Lars <sich at gmx dot de>
- Cc: bug-binutils at gnu dot org, binutils at sourceware dot org
- Date: Fri, 03 Aug 2007 11:56:02 -0700
- Subject: Re: gas for itanium: ia64-ic.tbl: dependency bug due to error in the itanium specification
- References: <46B1CB7E.8010605@gmx.de>
On Thu, 2007-08-02 at 14:18 +0200, Lars wrote:
> in the group 'fp-non-arith', xma is listed, but not xmpy. hence simply
> adding also xmpy there will do the trick.
This is correct. This is a bug in the Intel documentation. HJ, can you
report this internally within Intel to get the docs fixed?
Additionally, I noticed that the class pr-readers-nobr-nomovpr contains
fp-non-arith in addition to xma and xmpy which is redundant. The xma
and xmpy could be deleted here. This is a harmless error though.
I wrote a patch to fix gas. I just fixed the fp-non-arith problem, I
didn't bother with the other one as it doesn't matter. With this patch,
I now get the following objdump -d output for the assembled testcase,
which is correct.
0: 0f 30 3c 00 e1 18 [MMF] setf.sig f6=r15
6: 70 80 00 c2 31 00 setf.sig f7=r16
c: 00 00 04 00 nop.f 0x0;;
10: 0d 00 00 00 01 00 [MFI] nop.m 0x0
16: 50 00 18 0e 74 00 xmpy.l f5=f6,f7
1c: 00 00 04 00 nop.i 0x0;;
20: 01 70 14 00 e1 10 [MII] getf.sig r14=f5
26: 00 00 00 02 00 00 nop.i 0x0
2c: 00 00 04 00 nop.i 0x0;;
When regenerating ia64-asmtab.c, I noticed that a newline was
accidentally deleted when the copyright messages were updated, so I
included that in my patch too.
The patch was tested with make check on an x86_64-linux host and checked
in.
--
Jim Wilson, GNU Tools Support, http://www.specifix.com
2007-08-03 James E. Wilson <wilson@specifix.com>
* ia64-gen.c: (main): Add missing newline to copyright message.
* ia64-ic.tbl (fp-non-arith): Add xmpy.
* ia64-asmtab.c: Regenerate.
Index: ia64-gen.c
===================================================================
RCS file: /cvs/src/src/opcodes/ia64-gen.c,v
retrieving revision 1.21
diff -p -r1.21 ia64-gen.c
*** ia64-gen.c 5 Jul 2007 09:49:01 -0000 1.21
--- ia64-gen.c 3 Aug 2007 18:45:25 -0000
*************** main (int argc, char **argv)
*** 2872,2878 ****
You should have received a copy of the GNU General Public License\n\
along with this program; see the file COPYING. If not, write to the\n\
Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA\n\
! 02110-1301, USA. */");
print_string_table ();
print_dependency_table ();
--- 2872,2878 ----
You should have received a copy of the GNU General Public License\n\
along with this program; see the file COPYING. If not, write to the\n\
Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA\n\
! 02110-1301, USA. */\n");
print_string_table ();
print_dependency_table ();
Index: ia64-ic.tbl
===================================================================
RCS file: /cvs/src/src/opcodes/ia64-ic.tbl,v
retrieving revision 1.9
diff -p -r1.9 ia64-ic.tbl
*** ia64-ic.tbl 23 Feb 2006 00:17:24 -0000 1.9
--- ia64-ic.tbl 3 Aug 2007 18:45:25 -0000
*************** fp-arith-s0; IC:fp-arith[Field(sf)==s0]
*** 15,21 ****
fp-arith-s1; IC:fp-arith[Field(sf)==s1]
fp-arith-s2; IC:fp-arith[Field(sf)==s2]
fp-arith-s3; IC:fp-arith[Field(sf)==s3]
! fp-non-arith; fabs, fand, fandcm, fclass, fcvt.xf, fmerge, fmix, fneg, fnegabs, for, fpabs, fpmerge, fpack, fpneg, fpnegabs, fselect, fswap, fsxt, fxor, xma
fpcmp-s0; fpcmp[Field(sf)==s0]
fpcmp-s1; fpcmp[Field(sf)==s1]
fpcmp-s2; fpcmp[Field(sf)==s2]
--- 15,21 ----
fp-arith-s1; IC:fp-arith[Field(sf)==s1]
fp-arith-s2; IC:fp-arith[Field(sf)==s2]
fp-arith-s3; IC:fp-arith[Field(sf)==s3]
! fp-non-arith; fabs, fand, fandcm, fclass, fcvt.xf, fmerge, fmix, fneg, fnegabs, for, fpabs, fpmerge, fpack, fpneg, fpnegabs, fselect, fswap, fsxt, fxor, xma, xmpy
fpcmp-s0; fpcmp[Field(sf)==s0]
fpcmp-s1; fpcmp[Field(sf)==s1]
fpcmp-s2; fpcmp[Field(sf)==s2]