diff options
Diffstat (limited to 'cpu')
-rw-r--r-- | cpu/ChangeLog | 11 | ||||
-rw-r--r-- | cpu/frv.cpu | 38 | ||||
-rw-r--r-- | cpu/frv.opc | 2 |
3 files changed, 31 insertions, 20 deletions
diff --git a/cpu/ChangeLog b/cpu/ChangeLog index 942f834..33ef398 100644 --- a/cpu/ChangeLog +++ b/cpu/ChangeLog @@ -1,5 +1,16 @@ 2004-03-01 Richard Sandiford <rsandifo@redhat.com> + * frv.cpu (nsdiv, nudiv, nsdivi, nudivi): Remove fr400 profiling unit. + (scutss): Change unit to I0. + (calll, callil, ccalll): Add missing FR550-MAJOR and profile unit. + (mqsaths): Fix FR400-MAJOR categorization. + (media-quad-multiply-cross-acc, media-quad-cross-multiply-cross-acc) + (media-quad-cross-multiply-acc): Change unit from MDUALACC to FMALL. + * frv.opc (fr400_check_insn_major_constraints): Check for (M-2,M-1) + combinations. + +2004-03-01 Richard Sandiford <rsandifo@redhat.com> + * frv.cpu (r-store, r-store-dual, r-store-quad): Delete. (rstb, rsth, rst, rstd, rstq): Delete. (rstbf, rsthf, rstf, rstdf, rstqf): Delete. diff --git a/cpu/frv.cpu b/cpu/frv.cpu index 238575f..77254ed 100644 --- a/cpu/frv.cpu +++ b/cpu/frv.cpu @@ -3032,8 +3032,7 @@ (c-call VOID "@cpu@_signed_integer_divide" GRi GRj (index-of GRk) 1) (clobber GRk)) - ((fr400 (unit u-idiv)) - (fr500 (unit u-idiv)) (fr550 (unit u-idiv))) + ((fr500 (unit u-idiv)) (fr550 (unit u-idiv))) ) (dni udiv @@ -3059,8 +3058,7 @@ (c-call VOID "@cpu@_unsigned_integer_divide" GRi GRj (index-of GRk) 1) (clobber GRk)) - ((fr400 (unit u-idiv)) - (fr500 (unit u-idiv)) (fr550 (unit u-idiv))) + ((fr500 (unit u-idiv)) (fr550 (unit u-idiv))) ) ; Multiplication @@ -3158,7 +3156,7 @@ (dni scutss "Integer accumulator cut with saturation" - ((UNIT IALL) (FR400-MAJOR I-1) (MACH fr400)) + ((UNIT I0) (FR400-MAJOR I-1) (MACH fr400)) "scutss$pack $GRj,$GRk" (+ pack GRk OP_46 (rs-null) OPE1_04 GRj) (set GRk (c-call SI "@cpu@_iacc_cut" (reg h-iacc0 0) GRj)) @@ -3562,8 +3560,7 @@ (c-call VOID "@cpu@_signed_integer_divide" GRi s12 (index-of GRk) 1) (clobber GRk)) - ((fr400 (unit u-idiv)) - (fr500 (unit u-idiv)) (fr550 (unit u-idiv))) + ((fr500 (unit u-idiv)) (fr550 (unit u-idiv))) ) (dni udivi @@ -3589,8 +3586,7 @@ (c-call VOID "@cpu@_unsigned_integer_divide" GRi s12 (index-of GRk) 1) (clobber GRk)) - ((fr400 (unit u-idiv)) - (fr500 (unit u-idiv)) (fr550 (unit u-idiv))) + ((fr500 (unit u-idiv)) (fr550 (unit u-idiv))) ) (define-pmacro (multiply-r-simm name signop op comment) @@ -5537,12 +5533,12 @@ (dni calll "call and link" - ((UNIT I0) (FR500-MAJOR I-5) (FR400-MAJOR I-5)) + ((UNIT I0) (FR500-MAJOR I-5) (FR550-MAJOR I-6) (FR400-MAJOR I-5)) "calll$pack @($GRi,$GRj)" (+ pack (misc-null-1) (LI-on) OP_0C GRi (misc-null-2) GRj) (jump-and-link-semantics GRi GRj LI) ((fr400 (unit u-branch)) - (fr500 (unit u-branch))) + (fr500 (unit u-branch)) (fr550 (unit u-branch))) ) (dni jmpil @@ -5557,12 +5553,12 @@ (dni callil "call immediate and link" - ((UNIT I0) (FR500-MAJOR I-5) (FR400-MAJOR I-5)) + ((UNIT I0) (FR500-MAJOR I-5) (FR550-MAJOR I-6) (FR400-MAJOR I-5)) "callil$pack @($GRi,$s12)" (+ pack (misc-null-1) (LI-on) OP_0D GRi s12) (jump-and-link-semantics GRi s12 LI) ((fr400 (unit u-branch)) - (fr500 (unit u-branch))) + (fr500 (unit u-branch)) (fr550 (unit u-branch))) ) (dni call @@ -6084,7 +6080,8 @@ (dni cjmpl "conditional jump and link" - ((UNIT I0) (FR500-MAJOR I-5) (FR550-MAJOR I-6) (FR400-MAJOR I-5) CONDITIONAL) + ((UNIT I0) (FR500-MAJOR I-5) (FR550-MAJOR I-6) + (FR400-MAJOR I-5) CONDITIONAL) "cjmpl$pack @($GRi,$GRj),$CCi,$cond" (+ pack (misc-null-1) (LI-off) OP_6A GRi CCi cond OPE4_2 GRj) (if (eq CCi (or cond 2)) @@ -6095,13 +6092,14 @@ (dni ccalll "conditional call and link" - ((UNIT I0) (FR500-MAJOR I-5) (FR400-MAJOR I-5) CONDITIONAL) + ((UNIT I0) (FR500-MAJOR I-5) (FR550-MAJOR I-6) + (FR400-MAJOR I-5) CONDITIONAL) "ccalll$pack @($GRi,$GRj),$CCi,$cond" (+ pack (misc-null-1) (LI-on) OP_6A GRi CCi cond OPE4_2 GRj) (if (eq CCi (or cond 2)) (jump-and-link-semantics GRi GRj LI)) ((fr400 (unit u-branch)) - (fr500 (unit u-branch))) + (fr500 (unit u-branch)) (fr550 (unit u-branch))) ) (define-pmacro (cache-invalidate name cache all op ope profile comment) @@ -7379,7 +7377,7 @@ (dni mqsaths "Media quad saturation signed" - ((UNIT FMALL) (MACH fr400,fr550) (FR550-MAJOR M-2) (FR400-MAJOR M-1)) + ((UNIT FMALL) (MACH fr400,fr550) (FR550-MAJOR M-2) (FR400-MAJOR M-2)) "mqsaths$pack $FRintieven,$FRintjeven,$FRintkeven" (+ pack FRintkeven OP_78 FRintieven OPE1_0F FRintjeven) (if (orif (register-unaligned FRintieven 2) @@ -8060,7 +8058,7 @@ name mode conv addop rhw res max min op ope comment) (dni name (comment) - ((UNIT MDUALACC) (MACH fr400,fr550) (FR550-MAJOR M-4) (FR400-MAJOR M-2)) + ((UNIT FMALL) (MACH fr400,fr550) (FR550-MAJOR M-4) (FR400-MAJOR M-2)) (.str name "$pack $FRintieven,$FRintjeven,$" res) (+ pack res op FRintieven ope FRintjeven) (media-quad-multiply-cross-acc-semantics 1 mode conv addop rhw res @@ -8110,7 +8108,7 @@ name mode conv addop rhw res max min op ope comment) (dni name (comment) - ((UNIT MDUALACC) (MACH fr400,fr550) (FR550-MAJOR M-4) (FR400-MAJOR M-2)) + ((UNIT FMALL) (MACH fr400,fr550) (FR550-MAJOR M-4) (FR400-MAJOR M-2)) (.str name "$pack $FRintieven,$FRintjeven,$" res) (+ pack res op FRintieven ope FRintjeven) (media-quad-cross-multiply-cross-acc-semantics 1 mode conv addop rhw res @@ -8160,7 +8158,7 @@ name mode conv addop rhw res max min op ope comment) (dni name (comment) - ((UNIT MDUALACC) (MACH fr400,fr550) (FR550-MAJOR M-4) (FR400-MAJOR M-2)) + ((UNIT FMALL) (MACH fr400,fr550) (FR550-MAJOR M-4) (FR400-MAJOR M-2)) (.str name "$pack $FRintieven,$FRintjeven,$" res) (+ pack res op FRintieven ope FRintjeven) (media-quad-cross-multiply-acc-semantics 1 mode conv addop rhw res diff --git a/cpu/frv.opc b/cpu/frv.opc index 03c0f3e..e4b9657 100644 --- a/cpu/frv.opc +++ b/cpu/frv.opc @@ -499,6 +499,8 @@ fr400_check_insn_major_constraints ( case FR400_MAJOR_M_2: return ! find_major_in_vliw (vliw, FR400_MAJOR_M_1) && ! find_major_in_vliw (vliw, FR400_MAJOR_M_2); + case FR400_MAJOR_M_1: + return !find_major_in_vliw (vliw, FR400_MAJOR_M_2); default: break; } |