This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
[committed] Fix frv.cpu entry for IACC multiply/accumulate insns
- From: Richard Sandiford <rsandifo at redhat dot com>
- To: binutils at sources dot redhat dot com
- Date: Wed, 14 Jan 2004 10:08:58 +0000
- Subject: [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. */