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.
This commit is contained in:
parent
f40063a5ba
commit
cb10e79a50
@ -1,3 +1,10 @@
|
|||||||
|
2004-01-14 Richard Sandiford <rsandifo@redhat.com>
|
||||||
|
|
||||||
|
* 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.
|
||||||
|
|
||||||
2004-01-06 Alexandre Oliva <aoliva@redhat.com>
|
2004-01-06 Alexandre Oliva <aoliva@redhat.com>
|
||||||
|
|
||||||
2003-12-19 Alexandre Oliva <aoliva@redhat.com>
|
2003-12-19 Alexandre Oliva <aoliva@redhat.com>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
; Fujitsu FRV opcode support, for GNU Binutils. -*- Scheme -*-
|
; 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.
|
; Contributed by Red Hat Inc; developed under contract from Fujitsu.
|
||||||
;
|
;
|
||||||
@ -1388,6 +1388,7 @@
|
|||||||
B0 B1 B01
|
B0 B1 B01
|
||||||
C
|
C
|
||||||
MULT-DIV ; multiply/division slotted differently on different machines
|
MULT-DIV ; multiply/division slotted differently on different machines
|
||||||
|
IACC ; iacc multiply slotted differently on different machines
|
||||||
LOAD ; loads slotted differently on different machines
|
LOAD ; loads slotted differently on different machines
|
||||||
STORE ; store slotted differently on different machines
|
STORE ; store slotted differently on different machines
|
||||||
SCAN ; scan, scani slotted differently on different machines
|
SCAN ; scan, scani slotted differently on different machines
|
||||||
@ -3118,7 +3119,7 @@
|
|||||||
(define-pmacro (iacc-multiply-r-r name operation op ope comment)
|
(define-pmacro (iacc-multiply-r-r name operation op ope comment)
|
||||||
(dni name
|
(dni name
|
||||||
(comment)
|
(comment)
|
||||||
((UNIT MULT-DIV) (FR400-MAJOR I-1) (MACH fr400))
|
((UNIT IACC) (FR400-MAJOR I-1) (MACH fr400))
|
||||||
(.str name "$pack $GRi,$GRj")
|
(.str name "$pack $GRi,$GRj")
|
||||||
(+ pack (rd-null) op GRi ope GRj)
|
(+ pack (rd-null) op GRi ope GRj)
|
||||||
((.sym iacc- operation) (mul DI (ext DI GRi) (ext DI GRj)))
|
((.sym iacc- operation) (mul DI (ext DI GRi) (ext DI GRj)))
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* Fujitsu FRV opcode support, for GNU Binutils. -*- C -*-
|
/* 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.
|
Contributed by Red Hat Inc; developed under contract from Fujitsu.
|
||||||
|
|
||||||
@ -285,6 +285,7 @@ static CGEN_ATTR_VALUE_TYPE fr400_unit_mapping[] =
|
|||||||
/* B01 */ UNIT_B0,
|
/* B01 */ UNIT_B0,
|
||||||
/* C */ UNIT_C,
|
/* C */ UNIT_C,
|
||||||
/* MULT-DIV */ UNIT_I0, /* multiply and divide only in I0 unit. */
|
/* 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. */
|
/* LOAD */ UNIT_I0, /* load only in I0 unit. */
|
||||||
/* STORE */ UNIT_I0, /* store only in I0 unit. */
|
/* STORE */ UNIT_I0, /* store only in I0 unit. */
|
||||||
/* SCAN */ UNIT_I0, /* scan only in I0 unit. */
|
/* SCAN */ UNIT_I0, /* scan only in I0 unit. */
|
||||||
@ -315,6 +316,7 @@ static CGEN_ATTR_VALUE_TYPE fr500_unit_mapping[] =
|
|||||||
/* B01 */ UNIT_B01,
|
/* B01 */ UNIT_B01,
|
||||||
/* C */ UNIT_C,
|
/* C */ UNIT_C,
|
||||||
/* MULT-DIV */ UNIT_I01, /* multiply and divide in I0 or I1 unit. */
|
/* 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. */
|
/* LOAD */ UNIT_I01, /* load in I0 or I1 unit. */
|
||||||
/* STORE */ UNIT_I0, /* store only in I0 unit. */
|
/* STORE */ UNIT_I0, /* store only in I0 unit. */
|
||||||
/* SCAN */ UNIT_I01, /* scan in I0 or I1 unit. */
|
/* SCAN */ UNIT_I01, /* scan in I0 or I1 unit. */
|
||||||
@ -345,6 +347,7 @@ static CGEN_ATTR_VALUE_TYPE fr550_unit_mapping[] =
|
|||||||
/* B01 */ UNIT_B01,
|
/* B01 */ UNIT_B01,
|
||||||
/* C */ UNIT_C,
|
/* C */ UNIT_C,
|
||||||
/* MULT-DIV */ UNIT_I01, /* multiply and divide in I0 or I1 unit. */
|
/* 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. */
|
/* LOAD */ UNIT_I01, /* load in I0 or I1 unit. */
|
||||||
/* STORE */ UNIT_I01, /* store in I0 or I1 unit. */
|
/* STORE */ UNIT_I01, /* store in I0 or I1 unit. */
|
||||||
/* SCAN */ UNIT_IALL, /* scan in any integer unit. */
|
/* SCAN */ UNIT_IALL, /* scan in any integer unit. */
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
2004-01-14 Richard Sandiford <rsandifo@redhat.com>
|
||||||
|
|
||||||
|
* frv-desc.h: Regenerate.
|
||||||
|
* frv-desc.c: Regenerate.
|
||||||
|
* frv-opc.c: Regenerate.
|
||||||
|
|
||||||
2004-01-13 Michael Snyder <msnyder@redhat.com>
|
2004-01-13 Michael Snyder <msnyder@redhat.com>
|
||||||
|
|
||||||
* sh-dis.c (print_insn_sh): Allocate 4 bytes for insn.
|
* sh-dis.c (print_insn_sh): Allocate 4 bytes for insn.
|
||||||
|
@ -84,6 +84,7 @@ static const CGEN_ATTR_ENTRY UNIT_attr[] =
|
|||||||
{ "B01", UNIT_B01 },
|
{ "B01", UNIT_B01 },
|
||||||
{ "C", UNIT_C },
|
{ "C", UNIT_C },
|
||||||
{ "MULT_DIV", UNIT_MULT_DIV },
|
{ "MULT_DIV", UNIT_MULT_DIV },
|
||||||
|
{ "IACC", UNIT_IACC },
|
||||||
{ "LOAD", UNIT_LOAD },
|
{ "LOAD", UNIT_LOAD },
|
||||||
{ "STORE", UNIT_STORE },
|
{ "STORE", UNIT_STORE },
|
||||||
{ "SCAN", UNIT_SCAN },
|
{ "SCAN", UNIT_SCAN },
|
||||||
@ -2397,17 +2398,17 @@ static const CGEN_IBASE frv_cgen_insn_table[MAX_INSNS] =
|
|||||||
/* smu$pack $GRi,$GRj */
|
/* smu$pack $GRi,$GRj */
|
||||||
{
|
{
|
||||||
FRV_INSN_SMU, "smu", "smu", 32,
|
FRV_INSN_SMU, "smu", "smu", 32,
|
||||||
{ 0, { (1<<MACH_FR400), UNIT_MULT_DIV, FR400_MAJOR_I_1, FR500_MAJOR_NONE, FR550_MAJOR_NONE } }
|
{ 0, { (1<<MACH_FR400), UNIT_IACC, FR400_MAJOR_I_1, FR500_MAJOR_NONE, FR550_MAJOR_NONE } }
|
||||||
},
|
},
|
||||||
/* smass$pack $GRi,$GRj */
|
/* smass$pack $GRi,$GRj */
|
||||||
{
|
{
|
||||||
FRV_INSN_SMASS, "smass", "smass", 32,
|
FRV_INSN_SMASS, "smass", "smass", 32,
|
||||||
{ 0, { (1<<MACH_FR400), UNIT_MULT_DIV, FR400_MAJOR_I_1, FR500_MAJOR_NONE, FR550_MAJOR_NONE } }
|
{ 0, { (1<<MACH_FR400), UNIT_IACC, FR400_MAJOR_I_1, FR500_MAJOR_NONE, FR550_MAJOR_NONE } }
|
||||||
},
|
},
|
||||||
/* smsss$pack $GRi,$GRj */
|
/* smsss$pack $GRi,$GRj */
|
||||||
{
|
{
|
||||||
FRV_INSN_SMSSS, "smsss", "smsss", 32,
|
FRV_INSN_SMSSS, "smsss", "smsss", 32,
|
||||||
{ 0, { (1<<MACH_FR400), UNIT_MULT_DIV, FR400_MAJOR_I_1, FR500_MAJOR_NONE, FR550_MAJOR_NONE } }
|
{ 0, { (1<<MACH_FR400), UNIT_IACC, FR400_MAJOR_I_1, FR500_MAJOR_NONE, FR550_MAJOR_NONE } }
|
||||||
},
|
},
|
||||||
/* sll$pack $GRi,$GRj,$GRk */
|
/* sll$pack $GRi,$GRj,$GRk */
|
||||||
{
|
{
|
||||||
|
@ -549,9 +549,9 @@ typedef enum unit_attr {
|
|||||||
, UNIT_I2, UNIT_I3, UNIT_IALL, UNIT_FM0
|
, UNIT_I2, UNIT_I3, UNIT_IALL, UNIT_FM0
|
||||||
, UNIT_FM1, UNIT_FM01, UNIT_FM2, UNIT_FM3
|
, UNIT_FM1, UNIT_FM01, UNIT_FM2, UNIT_FM3
|
||||||
, UNIT_FMALL, UNIT_FMLOW, UNIT_B0, UNIT_B1
|
, UNIT_FMALL, UNIT_FMLOW, UNIT_B0, UNIT_B1
|
||||||
, UNIT_B01, UNIT_C, UNIT_MULT_DIV, UNIT_LOAD
|
, UNIT_B01, UNIT_C, UNIT_MULT_DIV, UNIT_IACC
|
||||||
, UNIT_STORE, UNIT_SCAN, UNIT_DCPL, UNIT_MDUALACC
|
, UNIT_LOAD, UNIT_STORE, UNIT_SCAN, UNIT_DCPL
|
||||||
, UNIT_MCLRACC_1, UNIT_NUM_UNITS
|
, UNIT_MDUALACC, UNIT_MCLRACC_1, UNIT_NUM_UNITS
|
||||||
} UNIT_ATTR;
|
} UNIT_ATTR;
|
||||||
|
|
||||||
/* Enum declaration for fr400 major insn categories. */
|
/* Enum declaration for fr400 major insn categories. */
|
||||||
|
@ -239,6 +239,7 @@ static CGEN_ATTR_VALUE_TYPE fr400_unit_mapping[] =
|
|||||||
/* B01 */ UNIT_B0,
|
/* B01 */ UNIT_B0,
|
||||||
/* C */ UNIT_C,
|
/* C */ UNIT_C,
|
||||||
/* MULT-DIV */ UNIT_I0, /* multiply and divide only in I0 unit. */
|
/* 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. */
|
/* LOAD */ UNIT_I0, /* load only in I0 unit. */
|
||||||
/* STORE */ UNIT_I0, /* store only in I0 unit. */
|
/* STORE */ UNIT_I0, /* store only in I0 unit. */
|
||||||
/* SCAN */ UNIT_I0, /* scan only in I0 unit. */
|
/* SCAN */ UNIT_I0, /* scan only in I0 unit. */
|
||||||
@ -269,6 +270,7 @@ static CGEN_ATTR_VALUE_TYPE fr500_unit_mapping[] =
|
|||||||
/* B01 */ UNIT_B01,
|
/* B01 */ UNIT_B01,
|
||||||
/* C */ UNIT_C,
|
/* C */ UNIT_C,
|
||||||
/* MULT-DIV */ UNIT_I01, /* multiply and divide in I0 or I1 unit. */
|
/* 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. */
|
/* LOAD */ UNIT_I01, /* load in I0 or I1 unit. */
|
||||||
/* STORE */ UNIT_I0, /* store only in I0 unit. */
|
/* STORE */ UNIT_I0, /* store only in I0 unit. */
|
||||||
/* SCAN */ UNIT_I01, /* scan in I0 or I1 unit. */
|
/* SCAN */ UNIT_I01, /* scan in I0 or I1 unit. */
|
||||||
@ -299,6 +301,7 @@ static CGEN_ATTR_VALUE_TYPE fr550_unit_mapping[] =
|
|||||||
/* B01 */ UNIT_B01,
|
/* B01 */ UNIT_B01,
|
||||||
/* C */ UNIT_C,
|
/* C */ UNIT_C,
|
||||||
/* MULT-DIV */ UNIT_I01, /* multiply and divide in I0 or I1 unit. */
|
/* 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. */
|
/* LOAD */ UNIT_I01, /* load in I0 or I1 unit. */
|
||||||
/* STORE */ UNIT_I01, /* store in I0 or I1 unit. */
|
/* STORE */ UNIT_I01, /* store in I0 or I1 unit. */
|
||||||
/* SCAN */ UNIT_IALL, /* scan in any integer unit. */
|
/* SCAN */ UNIT_IALL, /* scan in any integer unit. */
|
||||||
|
Loading…
Reference in New Issue
Block a user