This is the mail archive of the binutils@sources.redhat.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]
Other format: [Raw text]

[committed] Fix frv.cpu entry for IACC multiply/accumulate insns


The IACC multiply/accumulate insns can issue to I0 or I1
(unlike normal mutiplications, which can only issue to I0).

Patch tested on frv-elf, approved off-line by Dave.

Richard


cpu/
	* frv.cpu (UNIT): Add IACC.
	(iacc-multiply-r-r): Use it.
	* frv.opc (fr400_unit_mapping): Add entry for IACC.
	(fr500_unit_mapping, fr550_unit_mapping): Likewise.

opcodes/
	* frv-desc.h: Regenerate.
	* frv-desc.c: Regenerate.
	* frv-opc.c: Regenerate.

Index: cpu/frv.cpu
===================================================================
RCS file: /cvs/src/src/cpu/frv.cpu,v
retrieving revision 1.15
diff -u -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.15 frv.cpu
--- cpu/frv.cpu	10 Oct 2003 19:29:38 -0000	1.15
+++ cpu/frv.cpu	14 Jan 2004 10:02:47 -0000
@@ -1,6 +1,6 @@
 ; Fujitsu FRV opcode support, for GNU Binutils.  -*- Scheme -*-
 ;
-; Copyright 2000, 2001, 2003 Free Software Foundation, Inc.
+; Copyright 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
 ;
 ; Contributed by Red Hat Inc; developed under contract from Fujitsu.
 ;
@@ -1388,6 +1388,7 @@ (define-attr
 	  B0 B1 B01
 	  C
 	  MULT-DIV ; multiply/division slotted differently on different machines
+	  IACC     ; iacc multiply     slotted differently on different machines
 	  LOAD     ; loads             slotted differently on different machines
 	  STORE    ; store             slotted differently on different machines
 	  SCAN     ; scan, scani       slotted differently on different machines
@@ -3118,7 +3119,7 @@ (define-pmacro (iacc-sub value) 
 (define-pmacro (iacc-multiply-r-r name operation op ope comment)
   (dni name
        (comment)
-       ((UNIT MULT-DIV) (FR400-MAJOR I-1) (MACH fr400))
+       ((UNIT IACC) (FR400-MAJOR I-1) (MACH fr400))
        (.str name "$pack $GRi,$GRj")
        (+ pack (rd-null) op GRi ope GRj)
        ((.sym iacc- operation) (mul DI (ext DI GRi) (ext DI GRj)))
Index: cpu/frv.opc
===================================================================
RCS file: /cvs/src/src/cpu/frv.opc,v
retrieving revision 1.5
diff -u -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.5 frv.opc
--- cpu/frv.opc	6 Jan 2004 19:18:37 -0000	1.5
+++ cpu/frv.opc	14 Jan 2004 10:02:48 -0000
@@ -1,6 +1,6 @@
 /* Fujitsu FRV opcode support, for GNU Binutils.  -*- C -*-
 
-   Copyright 2000, 2001, 2003 Free Software Foundation, Inc.
+   Copyright 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
 
    Contributed by Red Hat Inc; developed under contract from Fujitsu.
 
@@ -285,6 +285,7 @@ static CGEN_ATTR_VALUE_TYPE fr400_unit_m
 /* B01      */     UNIT_B0,
 /* C        */     UNIT_C,
 /* MULT-DIV */     UNIT_I0,  /* multiply and divide only in I0  unit.  */
+/* IACC     */     UNIT_I01, /* iacc multiply       in I0 or I1 unit.  */
 /* LOAD     */     UNIT_I0,  /* load                only in I0  unit.  */
 /* STORE    */     UNIT_I0,  /* store               only in I0  unit.  */
 /* SCAN     */     UNIT_I0,  /* scan                only in I0  unit.  */
@@ -315,6 +316,7 @@ static CGEN_ATTR_VALUE_TYPE fr500_unit_m
 /* B01      */     UNIT_B01,
 /* C        */     UNIT_C,
 /* MULT-DIV */     UNIT_I01, /* multiply and divide in I0 or I1 unit.  */
+/* IACC     */     UNIT_NIL, /* iacc multiply       not implemented.  */
 /* LOAD     */     UNIT_I01, /* load                in I0 or I1 unit.  */
 /* STORE    */     UNIT_I0,  /* store               only in I0 unit.  */
 /* SCAN     */     UNIT_I01, /* scan                in I0 or I1 unit.  */
@@ -345,6 +347,7 @@ static CGEN_ATTR_VALUE_TYPE fr550_unit_m
 /* B01      */     UNIT_B01,
 /* C        */     UNIT_C,
 /* MULT-DIV */     UNIT_I01,  /* multiply and divide in I0 or I1 unit.    */
+/* IACC     */     UNIT_NIL,  /* iacc multiply       not implemented.     */
 /* LOAD     */     UNIT_I01,  /* load                in I0 or I1 unit.    */
 /* STORE    */     UNIT_I01,  /* store               in I0 or I1 unit.    */
 /* SCAN     */     UNIT_IALL, /* scan                in any integer unit. */


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