Add code to handle even-numbered only register operands

This commit is contained in:
Nick Clifton 2003-06-05 16:04:20 +00:00
parent e5379b03cf
commit 36c3ae2457
12 changed files with 696 additions and 366 deletions

View File

@ -1,3 +1,27 @@
2003-06-05 Nick Clifton <nickc@redhat.com>
* frv.cpu (FRintieven): New operand. An even-numbered only
version of the FRinti operand.
(FRintjeven): Likewise for FRintj.
(FRintkeven): Likewise for FRintk.
(mdcutssi, media-dual-word-rotate-r-r, mqsaths,
media-quad-arith-sat-semantics, media-quad-arith-sat,
conditional-media-quad-arith-sat, mdunpackh,
media-quad-multiply-semantics, media-quad-multiply,
conditional-media-quad-multiply, media-quad-complex-i,
media-quad-multiply-acc-semantics, media-quad-multiply-acc,
conditional-media-quad-multiply-acc, munpackh,
media-quad-multiply-cross-acc-semantics, mdpackh,
media-quad-multiply-cross-acc, mbtoh-semantics,
media-quad-cross-multiply-cross-acc-semantics,
media-quad-cross-multiply-cross-acc, mbtoh, mhtob-semantics,
media-quad-cross-multiply-acc-semantics, cmbtoh,
media-quad-cross-multiply-acc, media-quad-complex, mhtob,
media-expand-halfword-to-double-semantics, mexpdhd, cmexpdhd,
cmhtob): Use new operands.
* frv.opc (CGEN_VERBOSE_ASSEMBLER_ERRORS): Define.
(parse_even_register): New function.
2003-06-03 Nick Clifton <nickc@redhat.com>
* frv.cpu (media-dual-word-rotate-r-r): Use a signed 6-bit

View File

@ -2159,9 +2159,9 @@
(dnmop CPRdoublek "destination register" ((MACH frv)) h-cpr_double f-CPRk DI)
; floating point operands
(dnmop FRinti "source register 1" () h-fr_int f-FRi SI)
(dnmop FRintj "source register 2" () h-fr_int f-FRj SI)
(dnmop FRintk "target register" () h-fr_int f-FRk SI)
(dnmop FRinti "source register 1" () h-fr_int f-FRi SI)
(dnmop FRintj "source register 2" () h-fr_int f-FRj SI)
(dnmop FRintk "target register" () h-fr_int f-FRk SI)
(dnmop FRi "source register 1" () h-fr f-FRi SF)
(dnmop FRj "source register 2" () h-fr f-FRj SF)
(dnmop FRk "destination register" () h-fr f-FRk SF)
@ -2209,6 +2209,36 @@
(dnop label16 "18 bit pc relative address" () h-iaddr f-label16)
(dnop label24 "26 bit pc relative address" () h-iaddr f-label24)
(define-operand
(name FRintieven)
(comment "(even) source register 1")
(attrs)
(type h-fr_int)
(index f-FRi)
(mode SI)
(handlers (parse "even_register"))
)
(define-operand
(name FRintjeven)
(comment "(even) source register 2")
(attrs)
(type h-fr_int)
(index f-FRj)
(mode SI)
(handlers (parse "even_register"))
)
(define-operand
(name FRintkeven)
(comment "(even) target register")
(attrs)
(type h-fr_int)
(index f-FRk)
(mode SI)
(handlers (parse "even_register"))
)
(define-operand
(name d12)
(comment "12 bit signed immediate")
@ -6594,18 +6624,19 @@
(dni mdcutssi
"Media dual cut with signed saturation"
((UNIT FM0) (MACH fr400) (FR400-MAJOR M-2))
"mdcutssi$pack $ACC40Si,$s6,$FRintk"
(+ pack FRintk OP_78 ACC40Si OPE1_0E s6)
"mdcutssi$pack $ACC40Si,$s6,$FRintkeven"
(+ pack FRintkeven OP_78 ACC40Si OPE1_0E s6)
(if (register-unaligned ACC40Si 2)
(c-call VOID "@cpu@_media_acc_not_aligned")
(if (register-unaligned FRintk 2)
(if (register-unaligned FRintkeven 2)
(c-call VOID "@cpu@_media_register_not_aligned")
(sequence ()
(set FRintk (c-call SI "@cpu@_media_cut_ss" ACC40Si s6))
(set (nextreg h-fr_int FRintk 1)
(set FRintkeven (c-call SI "@cpu@_media_cut_ss" ACC40Si s6))
(set (nextreg h-fr_int FRintkeven 1)
(c-call SI "@cpu@_media_cut_ss"
(nextreg h-acc40S ACC40Si 1) s6)))))
((fr400 (unit u-media-4-acc-dual)))
((fr400 (unit u-media-4-acc-dual
(out FRintk FRintkeven))))
)
; The (add (xxxx) (mul arg 0)) is a hack to get a reference to arg generated
@ -6660,17 +6691,19 @@
(dni name
(comment)
((UNIT FM0) (MACH fr400) (FR400-MAJOR M-2))
(.str name "$pack $FRinti,$s6,$FRintk")
(+ pack FRintk op FRinti ope s6)
(if (orif (register-unaligned FRinti 2)
(register-unaligned FRintk 2))
(.str name "$pack $FRintieven,$s6,$FRintkeven")
(+ pack FRintkeven op FRintieven ope s6)
(if (orif (register-unaligned FRintieven 2)
(register-unaligned FRintkeven 2))
(c-call VOID "@cpu@_media_register_not_aligned")
(sequence ()
(set FRintk (operation FRinti (and s6 #x1f)))
(set (nextreg h-fr_int FRintk 1)
(operation (nextreg h-fr_int FRinti 1)
(set FRintkeven (operation FRintieven (and s6 #x1f)))
(set (nextreg h-fr_int FRintkeven 1)
(operation (nextreg h-fr_int FRintieven 1)
(and s6 #x1f)))))
((fr400 (unit u-media-3-quad)))
((fr400 (unit u-media-3-quad
(in FRinti FRintieven)
(out FRintk FRintkeven))))
)
)
@ -6738,22 +6771,25 @@
(dni mqsaths
"Media quad saturation signed"
((UNIT FM01) (MACH fr400) (FR400-MAJOR M-1))
"mqsaths$pack $FRinti,$FRintj,$FRintk"
(+ pack FRintk OP_78 FRinti OPE1_0F FRintj)
(if (orif (register-unaligned FRinti 2)
(orif (register-unaligned FRintj 2)
(register-unaligned FRintk 2)))
"mqsaths$pack $FRintieven,$FRintjeven,$FRintkeven"
(+ pack FRintkeven OP_78 FRintieven OPE1_0F FRintjeven)
(if (orif (register-unaligned FRintieven 2)
(orif (register-unaligned FRintjeven 2)
(register-unaligned FRintkeven 2)))
(c-call VOID "@cpu@_media_register_not_aligned")
(sequence ((HI argihi) (HI argilo) (HI argjhi) (HI argjlo))
; hack to get FRintk referenced as a target for profiling
(set FRintk (c-raw-call SI "frv_ref_SI" FRintk))
(extract-hilo FRinti 0 FRintj 0 argihi argilo argjhi argjlo)
(saturate argihi argjhi (inv argjhi) (halfword hi FRintk 0))
(saturate argilo argjlo (inv argjlo) (halfword lo FRintk 0))
(extract-hilo FRinti 1 FRintj 1 argihi argilo argjhi argjlo)
(saturate argihi argjhi (inv argjhi) (halfword hi FRintk 1))
(saturate argilo argjlo (inv argjlo) (halfword lo FRintk 1))))
((fr400 (unit u-media-1-quad)))
; hack to get FRintkeven referenced as a target for profiling
(set FRintkeven (c-raw-call SI "frv_ref_SI" FRintkeven))
(extract-hilo FRintieven 0 FRintjeven 0 argihi argilo argjhi argjlo)
(saturate argihi argjhi (inv argjhi) (halfword hi FRintkeven 0))
(saturate argilo argjlo (inv argjlo) (halfword lo FRintkeven 0))
(extract-hilo FRintieven 1 FRintjeven 1 argihi argilo argjhi argjlo)
(saturate argihi argjhi (inv argjhi) (halfword hi FRintkeven 1))
(saturate argilo argjlo (inv argjlo) (halfword lo FRintkeven 1))))
((fr400 (unit u-media-1-quad
(in FRinti FRintieven)
(in FRintj FRintjeven)
(out FRintk FRintkeven))))
)
(define-pmacro (saturate-unsigned arg max result)
@ -6894,29 +6930,29 @@
(conditional-media-dual-arith-sat cmsubhus sub UHI 65535 0 OP_71 OPE4_3 "Conditional Media dual sub unsigned with saturation")
(define-pmacro (media-quad-arith-sat-semantics cond operation mode max min)
(if (orif (register-unaligned FRinti 2)
(orif (register-unaligned FRintj 2)
(register-unaligned FRintk 2)))
(if (orif (register-unaligned FRintieven 2)
(orif (register-unaligned FRintjeven 2)
(register-unaligned FRintkeven 2)))
(c-call VOID "@cpu@_media_register_not_aligned")
(if cond
(sequence ((mode argihi) (mode argilo) (mode argjhi) (mode argjlo))
; hack to get FRintk referenced as a target for profiling
(set FRintk (c-raw-call SI "frv_ref_SI" FRintk))
(extract-hilo FRinti 0 FRintj 0
; hack to get FRintkeven referenced as a target for profiling
(set FRintkeven (c-raw-call SI "frv_ref_SI" FRintkeven))
(extract-hilo FRintieven 0 FRintjeven 0
argihi argilo argjhi argjlo)
(media-arith-sat-semantics operation argihi argjhi
(halfword hi FRintk 0) mode
(halfword hi FRintkeven 0) mode
max min (msr-sie-fri-hi))
(media-arith-sat-semantics operation argilo argjlo
(halfword lo FRintk 0) mode
(halfword lo FRintkeven 0) mode
max min (msr-sie-fri-lo))
(extract-hilo FRinti 1 FRintj 1
(extract-hilo FRintieven 1 FRintjeven 1
argihi argilo argjhi argjlo)
(media-arith-sat-semantics operation argihi argjhi
(halfword hi FRintk 1) mode
(halfword hi FRintkeven 1) mode
max min (msr-sie-fri-1-hi))
(media-arith-sat-semantics operation argilo argjlo
(halfword lo FRintk 1) mode
(halfword lo FRintkeven 1) mode
max min (msr-sie-fri-1-lo)))))
)
@ -6924,11 +6960,17 @@
(dni name
(comment)
((UNIT FM01) (FR500-MAJOR M-1) (FR400-MAJOR M-2))
(.str name "$pack $FRinti,$FRintj,$FRintk")
(+ pack FRintk op FRinti ope FRintj)
(.str name "$pack $FRintieven,$FRintjeven,$FRintkeven")
(+ pack FRintkeven op FRintieven ope FRintjeven)
(media-quad-arith-sat-semantics 1 operation mode max min)
((fr400 (unit u-media-1-quad))
(fr500 (unit u-media-quad-arith)))
((fr400 (unit u-media-1-quad
(in FRinti FRintieven)
(in FRintj FRintjeven)
(out FRintk Frintkeven)))
(fr500 (unit u-media-quad-arith
(in FRinti FRintieven)
(in FRintj FRintjeven)
(out FRintk Frintkeven))))
)
)
@ -6943,12 +6985,18 @@
(dni name
(comment)
((UNIT FM01) (FR500-MAJOR M-1) (FR400-MAJOR M-2) CONDITIONAL)
(.str name "$pack $FRinti,$FRintj,$FRintk,$CCi,$cond")
(+ pack FRintk op FRinti CCi cond ope FRintj)
(.str name "$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond")
(+ pack FRintkeven op FRintieven CCi cond ope FRintjeven)
(media-quad-arith-sat-semantics (eq CCi (or cond 2))
operation mode max min)
((fr400 (unit u-media-1-quad))
(fr500 (unit u-media-quad-arith)))
((fr400 (unit u-media-1-quad
(in FRinti FRintieven)
(in FRintj FRintjeven)
(out FRintk Frintkeven)))
(fr500 (unit u-media-quad-arith
(in FRinti FRintieven)
(in FRintj FRintjeven)
(out FRintk Frintkeven))))
)
)
@ -7131,18 +7179,18 @@
(define-pmacro (media-quad-multiply-semantics cond mode conv rhs1 rhs2)
(if (register-unaligned ACC40Sk 4)
(c-call VOID "@cpu@_media_acc_not_aligned")
(if (orif (register-unaligned FRinti 2)
(register-unaligned FRintj 2))
(if (orif (register-unaligned FRintieven 2)
(register-unaligned FRintjeven 2))
(c-call VOID "@cpu@_media_register_not_aligned")
(if cond
(sequence ((mode argihi) (mode argilo)
(mode argjhi) (mode argjlo))
(extract-hilo FRinti 0 FRintj 0
(extract-hilo FRintieven 0 FRintjeven 0
argihi argilo argjhi argjlo)
(media-multiply-semantics conv argihi rhs1 ACC40Sk)
(media-multiply-semantics conv argilo rhs2
(nextreg h-acc40S ACC40Sk 1))
(extract-hilo FRinti 1 FRintj 1
(extract-hilo FRintieven 1 FRintjeven 1
argihi argilo argjhi argjlo)
(media-multiply-semantics conv argihi rhs1
(nextreg h-acc40S ACC40Sk 2))
@ -7154,11 +7202,15 @@
(dni name
(comment)
((UNIT FM01) (FR500-MAJOR M-4) (FR400-MAJOR M-2) PRESERVE-OVF)
(.str name "$pack $FRinti,$FRintj,$ACC40Sk")
(+ pack ACC40Sk op FRinti ope FRintj)
(.str name "$pack $FRintieven,$FRintjeven,$ACC40Sk")
(+ pack ACC40Sk op FRintieven ope FRintjeven)
(media-quad-multiply-semantics 1 mode conv rhs1 rhs2)
((fr400 (unit u-media-2-quad))
(fr500 (unit u-media-quad-mul)))
((fr400 (unit u-media-2-quad
(in FRinti FRintieven)
(in FRintj FRintjeven)))
(fr500 (unit u-media-quad-mul
(in FRinti FRintieven)
(in FRintj FRintjeven))))
)
)
@ -7174,11 +7226,15 @@
(comment)
((UNIT FM01) (FR500-MAJOR M-4) (FR400-MAJOR M-2)
PRESERVE-OVF CONDITIONAL)
(.str name "$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond")
(+ pack ACC40Sk op FRinti CCi cond ope FRintj)
(.str name "$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond")
(+ pack ACC40Sk op FRintieven CCi cond ope FRintjeven)
(media-quad-multiply-semantics (eq CCi (or cond 2)) mode conv rhs1 rhs2)
((fr400 (unit u-media-2-quad))
(fr500 (unit u-media-quad-mul)))
((fr400 (unit u-media-2-quad
(in FRinti FRintieven)
(in FRintj FRintjeven)))
(fr500 (unit u-media-quad-mul
(in FRinti FRintieven)
(in FRintj FRintjeven))))
)
)
@ -7269,13 +7325,13 @@
cond mode conv addop rhw res max min)
(if (register-unaligned res 4)
(c-call VOID "@cpu@_media_acc_not_aligned")
(if (orif (register-unaligned FRinti 2)
(register-unaligned FRintj 2))
(if (orif (register-unaligned FRintieven 2)
(register-unaligned FRintjeven 2))
(c-call VOID "@cpu@_media_register_not_aligned")
(if cond
(sequence ((mode argihi) (mode argilo)
(mode argjhi) (mode argjlo))
(extract-hilo FRinti 0 FRintj 0
(extract-hilo FRintieven 0 FRintjeven 0
argihi argilo argjhi argjlo)
(media-multiply-acc-semantics conv argihi addop argjhi
res
@ -7283,7 +7339,7 @@
(media-multiply-acc-semantics conv argilo addop argjlo
(nextreg rhw res 1)
max min (msr-sie-acci-1))
(extract-hilo FRinti 1 FRintj 1
(extract-hilo FRintieven 1 FRintjeven 1
argihi argilo argjhi argjlo)
(media-multiply-acc-semantics conv argihi addop argjhi
(nextreg rhw res 2)
@ -7299,11 +7355,15 @@
(dni name
(comment)
((UNIT FM01) (FR500-MAJOR M-4) (FR400-MAJOR M-2))
(.str name "$pack $FRinti,$FRintj,$" res)
(+ pack res op FRinti ope FRintj)
(.str name "$pack $FRintieven,$FRintjeven,$" res)
(+ pack res op FRintieven ope FRintjeven)
(media-quad-multiply-acc-semantics 1 mode conv addop rhw res max min)
((fr400 (unit u-media-2-quad))
(fr500 (unit u-media-quad-mul)))
((fr400 (unit u-media-2-quad
(in FRinti FRintieven)
(in FRintj FRintjeven)))
(fr500 (unit u-media-quad-mul
(in FRinti FRintieven)
(in FRintj FRintjeven))))
)
)
@ -7322,12 +7382,16 @@
(dni name
(comment)
((UNIT FM01) (FR500-MAJOR M-4) (FR400-MAJOR M-2) CONDITIONAL)
(.str name "$pack $FRinti,$FRintj,$" res ",$CCi,$cond")
(+ pack res op FRinti CCi cond ope FRintj)
(.str name "$pack $FRintieven,$FRintjeven,$" res ",$CCi,$cond")
(+ pack res op FRintieven CCi cond ope FRintjeven)
(media-quad-multiply-acc-semantics (eq CCi (or cond 2))
mode conv addop rhw res max min)
((fr400 (unit u-media-2-quad))
(fr500 (unit u-media-quad-mul)))
((fr400 (unit u-media-2-quad
(in FRinti FRintieven)
(in FRintj FRintjeven)))
(fr500 (unit u-media-quad-mul
(in FRinti FRintieven)
(in FRintj FRintjeven))))
)
)
@ -7345,13 +7409,13 @@
cond mode conv addop rhw res max min)
(if (register-unaligned res 4)
(c-call VOID "@cpu@_media_acc_not_aligned")
(if (orif (register-unaligned FRinti 2)
(register-unaligned FRintj 2))
(if (orif (register-unaligned FRintieven 2)
(register-unaligned FRintjeven 2))
(c-call VOID "@cpu@_media_register_not_aligned")
(if cond
(sequence ((mode argihi) (mode argilo)
(mode argjhi) (mode argjlo))
(extract-hilo FRinti 0 FRintj 0
(extract-hilo FRintieven 0 FRintjeven 0
argihi argilo argjhi argjlo)
(media-multiply-acc-semantics conv argihi addop argjhi
(nextreg rhw res 2)
@ -7359,7 +7423,7 @@
(media-multiply-acc-semantics conv argilo addop argjlo
(nextreg rhw res 3)
max min (msr-sie-acci-3))
(extract-hilo FRinti 1 FRintj 1
(extract-hilo FRintieven 1 FRintjeven 1
argihi argilo argjhi argjlo)
(media-multiply-acc-semantics conv argihi addop argjhi
res
@ -7375,11 +7439,13 @@
(dni name
(comment)
((UNIT FM0) (MACH fr400) (FR400-MAJOR M-2))
(.str name "$pack $FRinti,$FRintj,$" res)
(+ pack res op FRinti ope FRintj)
(.str name "$pack $FRintieven,$FRintjeven,$" res)
(+ pack res op FRintieven ope FRintjeven)
(media-quad-multiply-cross-acc-semantics 1 mode conv addop rhw res
max min)
((fr400 (unit u-media-2-quad)))
((fr400 (unit u-media-2-quad
(in FRinti FRintieven)
(in FRintj FRintjeven))))
)
)
@ -7392,13 +7458,13 @@
cond mode conv addop rhw res max min)
(if (register-unaligned res 4)
(c-call VOID "@cpu@_media_acc_not_aligned")
(if (orif (register-unaligned FRinti 2)
(register-unaligned FRintj 2))
(if (orif (register-unaligned FRintieven 2)
(register-unaligned FRintjeven 2))
(c-call VOID "@cpu@_media_register_not_aligned")
(if cond
(sequence ((mode argihi) (mode argilo)
(mode argjhi) (mode argjlo))
(extract-hilo FRinti 0 FRintj 0
(extract-hilo FRintieven 0 FRintjeven 0
argihi argilo argjhi argjlo)
(media-multiply-acc-semantics conv argihi addop argjlo
(nextreg rhw res 2)
@ -7406,7 +7472,7 @@
(media-multiply-acc-semantics conv argilo addop argjhi
(nextreg rhw res 3)
max min (msr-sie-acci-3))
(extract-hilo FRinti 1 FRintj 1
(extract-hilo FRintieven 1 FRintjeven 1
argihi argilo argjhi argjlo)
(media-multiply-acc-semantics conv argihi addop argjlo
res
@ -7422,11 +7488,13 @@
(dni name
(comment)
((UNIT FM0) (MACH fr400) (FR400-MAJOR M-2))
(.str name "$pack $FRinti,$FRintj,$" res)
(+ pack res op FRinti ope FRintj)
(.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
max min)
((fr400 (unit u-media-2-quad)))
((fr400 (unit u-media-2-quad
(in FRinti FRintieven)
(in FRintj FRintjeven))))
)
)
@ -7439,13 +7507,13 @@
cond mode conv addop rhw res max min)
(if (register-unaligned res 4)
(c-call VOID "@cpu@_media_acc_not_aligned")
(if (orif (register-unaligned FRinti 2)
(register-unaligned FRintj 2))
(if (orif (register-unaligned FRintieven 2)
(register-unaligned FRintjeven 2))
(c-call VOID "@cpu@_media_register_not_aligned")
(if cond
(sequence ((mode argihi) (mode argilo)
(mode argjhi) (mode argjlo))
(extract-hilo FRinti 0 FRintj 0
(extract-hilo FRintieven 0 FRintjeven 0
argihi argilo argjhi argjlo)
(media-multiply-acc-semantics conv argihi addop argjlo
res
@ -7453,7 +7521,7 @@
(media-multiply-acc-semantics conv argilo addop argjhi
(nextreg rhw res 1)
max min (msr-sie-acci-1))
(extract-hilo FRinti 1 FRintj 1
(extract-hilo FRintieven 1 FRintjeven 1
argihi argilo argjhi argjlo)
(media-multiply-acc-semantics conv argihi addop argjlo
(nextreg rhw res 2)
@ -7469,11 +7537,13 @@
(dni name
(comment)
((UNIT FM0) (MACH fr400) (FR400-MAJOR M-2))
(.str name "$pack $FRinti,$FRintj,$" res)
(+ pack res op FRinti ope FRintj)
(.str name "$pack $FRintieven,$FRintjeven,$" res)
(+ pack res op FRintieven ope FRintjeven)
(media-quad-cross-multiply-acc-semantics 1 mode conv addop rhw res
max min)
((fr400 (unit u-media-2-quad)))
((fr400 (unit u-media-2-quad
(in FRinti FRintieven)
(in FRintj FRintjeven))))
)
)
@ -7613,27 +7683,31 @@
(dni name
(comment)
((UNIT FM01) (FR500-MAJOR M-4) (FR400-MAJOR M-2))
(.str name "$pack $FRinti,$FRintj,$ACC40Sk")
(+ pack ACC40Sk op FRinti ope FRintj)
(.str name "$pack $FRintieven,$FRintjeven,$ACC40Sk")
(+ pack ACC40Sk op FRintieven ope FRintjeven)
(if (register-unaligned ACC40Sk 2)
(c-call VOID "@cpu@_media_acc_not_aligned")
(if (orif (register-unaligned FRinti 2)
(register-unaligned FRintj 2))
(if (orif (register-unaligned FRintieven 2)
(register-unaligned FRintjeven 2))
(c-call VOID "@cpu@_media_register_not_aligned")
(sequence ((mode argihi) (mode argilo)
(mode argjhi) (mode argjlo))
(extract-hilo FRinti 0 FRintj 0
(extract-hilo FRintieven 0 FRintjeven 0
argihi argilo argjhi argjlo)
(media-complex-semantics conv argihi rhs1 argilo rhs2
ACC40Sk
max min (msr-sie-acci))
(extract-hilo FRinti 1 FRintj 1
(extract-hilo FRintieven 1 FRintjeven 1
argihi argilo argjhi argjlo)
(media-complex-semantics conv argihi rhs1 argilo rhs2
(nextreg h-acc40S ACC40Sk 1)
max min (msr-sie-acci-1)))))
((fr400 (unit u-media-2-quad))
(fr500 (unit u-media-quad-complex)))
((fr400 (unit u-media-2-quad
(in FRinti FRintieven)
(in FRintj FRintjeven)))
(fr500 (unit u-media-quad-complex
(in FRinti FRintieven)
(in FRintj FRintjeven))))
)
)
@ -7642,27 +7716,31 @@
(dni name
(comment)
((UNIT FM01) (FR500-MAJOR M-4) (FR400-MAJOR M-2))
(.str name "$pack $FRinti,$FRintj,$ACC40Sk")
(+ pack ACC40Sk op FRinti ope FRintj)
(.str name "$pack $FRintieven,$FRintjeven,$ACC40Sk")
(+ pack ACC40Sk op FRintieven ope FRintjeven)
(if (register-unaligned ACC40Sk 2)
(c-call VOID "@cpu@_media_acc_not_aligned")
(if (orif (register-unaligned FRinti 2)
(register-unaligned FRintj 2))
(if (orif (register-unaligned FRintieven 2)
(register-unaligned FRintjeven 2))
(c-call VOID "@cpu@_media_register_not_aligned")
(sequence ((mode argihi) (mode argilo)
(mode argjhi) (mode argjlo))
(extract-hilo FRinti 0 FRintj 0
(extract-hilo FRintieven 0 FRintjeven 0
argihi argilo argjhi argjlo)
(media-complex-semantics-i conv argihi rhs1 argilo rhs2
ACC40Sk
max min (msr-sie-acci))
(extract-hilo FRinti 1 FRintj 1
(extract-hilo FRintieven 1 FRintjeven 1
argihi argilo argjhi argjlo)
(media-complex-semantics-i conv argihi rhs1 argilo rhs2
(nextreg h-acc40S ACC40Sk 1)
max min (msr-sie-acci-1)))))
((fr400 (unit u-media-2-quad))
(fr500 (unit u-media-quad-complex)))
((fr400 (unit u-media-2-quad
(in FRinti FRintieven)
(in FRintj FRintjeven)))
(fr500 (unit u-media-quad-complex
(in FRinti FRintieven)
(in FRintj FRintjeven))))
)
)
@ -7723,39 +7801,43 @@
)
(define-pmacro (media-expand-halfword-to-double-semantics cond)
(if (register-unaligned FRintk 2)
(if (register-unaligned FRintkeven 2)
(c-call VOID "@cpu@_media_register_not_aligned")
(if cond
(sequence ((UHI tmp))
; a hack to get FRintk referenced for profiling
(set FRintk (c-raw-call SI "frv_ref_SI" FRintk))
; a hack to get FRintkeven referenced for profiling
(set FRintkeven (c-raw-call SI "frv_ref_SI" FRintkeven))
(if (and u6 1)
(set tmp (halfword lo FRinti 0))
(set tmp (halfword hi FRinti 0)))
(set (halfword hi FRintk 0) tmp)
(set (halfword lo FRintk 0) tmp)
(set (halfword hi FRintk 1) tmp)
(set (halfword lo FRintk 1) tmp))))
(set (halfword hi FRintkeven 0) tmp)
(set (halfword lo FRintkeven 0) tmp)
(set (halfword hi FRintkeven 1) tmp)
(set (halfword lo FRintkeven 1) tmp))))
)
(dni mexpdhd
"Media expand halfword to double"
((UNIT FM01) (FR500-MAJOR M-2) (FR400-MAJOR M-2))
"mexpdhd$pack $FRinti,$u6,$FRintk"
(+ pack FRintk OP_7B FRinti OPE1_33 u6)
"mexpdhd$pack $FRinti,$u6,$FRintkeven"
(+ pack FRintkeven OP_7B FRinti OPE1_33 u6)
(media-expand-halfword-to-double-semantics 1)
((fr400 (unit u-media-dual-expand))
(fr500 (unit u-media-dual-expand)))
((fr400 (unit u-media-dual-expand
(out FRintk FRintkeven)))
(fr500 (unit u-media-dual-expand
(out FRintk FRintkeven))))
)
(dni cmexpdhd
"Conditional media expand halfword to double"
((UNIT FM01) (FR500-MAJOR M-2) (FR400-MAJOR M-2) CONDITIONAL)
"cmexpdhd$pack $FRinti,$u6,$FRintk,$CCi,$cond"
(+ pack FRintk OP_76 FRinti CCi cond OPE4_3 u6)
"cmexpdhd$pack $FRinti,$u6,$FRintkeven,$CCi,$cond"
(+ pack FRintkeven OP_76 FRinti CCi cond OPE4_3 u6)
(media-expand-halfword-to-double-semantics (eq CCi (or cond 2)))
((fr400 (unit u-media-dual-expand))
(fr500 (unit u-media-dual-expand)))
((fr400 (unit u-media-dual-expand
(out FRintk FRintkeven)))
(fr500 (unit u-media-dual-expand
(out FRintk FRintkeven))))
)
(dni mpackh
@ -7771,21 +7853,27 @@
(dni mdpackh
"Media dual pack"
((UNIT FM01) (FR500-MAJOR M-5) (FR400-MAJOR M-2))
"mdpackh$pack $FRinti,$FRintj,$FRintk"
(+ pack FRintk OP_7B FRinti OPE1_36 FRintj)
(if (orif (register-unaligned FRinti 2)
(orif (register-unaligned FRintj 2)
(register-unaligned FRintk 2)))
"mdpackh$pack $FRintieven,$FRintjeven,$FRintkeven"
(+ pack FRintkeven OP_7B FRintieven OPE1_36 FRintjeven)
(if (orif (register-unaligned FRintieven 2)
(orif (register-unaligned FRintjeven 2)
(register-unaligned FRintkeven 2)))
(c-call VOID "@cpu@_media_register_not_aligned")
(sequence ()
; hack to get these referenced for profiling
(set FRinti (c-raw-call SI "frv_ref_SI" FRinti))
(set FRintj (c-raw-call SI "frv_ref_SI" FRintj))
(set FRintk (c-raw-call SI "frv_ref_SI" FRintk))
(media-pack FRinti FRintj FRintk 0)
(media-pack FRinti FRintj FRintk 1)))
((fr400 (unit u-media-3-quad))
(fr500 (unit u-media-quad-arith)))
(set FRintieven (c-raw-call SI "frv_ref_SI" FRintieven))
(set FRintjeven (c-raw-call SI "frv_ref_SI" FRintjeven))
(set FRintkeven (c-raw-call SI "frv_ref_SI" FRintkeven))
(media-pack FRintieven FRintjeven FRintkeven 0)
(media-pack FRintieven FRintjeven FRintkeven 1)))
((fr400 (unit u-media-3-quad
(in FRinti FRintieven)
(in FRintj FRintjeven)
(out FRintk FRintkeven)))
(fr500 (unit u-media-quad-arith
(in FRinti FRintieven)
(in FRintj FRintjeven)
(out FRintk FRintkeven))))
)
(define-pmacro (media-unpack src soff targ toff)
@ -7799,110 +7887,121 @@
(dni munpackh
"Media halfword unpack"
((UNIT FM01) (FR500-MAJOR M-2) (FR400-MAJOR M-2))
"munpackh$pack $FRinti,$FRintk"
(+ pack FRintk OP_7B FRinti OPE1_35 (FRj-null))
(if (register-unaligned FRintk 2)
"munpackh$pack $FRinti,$FRintkeven"
(+ pack FRintkeven OP_7B FRinti OPE1_35 (FRj-null))
(if (register-unaligned FRintkeven 2)
(c-call VOID "@cpu@_media_register_not_aligned")
(sequence ()
; hack to get these referenced for profiling
(set FRinti (c-raw-call SI "frv_ref_SI" FRinti))
(set FRintk (c-raw-call SI "frv_ref_SI" FRintk))
(media-unpack FRinti 0 FRintk 0)))
((fr400 (unit u-media-dual-expand))
(fr500 (unit u-media-dual-expand)))
(set FRintkeven (c-raw-call SI "frv_ref_SI" FRintkeven))
(media-unpack FRinti 0 FRintkeven 0)))
((fr400 (unit u-media-dual-expand
(out FRintk FRintkeven)))
(fr500 (unit u-media-dual-expand
(out FRintk FRintkeven))))
)
(dni mdunpackh
"Media dual unpack"
((UNIT FM01) (FR500-MAJOR M-7) (MACH simple,tomcat,frv))
"mdunpackh$pack $FRinti,$FRintk"
(+ pack FRintk OP_7B FRinti OPE1_37 (FRj-null))
(if (orif (register-unaligned FRinti 2) (register-unaligned FRintk 4))
"mdunpackh$pack $FRintieven,$FRintk"
(+ pack FRintk OP_7B FRintieven OPE1_37 (FRj-null))
(if (orif (register-unaligned FRintieven 2) (register-unaligned FRintk 4))
(c-call VOID "@cpu@_media_register_not_aligned")
(sequence ()
; hack to get these referenced for profiling
(set FRinti (c-raw-call SI "frv_ref_SI" FRinti))
(set FRintieven (c-raw-call SI "frv_ref_SI" FRintieven))
(set FRintk (c-raw-call SI "frv_ref_SI" FRintk))
(media-unpack FRinti 0 FRintk 0)
(media-unpack FRinti 1 FRintk 2)))
((fr500 (unit u-media-dual-unpack)))
(media-unpack FRintieven 0 FRintk 0)
(media-unpack FRintieven 1 FRintk 2)))
((fr500 (unit u-media-dual-unpack
(in FRinti FRintieven))))
)
(define-pmacro (ubyte num arg offset)
(reg (.sym h-fr_ num) (add (index-of arg) offset)))
(define-pmacro (mbtoh-semantics cond)
(if (register-unaligned FRintk 2)
(if (register-unaligned FRintkeven 2)
(c-call VOID "@cpu@_media_register_not_aligned")
(if cond
(sequence ()
(set (halfword hi FRintk 0) (ubyte 3 FRintj 0))
(set (halfword lo FRintk 0) (ubyte 2 FRintj 0))
(set (halfword hi FRintk 1) (ubyte 1 FRintj 0))
(set (halfword lo FRintk 1) (ubyte 0 FRintj 0)))))
(set (halfword hi FRintkeven 0) (ubyte 3 FRintj 0))
(set (halfword lo FRintkeven 0) (ubyte 2 FRintj 0))
(set (halfword hi FRintkeven 1) (ubyte 1 FRintj 0))
(set (halfword lo FRintkeven 1) (ubyte 0 FRintj 0)))))
)
(dni mbtoh
"Media convert byte to halfword"
((UNIT FM01) (FR500-MAJOR M-2) (FR400-MAJOR M-2))
"mbtoh$pack $FRintj,$FRintk"
(+ pack FRintk OP_7B (FRi-null) OPE1_38 FRintj)
"mbtoh$pack $FRintj,$FRintkeven"
(+ pack FRintkeven OP_7B (FRi-null) OPE1_38 FRintj)
(sequence ()
; hack to get these referenced for profiling
(set FRintj (c-raw-call SI "frv_ref_SI" FRintj))
(set FRintk (c-raw-call SI "frv_ref_SI" FRintk))
(set FRintkeven (c-raw-call SI "frv_ref_SI" FRintkeven))
(mbtoh-semantics 1))
((fr400 (unit u-media-dual-expand))
(fr500 (unit u-media-dual-btoh)))
((fr400 (unit u-media-dual-expand
(in FRinti FRintieven)))
(fr500 (unit u-media-dual-btoh
(in FRinti FRintieven))))
)
(dni cmbtoh
"Conditional media convert byte to halfword"
((UNIT FM01) (FR500-MAJOR M-2) (FR400-MAJOR M-2) CONDITIONAL)
"cmbtoh$pack $FRintj,$FRintk,$CCi,$cond"
(+ pack FRintk OP_77 (FRi-null) CCi cond OPE4_0 FRintj)
"cmbtoh$pack $FRintj,$FRintkeven,$CCi,$cond"
(+ pack FRintkeven OP_77 (FRi-null) CCi cond OPE4_0 FRintj)
(mbtoh-semantics (eq CCi (or cond 2)))
((fr400 (unit u-media-dual-expand))
(fr500 (unit u-media-dual-btoh)))
((fr400 (unit u-media-dual-expand
(out FRintk FRintkeven)))
(fr500 (unit u-media-dual-btoh
(out FRintk FRintkeven))))
)
(define-pmacro (mhtob-semantics cond)
(if (register-unaligned FRintj 2)
(if (register-unaligned FRintjeven 2)
(c-call VOID "@cpu@_media_register_not_aligned")
(if cond
(sequence ()
(set (ubyte 3 FRintk 0) (halfword hi FRintj 0))
(set (ubyte 2 FRintk 0) (halfword lo FRintj 0))
(set (ubyte 1 FRintk 0) (halfword hi FRintj 1))
(set (ubyte 0 FRintk 0) (halfword lo FRintj 1)))))
(set (ubyte 3 FRintk 0) (halfword hi FRintjeven 0))
(set (ubyte 2 FRintk 0) (halfword lo FRintjeven 0))
(set (ubyte 1 FRintk 0) (halfword hi FRintjeven 1))
(set (ubyte 0 FRintk 0) (halfword lo FRintjeven 1)))))
)
(dni mhtob
"Media convert halfword to byte"
((UNIT FM01) (FR500-MAJOR M-2) (FR400-MAJOR M-2))
"mhtob$pack $FRintj,$FRintk"
(+ pack FRintk OP_7B (FRi-null) OPE1_39 FRintj)
"mhtob$pack $FRintjeven,$FRintk"
(+ pack FRintk OP_7B (FRi-null) OPE1_39 FRintjeven)
(sequence ()
; hack to get these referenced for profiling
(set FRintj (c-raw-call SI "frv_ref_SI" FRintj))
(set FRintjeven (c-raw-call SI "frv_ref_SI" FRintjeven))
(set FRintk (c-raw-call SI "frv_ref_SI" FRintk))
(mhtob-semantics 1))
((fr400 (unit u-media-dual-htob))
(fr500 (unit u-media-dual-htob)))
((fr400 (unit u-media-dual-htob
(in FRintj FRintjeven)))
(fr500 (unit u-media-dual-htob
(in FRintj FRintjeven))))
)
(dni cmhtob
"Conditional media convert halfword to byte"
((UNIT FM01) (FR500-MAJOR M-2) (FR400-MAJOR M-2) CONDITIONAL)
"cmhtob$pack $FRintj,$FRintk,$CCi,$cond"
(+ pack FRintk OP_77 (FRi-null) CCi cond OPE4_1 FRintj)
"cmhtob$pack $FRintjeven,$FRintk,$CCi,$cond"
(+ pack FRintk OP_77 (FRi-null) CCi cond OPE4_1 FRintjeven)
(sequence ()
; hack to get these referenced for profiling
(set FRintj (c-raw-call SI "frv_ref_SI" FRintj))
(set FRintjeven (c-raw-call SI "frv_ref_SI" FRintjeven))
(set FRintk (c-raw-call SI "frv_ref_SI" FRintk))
(mhtob-semantics (eq CCi (or cond 2))))
((fr400 (unit u-media-dual-htob))
(fr500 (unit u-media-dual-htob)))
((fr400 (unit u-media-dual-htob
(in FRintj FRintjeven)))
(fr500 (unit u-media-dual-htob
(in FRintj FRintjeven))))
)
(define-pmacro (mbtohe-semantics cond)

View File

@ -40,11 +40,14 @@
/* -- opc.h */
#undef CGEN_DIS_HASH_SIZE
#undef CGEN_DIS_HASH_SIZE
#define CGEN_DIS_HASH_SIZE 128
#undef CGEN_DIS_HASH
#undef CGEN_DIS_HASH
#define CGEN_DIS_HASH(buffer, value) (((value) >> 18) & 127)
/* Allows reason codes to be output when assembler errors occur. */
#define CGEN_VERBOSE_ASSEMBLER_ERRORS
/* Vliw support. */
#define FRV_VLIW_SIZE 4 /* fr500 has largest vliw size of 4. */
typedef CGEN_ATTR_VALUE_TYPE VLIW_COMBO[FRV_VLIW_SIZE];
@ -601,6 +604,8 @@ static const char * parse_s12
PARAMS ((CGEN_CPU_DESC, const char **, int, long *));
static const char * parse_u12
PARAMS ((CGEN_CPU_DESC, const char **, int, long *));
static const char * parse_even_register
PARAMS ((CGEN_CPU_DESC, const char **, CGEN_KEYWORD *, long *));
static const char *
parse_ulo16 (cd, strp, opindex, valuep)
@ -883,6 +888,26 @@ parse_u12 (cd, strp, opindex, valuep)
}
}
static const char *
parse_even_register (cd, strP, tableP, valueP)
CGEN_CPU_DESC cd;
const char ** strP;
CGEN_KEYWORD * tableP;
long * valueP;
{
const char * errmsg;
const char * saved_star_strP = * strP;
errmsg = cgen_parse_keyword (cd, strP, tableP, valueP);
if (errmsg == NULL && ((* valueP) & 1))
{
errmsg = _("register number must be even");
* strP = saved_star_strP;
}
return errmsg;
}
/* -- */
/* -- dis.c */

View File

@ -1,6 +1,18 @@
2003-06-03 Nick Clifton <nickc@redhat.com>
* frv-desc.c: Regenerate.
* frv-opc.c: Regenerate.
* frv-asm.c: Regenerate.
* frv-desc.h: Regenerate.
* frv-dis.c: Regenerate.
* frv-ibld.c: Regenerate.
* frv-opc.h: Regenerate.
* po/opcodes.pot: Regenerate.
2003-06-03 Michael Snyder <msnyder@redhat.com>
and Bernd Schmidt <bernds@redhat.com>
and Alexandre Oliva <aoliva@redhat.com>
* disassemble.c (disassembler): Add support for h8300sx.
* h8300-dis.c: Ditto.

View File

@ -64,6 +64,8 @@ static const char * parse_s12
PARAMS ((CGEN_CPU_DESC, const char **, int, long *));
static const char * parse_u12
PARAMS ((CGEN_CPU_DESC, const char **, int, long *));
static const char * parse_even_register
PARAMS ((CGEN_CPU_DESC, const char **, CGEN_KEYWORD *, long *));
static const char *
parse_ulo16 (cd, strp, opindex, valuep)
@ -346,6 +348,26 @@ parse_u12 (cd, strp, opindex, valuep)
}
}
static const char *
parse_even_register (cd, strP, tableP, valueP)
CGEN_CPU_DESC cd;
const char ** strP;
CGEN_KEYWORD * tableP;
long * valueP;
{
const char * errmsg;
const char * saved_star_strP = * strP;
errmsg = cgen_parse_keyword (cd, strP, tableP, valueP);
if (errmsg == NULL && ((* valueP) & 1))
{
errmsg = _("register number must be even");
* strP = saved_star_strP;
}
return errmsg;
}
/* -- */
const char * frv_cgen_parse_operand
@ -455,12 +477,21 @@ frv_cgen_parse_operand (cd, opindex, strp, fields)
case FRV_OPERAND_FRINTI :
errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_fr_names, & fields->f_FRi);
break;
case FRV_OPERAND_FRINTIEVEN :
errmsg = parse_even_register (cd, strp, & frv_cgen_opval_fr_names, & fields->f_FRi);
break;
case FRV_OPERAND_FRINTJ :
errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_fr_names, & fields->f_FRj);
break;
case FRV_OPERAND_FRINTJEVEN :
errmsg = parse_even_register (cd, strp, & frv_cgen_opval_fr_names, & fields->f_FRj);
break;
case FRV_OPERAND_FRINTK :
errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_fr_names, & fields->f_FRk);
break;
case FRV_OPERAND_FRINTKEVEN :
errmsg = parse_even_register (cd, strp, & frv_cgen_opval_fr_names, & fields->f_FRk);
break;
case FRV_OPERAND_FRJ :
errmsg = cgen_parse_keyword (cd, strp, & frv_cgen_opval_fr_names, & fields->f_FRj);
break;

View File

@ -2173,6 +2173,18 @@ const CGEN_OPERAND frv_cgen_operand_table[] =
{ "label24", FRV_OPERAND_LABEL24, HW_H_IADDR, 17, 24,
{ 2, { (const PTR) &FRV_F_LABEL24_MULTI_IFIELD[0] } },
{ 0|A(PCREL_ADDR)|A(VIRTUAL), { (1<<MACH_BASE) } } },
/* FRintieven: (even) source register 1 */
{ "FRintieven", FRV_OPERAND_FRINTIEVEN, HW_H_FR_INT, 17, 6,
{ 0, { (const PTR) &frv_cgen_ifld_table[FRV_F_FRI] } },
{ 0, { (1<<MACH_BASE) } } },
/* FRintjeven: (even) source register 2 */
{ "FRintjeven", FRV_OPERAND_FRINTJEVEN, HW_H_FR_INT, 5, 6,
{ 0, { (const PTR) &frv_cgen_ifld_table[FRV_F_FRJ] } },
{ 0, { (1<<MACH_BASE) } } },
/* FRintkeven: (even) target register */
{ "FRintkeven", FRV_OPERAND_FRINTKEVEN, HW_H_FR_INT, 30, 6,
{ 0, { (const PTR) &frv_cgen_ifld_table[FRV_F_FRK] } },
{ 0, { (1<<MACH_BASE) } } },
/* d12: 12 bit signed immediate */
{ "d12", FRV_OPERAND_D12, HW_H_SINT, 11, 12,
{ 0, { (const PTR) &frv_cgen_ifld_table[FRV_F_D12] } },
@ -5472,7 +5484,7 @@ static const CGEN_IBASE frv_cgen_insn_table[MAX_INSNS] =
FRV_INSN_MCUTSSI, "mcutssi", "mcutssi", 32,
{ 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_2 } }
},
/* mdcutssi$pack $ACC40Si,$s6,$FRintk */
/* mdcutssi$pack $ACC40Si,$s6,$FRintkeven */
{
FRV_INSN_MDCUTSSI, "mdcutssi", "mdcutssi", 32,
{ 0, { (1<<MACH_FR400), UNIT_FM0, FR400_MAJOR_M_2, FR500_MAJOR_NONE } }
@ -5497,7 +5509,7 @@ static const CGEN_IBASE frv_cgen_insn_table[MAX_INSNS] =
FRV_INSN_MSRAHI, "msrahi", "msrahi", 32,
{ 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_2 } }
},
/* mdrotli$pack $FRinti,$s6,$FRintk */
/* mdrotli$pack $FRintieven,$s6,$FRintkeven */
{
FRV_INSN_MDROTLI, "mdrotli", "mdrotli", 32,
{ 0, { (1<<MACH_FR400), UNIT_FM0, FR400_MAJOR_M_2, FR500_MAJOR_NONE } }
@ -5517,7 +5529,7 @@ static const CGEN_IBASE frv_cgen_insn_table[MAX_INSNS] =
FRV_INSN_MSATHS, "msaths", "msaths", 32,
{ 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_1 } }
},
/* mqsaths$pack $FRinti,$FRintj,$FRintk */
/* mqsaths$pack $FRintieven,$FRintjeven,$FRintkeven */
{
FRV_INSN_MQSATHS, "mqsaths", "mqsaths", 32,
{ 0, { (1<<MACH_FR400), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_NONE } }
@ -5582,42 +5594,42 @@ static const CGEN_IBASE frv_cgen_insn_table[MAX_INSNS] =
FRV_INSN_CMSUBHUS, "cmsubhus", "cmsubhus", 32,
{ 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_1 } }
},
/* mqaddhss$pack $FRinti,$FRintj,$FRintk */
/* mqaddhss$pack $FRintieven,$FRintjeven,$FRintkeven */
{
FRV_INSN_MQADDHSS, "mqaddhss", "mqaddhss", 32,
{ 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_1 } }
},
/* mqaddhus$pack $FRinti,$FRintj,$FRintk */
/* mqaddhus$pack $FRintieven,$FRintjeven,$FRintkeven */
{
FRV_INSN_MQADDHUS, "mqaddhus", "mqaddhus", 32,
{ 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_1 } }
},
/* mqsubhss$pack $FRinti,$FRintj,$FRintk */
/* mqsubhss$pack $FRintieven,$FRintjeven,$FRintkeven */
{
FRV_INSN_MQSUBHSS, "mqsubhss", "mqsubhss", 32,
{ 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_1 } }
},
/* mqsubhus$pack $FRinti,$FRintj,$FRintk */
/* mqsubhus$pack $FRintieven,$FRintjeven,$FRintkeven */
{
FRV_INSN_MQSUBHUS, "mqsubhus", "mqsubhus", 32,
{ 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_1 } }
},
/* cmqaddhss$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
/* cmqaddhss$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
{
FRV_INSN_CMQADDHSS, "cmqaddhss", "cmqaddhss", 32,
{ 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_1 } }
},
/* cmqaddhus$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
/* cmqaddhus$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
{
FRV_INSN_CMQADDHUS, "cmqaddhus", "cmqaddhus", 32,
{ 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_1 } }
},
/* cmqsubhss$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
/* cmqsubhss$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
{
FRV_INSN_CMQSUBHSS, "cmqsubhss", "cmqsubhss", 32,
{ 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_1 } }
},
/* cmqsubhus$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
/* cmqsubhus$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
{
FRV_INSN_CMQSUBHUS, "cmqsubhus", "cmqsubhus", 32,
{ 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_1 } }
@ -5682,32 +5694,32 @@ static const CGEN_IBASE frv_cgen_insn_table[MAX_INSNS] =
FRV_INSN_CMMULHU, "cmmulhu", "cmmulhu", 32,
{ 0|A(CONDITIONAL)|A(PRESERVE_OVF), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_4 } }
},
/* mqmulhs$pack $FRinti,$FRintj,$ACC40Sk */
/* mqmulhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
{
FRV_INSN_MQMULHS, "mqmulhs", "mqmulhs", 32,
{ 0|A(PRESERVE_OVF), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_4 } }
},
/* mqmulhu$pack $FRinti,$FRintj,$ACC40Sk */
/* mqmulhu$pack $FRintieven,$FRintjeven,$ACC40Sk */
{
FRV_INSN_MQMULHU, "mqmulhu", "mqmulhu", 32,
{ 0|A(PRESERVE_OVF), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_4 } }
},
/* mqmulxhs$pack $FRinti,$FRintj,$ACC40Sk */
/* mqmulxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
{
FRV_INSN_MQMULXHS, "mqmulxhs", "mqmulxhs", 32,
{ 0|A(PRESERVE_OVF), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_4 } }
},
/* mqmulxhu$pack $FRinti,$FRintj,$ACC40Sk */
/* mqmulxhu$pack $FRintieven,$FRintjeven,$ACC40Sk */
{
FRV_INSN_MQMULXHU, "mqmulxhu", "mqmulxhu", 32,
{ 0|A(PRESERVE_OVF), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_4 } }
},
/* cmqmulhs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
/* cmqmulhs$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
{
FRV_INSN_CMQMULHS, "cmqmulhs", "cmqmulhs", 32,
{ 0|A(CONDITIONAL)|A(PRESERVE_OVF), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_4 } }
},
/* cmqmulhu$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
/* cmqmulhu$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
{
FRV_INSN_CMQMULHU, "cmqmulhu", "cmqmulhu", 32,
{ 0|A(CONDITIONAL)|A(PRESERVE_OVF), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_4 } }
@ -5742,37 +5754,37 @@ static const CGEN_IBASE frv_cgen_insn_table[MAX_INSNS] =
FRV_INSN_CMMACHU, "cmmachu", "cmmachu", 32,
{ 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_4 } }
},
/* mqmachs$pack $FRinti,$FRintj,$ACC40Sk */
/* mqmachs$pack $FRintieven,$FRintjeven,$ACC40Sk */
{
FRV_INSN_MQMACHS, "mqmachs", "mqmachs", 32,
{ 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_4 } }
},
/* mqmachu$pack $FRinti,$FRintj,$ACC40Uk */
/* mqmachu$pack $FRintieven,$FRintjeven,$ACC40Uk */
{
FRV_INSN_MQMACHU, "mqmachu", "mqmachu", 32,
{ 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_4 } }
},
/* cmqmachs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
/* cmqmachs$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
{
FRV_INSN_CMQMACHS, "cmqmachs", "cmqmachs", 32,
{ 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_4 } }
},
/* cmqmachu$pack $FRinti,$FRintj,$ACC40Uk,$CCi,$cond */
/* cmqmachu$pack $FRintieven,$FRintjeven,$ACC40Uk,$CCi,$cond */
{
FRV_INSN_CMQMACHU, "cmqmachu", "cmqmachu", 32,
{ 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_4 } }
},
/* mqxmachs$pack $FRinti,$FRintj,$ACC40Sk */
/* mqxmachs$pack $FRintieven,$FRintjeven,$ACC40Sk */
{
FRV_INSN_MQXMACHS, "mqxmachs", "mqxmachs", 32,
{ 0, { (1<<MACH_FR400), UNIT_FM0, FR400_MAJOR_M_2, FR500_MAJOR_NONE } }
},
/* mqxmacxhs$pack $FRinti,$FRintj,$ACC40Sk */
/* mqxmacxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
{
FRV_INSN_MQXMACXHS, "mqxmacxhs", "mqxmacxhs", 32,
{ 0, { (1<<MACH_FR400), UNIT_FM0, FR400_MAJOR_M_2, FR500_MAJOR_NONE } }
},
/* mqmacxhs$pack $FRinti,$FRintj,$ACC40Sk */
/* mqmacxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
{
FRV_INSN_MQMACXHS, "mqmacxhs", "mqmacxhs", 32,
{ 0, { (1<<MACH_FR400), UNIT_FM0, FR400_MAJOR_M_2, FR500_MAJOR_NONE } }
@ -5817,22 +5829,22 @@ static const CGEN_IBASE frv_cgen_insn_table[MAX_INSNS] =
FRV_INSN_CMCPXIU, "cmcpxiu", "cmcpxiu", 32,
{ 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_4 } }
},
/* mqcpxrs$pack $FRinti,$FRintj,$ACC40Sk */
/* mqcpxrs$pack $FRintieven,$FRintjeven,$ACC40Sk */
{
FRV_INSN_MQCPXRS, "mqcpxrs", "mqcpxrs", 32,
{ 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_4 } }
},
/* mqcpxru$pack $FRinti,$FRintj,$ACC40Sk */
/* mqcpxru$pack $FRintieven,$FRintjeven,$ACC40Sk */
{
FRV_INSN_MQCPXRU, "mqcpxru", "mqcpxru", 32,
{ 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_4 } }
},
/* mqcpxis$pack $FRinti,$FRintj,$ACC40Sk */
/* mqcpxis$pack $FRintieven,$FRintjeven,$ACC40Sk */
{
FRV_INSN_MQCPXIS, "mqcpxis", "mqcpxis", 32,
{ 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_4 } }
},
/* mqcpxiu$pack $FRinti,$FRintj,$ACC40Sk */
/* mqcpxiu$pack $FRintieven,$FRintjeven,$ACC40Sk */
{
FRV_INSN_MQCPXIU, "mqcpxiu", "mqcpxiu", 32,
{ 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_4 } }
@ -5847,12 +5859,12 @@ static const CGEN_IBASE frv_cgen_insn_table[MAX_INSNS] =
FRV_INSN_CMEXPDHW, "cmexpdhw", "cmexpdhw", 32,
{ 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_2 } }
},
/* mexpdhd$pack $FRinti,$u6,$FRintk */
/* mexpdhd$pack $FRinti,$u6,$FRintkeven */
{
FRV_INSN_MEXPDHD, "mexpdhd", "mexpdhd", 32,
{ 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_2 } }
},
/* cmexpdhd$pack $FRinti,$u6,$FRintk,$CCi,$cond */
/* cmexpdhd$pack $FRinti,$u6,$FRintkeven,$CCi,$cond */
{
FRV_INSN_CMEXPDHD, "cmexpdhd", "cmexpdhd", 32,
{ 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_2 } }
@ -5862,37 +5874,37 @@ static const CGEN_IBASE frv_cgen_insn_table[MAX_INSNS] =
FRV_INSN_MPACKH, "mpackh", "mpackh", 32,
{ 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_1, FR500_MAJOR_M_2 } }
},
/* mdpackh$pack $FRinti,$FRintj,$FRintk */
/* mdpackh$pack $FRintieven,$FRintjeven,$FRintkeven */
{
FRV_INSN_MDPACKH, "mdpackh", "mdpackh", 32,
{ 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_5 } }
},
/* munpackh$pack $FRinti,$FRintk */
/* munpackh$pack $FRinti,$FRintkeven */
{
FRV_INSN_MUNPACKH, "munpackh", "munpackh", 32,
{ 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_2 } }
},
/* mdunpackh$pack $FRinti,$FRintk */
/* mdunpackh$pack $FRintieven,$FRintk */
{
FRV_INSN_MDUNPACKH, "mdunpackh", "mdunpackh", 32,
{ 0, { (1<<MACH_SIMPLE)|(1<<MACH_TOMCAT)|(1<<MACH_FRV), UNIT_FM01, FR400_MAJOR_NONE, FR500_MAJOR_M_7 } }
},
/* mbtoh$pack $FRintj,$FRintk */
/* mbtoh$pack $FRintj,$FRintkeven */
{
FRV_INSN_MBTOH, "mbtoh", "mbtoh", 32,
{ 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_2 } }
},
/* cmbtoh$pack $FRintj,$FRintk,$CCi,$cond */
/* cmbtoh$pack $FRintj,$FRintkeven,$CCi,$cond */
{
FRV_INSN_CMBTOH, "cmbtoh", "cmbtoh", 32,
{ 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_2 } }
},
/* mhtob$pack $FRintj,$FRintk */
/* mhtob$pack $FRintjeven,$FRintk */
{
FRV_INSN_MHTOB, "mhtob", "mhtob", 32,
{ 0, { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_2 } }
},
/* cmhtob$pack $FRintj,$FRintk,$CCi,$cond */
/* cmhtob$pack $FRintjeven,$FRintk,$CCi,$cond */
{
FRV_INSN_CMHTOB, "cmhtob", "cmhtob", 32,
{ 0|A(CONDITIONAL), { (1<<MACH_BASE), UNIT_FM01, FR400_MAJOR_M_2, FR500_MAJOR_M_2 } }

View File

@ -677,15 +677,16 @@ typedef enum cgen_operand_type {
, FRV_OPERAND_U6, FRV_OPERAND_S5, FRV_OPERAND_COND, FRV_OPERAND_CCOND
, FRV_OPERAND_HINT, FRV_OPERAND_HINT_TAKEN, FRV_OPERAND_HINT_NOT_TAKEN, FRV_OPERAND_LI
, FRV_OPERAND_LOCK, FRV_OPERAND_DEBUG, FRV_OPERAND_A, FRV_OPERAND_AE
, FRV_OPERAND_LABEL16, FRV_OPERAND_LABEL24, FRV_OPERAND_D12, FRV_OPERAND_S12
, FRV_OPERAND_U12, FRV_OPERAND_SPR, FRV_OPERAND_ULO16, FRV_OPERAND_SLO16
, FRV_OPERAND_UHI16, FRV_OPERAND_PSR_ESR, FRV_OPERAND_PSR_S, FRV_OPERAND_PSR_PS
, FRV_OPERAND_PSR_ET, FRV_OPERAND_BPSR_BS, FRV_OPERAND_BPSR_BET, FRV_OPERAND_TBR_TBA
, FRV_OPERAND_TBR_TT, FRV_OPERAND_MAX
, FRV_OPERAND_LABEL16, FRV_OPERAND_LABEL24, FRV_OPERAND_FRINTIEVEN, FRV_OPERAND_FRINTJEVEN
, FRV_OPERAND_FRINTKEVEN, FRV_OPERAND_D12, FRV_OPERAND_S12, FRV_OPERAND_U12
, FRV_OPERAND_SPR, FRV_OPERAND_ULO16, FRV_OPERAND_SLO16, FRV_OPERAND_UHI16
, FRV_OPERAND_PSR_ESR, FRV_OPERAND_PSR_S, FRV_OPERAND_PSR_PS, FRV_OPERAND_PSR_ET
, FRV_OPERAND_BPSR_BS, FRV_OPERAND_BPSR_BET, FRV_OPERAND_TBR_TBA, FRV_OPERAND_TBR_TT
, FRV_OPERAND_MAX
} CGEN_OPERAND_TYPE;
/* Number of operands types. */
#define MAX_OPERANDS 77
#define MAX_OPERANDS 80
/* Maximum number of operands referenced by any insn. */
#define MAX_OPERAND_INSTANCES 8

View File

@ -230,12 +230,21 @@ frv_cgen_print_operand (cd, opindex, xinfo, fields, attrs, pc, length)
case FRV_OPERAND_FRINTI :
print_keyword (cd, info, & frv_cgen_opval_fr_names, fields->f_FRi, 0);
break;
case FRV_OPERAND_FRINTIEVEN :
print_keyword (cd, info, & frv_cgen_opval_fr_names, fields->f_FRi, 0);
break;
case FRV_OPERAND_FRINTJ :
print_keyword (cd, info, & frv_cgen_opval_fr_names, fields->f_FRj, 0);
break;
case FRV_OPERAND_FRINTJEVEN :
print_keyword (cd, info, & frv_cgen_opval_fr_names, fields->f_FRj, 0);
break;
case FRV_OPERAND_FRINTK :
print_keyword (cd, info, & frv_cgen_opval_fr_names, fields->f_FRk, 0);
break;
case FRV_OPERAND_FRINTKEVEN :
print_keyword (cd, info, & frv_cgen_opval_fr_names, fields->f_FRk, 0);
break;
case FRV_OPERAND_FRJ :
print_keyword (cd, info, & frv_cgen_opval_fr_names, fields->f_FRj, 0);
break;

View File

@ -651,12 +651,21 @@ frv_cgen_insert_operand (cd, opindex, fields, buffer, pc)
case FRV_OPERAND_FRINTI :
errmsg = insert_normal (cd, fields->f_FRi, 0, 0, 17, 6, 32, total_length, buffer);
break;
case FRV_OPERAND_FRINTIEVEN :
errmsg = insert_normal (cd, fields->f_FRi, 0, 0, 17, 6, 32, total_length, buffer);
break;
case FRV_OPERAND_FRINTJ :
errmsg = insert_normal (cd, fields->f_FRj, 0, 0, 5, 6, 32, total_length, buffer);
break;
case FRV_OPERAND_FRINTJEVEN :
errmsg = insert_normal (cd, fields->f_FRj, 0, 0, 5, 6, 32, total_length, buffer);
break;
case FRV_OPERAND_FRINTK :
errmsg = insert_normal (cd, fields->f_FRk, 0, 0, 30, 6, 32, total_length, buffer);
break;
case FRV_OPERAND_FRINTKEVEN :
errmsg = insert_normal (cd, fields->f_FRk, 0, 0, 30, 6, 32, total_length, buffer);
break;
case FRV_OPERAND_FRJ :
errmsg = insert_normal (cd, fields->f_FRj, 0, 0, 5, 6, 32, total_length, buffer);
break;
@ -942,12 +951,21 @@ frv_cgen_extract_operand (cd, opindex, ex_info, insn_value, fields, pc)
case FRV_OPERAND_FRINTI :
length = extract_normal (cd, ex_info, insn_value, 0, 0, 17, 6, 32, total_length, pc, & fields->f_FRi);
break;
case FRV_OPERAND_FRINTIEVEN :
length = extract_normal (cd, ex_info, insn_value, 0, 0, 17, 6, 32, total_length, pc, & fields->f_FRi);
break;
case FRV_OPERAND_FRINTJ :
length = extract_normal (cd, ex_info, insn_value, 0, 0, 5, 6, 32, total_length, pc, & fields->f_FRj);
break;
case FRV_OPERAND_FRINTJEVEN :
length = extract_normal (cd, ex_info, insn_value, 0, 0, 5, 6, 32, total_length, pc, & fields->f_FRj);
break;
case FRV_OPERAND_FRINTK :
length = extract_normal (cd, ex_info, insn_value, 0, 0, 30, 6, 32, total_length, pc, & fields->f_FRk);
break;
case FRV_OPERAND_FRINTKEVEN :
length = extract_normal (cd, ex_info, insn_value, 0, 0, 30, 6, 32, total_length, pc, & fields->f_FRk);
break;
case FRV_OPERAND_FRJ :
length = extract_normal (cd, ex_info, insn_value, 0, 0, 5, 6, 32, total_length, pc, & fields->f_FRj);
break;
@ -1216,12 +1234,21 @@ frv_cgen_get_int_operand (cd, opindex, fields)
case FRV_OPERAND_FRINTI :
value = fields->f_FRi;
break;
case FRV_OPERAND_FRINTIEVEN :
value = fields->f_FRi;
break;
case FRV_OPERAND_FRINTJ :
value = fields->f_FRj;
break;
case FRV_OPERAND_FRINTJEVEN :
value = fields->f_FRj;
break;
case FRV_OPERAND_FRINTK :
value = fields->f_FRk;
break;
case FRV_OPERAND_FRINTKEVEN :
value = fields->f_FRk;
break;
case FRV_OPERAND_FRJ :
value = fields->f_FRj;
break;
@ -1441,12 +1468,21 @@ frv_cgen_get_vma_operand (cd, opindex, fields)
case FRV_OPERAND_FRINTI :
value = fields->f_FRi;
break;
case FRV_OPERAND_FRINTIEVEN :
value = fields->f_FRi;
break;
case FRV_OPERAND_FRINTJ :
value = fields->f_FRj;
break;
case FRV_OPERAND_FRINTJEVEN :
value = fields->f_FRj;
break;
case FRV_OPERAND_FRINTK :
value = fields->f_FRk;
break;
case FRV_OPERAND_FRINTKEVEN :
value = fields->f_FRk;
break;
case FRV_OPERAND_FRJ :
value = fields->f_FRj;
break;
@ -1675,12 +1711,21 @@ frv_cgen_set_int_operand (cd, opindex, fields, value)
case FRV_OPERAND_FRINTI :
fields->f_FRi = value;
break;
case FRV_OPERAND_FRINTIEVEN :
fields->f_FRi = value;
break;
case FRV_OPERAND_FRINTJ :
fields->f_FRj = value;
break;
case FRV_OPERAND_FRINTJEVEN :
fields->f_FRj = value;
break;
case FRV_OPERAND_FRINTK :
fields->f_FRk = value;
break;
case FRV_OPERAND_FRINTKEVEN :
fields->f_FRk = value;
break;
case FRV_OPERAND_FRJ :
fields->f_FRj = value;
break;
@ -1897,12 +1942,21 @@ frv_cgen_set_vma_operand (cd, opindex, fields, value)
case FRV_OPERAND_FRINTI :
fields->f_FRi = value;
break;
case FRV_OPERAND_FRINTIEVEN :
fields->f_FRi = value;
break;
case FRV_OPERAND_FRINTJ :
fields->f_FRj = value;
break;
case FRV_OPERAND_FRINTJEVEN :
fields->f_FRj = value;
break;
case FRV_OPERAND_FRINTK :
fields->f_FRk = value;
break;
case FRV_OPERAND_FRINTKEVEN :
fields->f_FRk = value;
break;
case FRV_OPERAND_FRJ :
fields->f_FRj = value;
break;

View File

@ -1033,10 +1033,18 @@ static const CGEN_IFMT ifmt_mcuti = {
32, 32, 0x1fc0fc0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_ACC40SI) }, { F (F_OPE1) }, { F (F_S6) }, { 0 } }
};
static const CGEN_IFMT ifmt_mdcutssi = {
32, 32, 0x1fc0fc0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_ACC40SI) }, { F (F_OPE1) }, { F (F_S6) }, { 0 } }
};
static const CGEN_IFMT ifmt_mdrotli = {
32, 32, 0x1fc0fc0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_OPE1) }, { F (F_S6) }, { 0 } }
};
static const CGEN_IFMT ifmt_mqsaths = {
32, 32, 0x1fc0fc0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_OPE1) }, { F (F_FRJ) }, { 0 } }
};
static const CGEN_IFMT ifmt_mcmpsh = {
32, 32, 0x79fc0fc0, { { F (F_PACK) }, { F (F_COND_NULL) }, { F (F_FCCK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_OPE1) }, { F (F_FRJ) }, { 0 } }
};
@ -1045,6 +1053,10 @@ static const CGEN_IFMT ifmt_mabshs = {
32, 32, 0x1ffffc0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_FRI_NULL) }, { F (F_OPE1) }, { F (F_FRJ) }, { 0 } }
};
static const CGEN_IFMT ifmt_cmqaddhss = {
32, 32, 0x1fc00c0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_FRJ) }, { 0 } }
};
static const CGEN_IFMT ifmt_maddaccs = {
32, 32, 0x1fc0fff, { { F (F_PACK) }, { F (F_ACC40SK) }, { F (F_OP) }, { F (F_ACC40SI) }, { F (F_OPE1) }, { F (F_ACCJ_NULL) }, { 0 } }
};
@ -1057,6 +1069,14 @@ static const CGEN_IFMT ifmt_cmmulhs = {
32, 32, 0x1fc00c0, { { F (F_PACK) }, { F (F_ACC40SK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_FRJ) }, { 0 } }
};
static const CGEN_IFMT ifmt_mqmulhs = {
32, 32, 0x1fc0fc0, { { F (F_PACK) }, { F (F_ACC40SK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_OPE1) }, { F (F_FRJ) }, { 0 } }
};
static const CGEN_IFMT ifmt_cmqmulhs = {
32, 32, 0x1fc00c0, { { F (F_PACK) }, { F (F_ACC40SK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_FRJ) }, { 0 } }
};
static const CGEN_IFMT ifmt_mmachu = {
32, 32, 0x1fc0fc0, { { F (F_PACK) }, { F (F_ACC40UK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_OPE1) }, { F (F_FRJ) }, { 0 } }
};
@ -1065,18 +1085,54 @@ static const CGEN_IFMT ifmt_cmmachu = {
32, 32, 0x1fc00c0, { { F (F_PACK) }, { F (F_ACC40UK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_FRJ) }, { 0 } }
};
static const CGEN_IFMT ifmt_mqmachu = {
32, 32, 0x1fc0fc0, { { F (F_PACK) }, { F (F_ACC40UK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_OPE1) }, { F (F_FRJ) }, { 0 } }
};
static const CGEN_IFMT ifmt_cmqmachu = {
32, 32, 0x1fc00c0, { { F (F_PACK) }, { F (F_ACC40UK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_FRJ) }, { 0 } }
};
static const CGEN_IFMT ifmt_cmexpdhw = {
32, 32, 0x1fc00c0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_U6) }, { 0 } }
};
static const CGEN_IFMT ifmt_mexpdhd = {
32, 32, 0x1fc0fc0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_OPE1) }, { F (F_U6) }, { 0 } }
};
static const CGEN_IFMT ifmt_cmexpdhd = {
32, 32, 0x1fc00c0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_U6) }, { 0 } }
};
static const CGEN_IFMT ifmt_munpackh = {
32, 32, 0x1fc0fff, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_OPE1) }, { F (F_FRJ_NULL) }, { 0 } }
};
static const CGEN_IFMT ifmt_mdunpackh = {
32, 32, 0x1fc0fff, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_FRI) }, { F (F_OPE1) }, { F (F_FRJ_NULL) }, { 0 } }
};
static const CGEN_IFMT ifmt_mbtoh = {
32, 32, 0x1ffffc0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_FRI_NULL) }, { F (F_OPE1) }, { F (F_FRJ) }, { 0 } }
};
static const CGEN_IFMT ifmt_cmbtoh = {
32, 32, 0x1fff0c0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_FRI_NULL) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_FRJ) }, { 0 } }
};
static const CGEN_IFMT ifmt_mhtob = {
32, 32, 0x1ffffc0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_FRI_NULL) }, { F (F_OPE1) }, { F (F_FRJ) }, { 0 } }
};
static const CGEN_IFMT ifmt_cmhtob = {
32, 32, 0x1fff0c0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_FRI_NULL) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_FRJ) }, { 0 } }
};
static const CGEN_IFMT ifmt_cmbtohe = {
32, 32, 0x1fff0c0, { { F (F_PACK) }, { F (F_FRK) }, { F (F_OP) }, { F (F_FRI_NULL) }, { F (F_CCI) }, { F (F_COND) }, { F (F_OPE4) }, { F (F_FRJ) }, { 0 } }
};
static const CGEN_IFMT ifmt_mclracc = {
32, 32, 0x1fdffff, { { F (F_PACK) }, { F (F_ACC40SK) }, { F (F_OP) }, { F (F_A) }, { F (F_MISC_NULL_10) }, { F (F_OPE1) }, { F (F_FRJ_NULL) }, { 0 } }
};
@ -4982,11 +5038,11 @@ static const CGEN_OPCODE frv_cgen_insn_opcode_table[MAX_INSNS] =
{ { MNEM, OP (PACK), ' ', OP (ACC40SI), ',', OP (S6), ',', OP (FRINTK), 0 } },
& ifmt_mcuti, { 0x1ec0bc0 }
},
/* mdcutssi$pack $ACC40Si,$s6,$FRintk */
/* mdcutssi$pack $ACC40Si,$s6,$FRintkeven */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (ACC40SI), ',', OP (S6), ',', OP (FRINTK), 0 } },
& ifmt_mcuti, { 0x1e00380 }
{ { MNEM, OP (PACK), ' ', OP (ACC40SI), ',', OP (S6), ',', OP (FRINTKEVEN), 0 } },
& ifmt_mdcutssi, { 0x1e00380 }
},
/* maveh$pack $FRinti,$FRintj,$FRintk */
{
@ -5012,10 +5068,10 @@ static const CGEN_OPCODE frv_cgen_insn_opcode_table[MAX_INSNS] =
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (U6), ',', OP (FRINTK), 0 } },
& ifmt_mrotli, { 0x1ec02c0 }
},
/* mdrotli$pack $FRinti,$s6,$FRintk */
/* mdrotli$pack $FRintieven,$s6,$FRintkeven */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (S6), ',', OP (FRINTK), 0 } },
{ { MNEM, OP (PACK), ' ', OP (FRINTIEVEN), ',', OP (S6), ',', OP (FRINTKEVEN), 0 } },
& ifmt_mdrotli, { 0x1e002c0 }
},
/* mcplhi$pack $FRinti,$u6,$FRintk */
@ -5036,11 +5092,11 @@ static const CGEN_OPCODE frv_cgen_insn_opcode_table[MAX_INSNS] =
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (FRINTK), 0 } },
& ifmt_mand, { 0x1ec0300 }
},
/* mqsaths$pack $FRinti,$FRintj,$FRintk */
/* mqsaths$pack $FRintieven,$FRintjeven,$FRintkeven */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (FRINTK), 0 } },
& ifmt_mand, { 0x1e003c0 }
{ { MNEM, OP (PACK), ' ', OP (FRINTIEVEN), ',', OP (FRINTJEVEN), ',', OP (FRINTKEVEN), 0 } },
& ifmt_mqsaths, { 0x1e003c0 }
},
/* msathu$pack $FRinti,$FRintj,$FRintk */
{
@ -5114,53 +5170,53 @@ static const CGEN_OPCODE frv_cgen_insn_opcode_table[MAX_INSNS] =
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (FRINTK), ',', OP (CCI), ',', OP (COND), 0 } },
& ifmt_cmand, { 0x1c400c0 }
},
/* mqaddhss$pack $FRinti,$FRintj,$FRintk */
/* mqaddhss$pack $FRintieven,$FRintjeven,$FRintkeven */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (FRINTK), 0 } },
& ifmt_mand, { 0x1ec0600 }
{ { MNEM, OP (PACK), ' ', OP (FRINTIEVEN), ',', OP (FRINTJEVEN), ',', OP (FRINTKEVEN), 0 } },
& ifmt_mqsaths, { 0x1ec0600 }
},
/* mqaddhus$pack $FRinti,$FRintj,$FRintk */
/* mqaddhus$pack $FRintieven,$FRintjeven,$FRintkeven */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (FRINTK), 0 } },
& ifmt_mand, { 0x1ec0640 }
{ { MNEM, OP (PACK), ' ', OP (FRINTIEVEN), ',', OP (FRINTJEVEN), ',', OP (FRINTKEVEN), 0 } },
& ifmt_mqsaths, { 0x1ec0640 }
},
/* mqsubhss$pack $FRinti,$FRintj,$FRintk */
/* mqsubhss$pack $FRintieven,$FRintjeven,$FRintkeven */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (FRINTK), 0 } },
& ifmt_mand, { 0x1ec0680 }
{ { MNEM, OP (PACK), ' ', OP (FRINTIEVEN), ',', OP (FRINTJEVEN), ',', OP (FRINTKEVEN), 0 } },
& ifmt_mqsaths, { 0x1ec0680 }
},
/* mqsubhus$pack $FRinti,$FRintj,$FRintk */
/* mqsubhus$pack $FRintieven,$FRintjeven,$FRintkeven */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (FRINTK), 0 } },
& ifmt_mand, { 0x1ec06c0 }
{ { MNEM, OP (PACK), ' ', OP (FRINTIEVEN), ',', OP (FRINTJEVEN), ',', OP (FRINTKEVEN), 0 } },
& ifmt_mqsaths, { 0x1ec06c0 }
},
/* cmqaddhss$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
/* cmqaddhss$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (FRINTK), ',', OP (CCI), ',', OP (COND), 0 } },
& ifmt_cmand, { 0x1cc0000 }
{ { MNEM, OP (PACK), ' ', OP (FRINTIEVEN), ',', OP (FRINTJEVEN), ',', OP (FRINTKEVEN), ',', OP (CCI), ',', OP (COND), 0 } },
& ifmt_cmqaddhss, { 0x1cc0000 }
},
/* cmqaddhus$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
/* cmqaddhus$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (FRINTK), ',', OP (CCI), ',', OP (COND), 0 } },
& ifmt_cmand, { 0x1cc0040 }
{ { MNEM, OP (PACK), ' ', OP (FRINTIEVEN), ',', OP (FRINTJEVEN), ',', OP (FRINTKEVEN), ',', OP (CCI), ',', OP (COND), 0 } },
& ifmt_cmqaddhss, { 0x1cc0040 }
},
/* cmqsubhss$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
/* cmqsubhss$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (FRINTK), ',', OP (CCI), ',', OP (COND), 0 } },
& ifmt_cmand, { 0x1cc0080 }
{ { MNEM, OP (PACK), ' ', OP (FRINTIEVEN), ',', OP (FRINTJEVEN), ',', OP (FRINTKEVEN), ',', OP (CCI), ',', OP (COND), 0 } },
& ifmt_cmqaddhss, { 0x1cc0080 }
},
/* cmqsubhus$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
/* cmqsubhus$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (FRINTK), ',', OP (CCI), ',', OP (COND), 0 } },
& ifmt_cmand, { 0x1cc00c0 }
{ { MNEM, OP (PACK), ' ', OP (FRINTIEVEN), ',', OP (FRINTJEVEN), ',', OP (FRINTKEVEN), ',', OP (CCI), ',', OP (COND), 0 } },
& ifmt_cmqaddhss, { 0x1cc00c0 }
},
/* maddaccs$pack $ACC40Si,$ACC40Sk */
{
@ -5234,41 +5290,41 @@ static const CGEN_OPCODE frv_cgen_insn_opcode_table[MAX_INSNS] =
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (ACC40SK), ',', OP (CCI), ',', OP (COND), 0 } },
& ifmt_cmmulhs, { 0x1c80040 }
},
/* mqmulhs$pack $FRinti,$FRintj,$ACC40Sk */
/* mqmulhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (ACC40SK), 0 } },
& ifmt_mmulhs, { 0x1ec0700 }
{ { MNEM, OP (PACK), ' ', OP (FRINTIEVEN), ',', OP (FRINTJEVEN), ',', OP (ACC40SK), 0 } },
& ifmt_mqmulhs, { 0x1ec0700 }
},
/* mqmulhu$pack $FRinti,$FRintj,$ACC40Sk */
/* mqmulhu$pack $FRintieven,$FRintjeven,$ACC40Sk */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (ACC40SK), 0 } },
& ifmt_mmulhs, { 0x1ec0740 }
{ { MNEM, OP (PACK), ' ', OP (FRINTIEVEN), ',', OP (FRINTJEVEN), ',', OP (ACC40SK), 0 } },
& ifmt_mqmulhs, { 0x1ec0740 }
},
/* mqmulxhs$pack $FRinti,$FRintj,$ACC40Sk */
/* mqmulxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (ACC40SK), 0 } },
& ifmt_mmulhs, { 0x1ec0a80 }
{ { MNEM, OP (PACK), ' ', OP (FRINTIEVEN), ',', OP (FRINTJEVEN), ',', OP (ACC40SK), 0 } },
& ifmt_mqmulhs, { 0x1ec0a80 }
},
/* mqmulxhu$pack $FRinti,$FRintj,$ACC40Sk */
/* mqmulxhu$pack $FRintieven,$FRintjeven,$ACC40Sk */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (ACC40SK), 0 } },
& ifmt_mmulhs, { 0x1ec0ac0 }
{ { MNEM, OP (PACK), ' ', OP (FRINTIEVEN), ',', OP (FRINTJEVEN), ',', OP (ACC40SK), 0 } },
& ifmt_mqmulhs, { 0x1ec0ac0 }
},
/* cmqmulhs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
/* cmqmulhs$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (ACC40SK), ',', OP (CCI), ',', OP (COND), 0 } },
& ifmt_cmmulhs, { 0x1d00000 }
{ { MNEM, OP (PACK), ' ', OP (FRINTIEVEN), ',', OP (FRINTJEVEN), ',', OP (ACC40SK), ',', OP (CCI), ',', OP (COND), 0 } },
& ifmt_cmqmulhs, { 0x1d00000 }
},
/* cmqmulhu$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
/* cmqmulhu$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (ACC40SK), ',', OP (CCI), ',', OP (COND), 0 } },
& ifmt_cmmulhs, { 0x1d00040 }
{ { MNEM, OP (PACK), ' ', OP (FRINTIEVEN), ',', OP (FRINTJEVEN), ',', OP (ACC40SK), ',', OP (CCI), ',', OP (COND), 0 } },
& ifmt_cmqmulhs, { 0x1d00040 }
},
/* mmachs$pack $FRinti,$FRintj,$ACC40Sk */
{
@ -5306,47 +5362,47 @@ static const CGEN_OPCODE frv_cgen_insn_opcode_table[MAX_INSNS] =
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (ACC40UK), ',', OP (CCI), ',', OP (COND), 0 } },
& ifmt_cmmachu, { 0x1c800c0 }
},
/* mqmachs$pack $FRinti,$FRintj,$ACC40Sk */
/* mqmachs$pack $FRintieven,$FRintjeven,$ACC40Sk */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (ACC40SK), 0 } },
& ifmt_mmulhs, { 0x1ec0780 }
{ { MNEM, OP (PACK), ' ', OP (FRINTIEVEN), ',', OP (FRINTJEVEN), ',', OP (ACC40SK), 0 } },
& ifmt_mqmulhs, { 0x1ec0780 }
},
/* mqmachu$pack $FRinti,$FRintj,$ACC40Uk */
/* mqmachu$pack $FRintieven,$FRintjeven,$ACC40Uk */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (ACC40UK), 0 } },
& ifmt_mmachu, { 0x1ec07c0 }
{ { MNEM, OP (PACK), ' ', OP (FRINTIEVEN), ',', OP (FRINTJEVEN), ',', OP (ACC40UK), 0 } },
& ifmt_mqmachu, { 0x1ec07c0 }
},
/* cmqmachs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
/* cmqmachs$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (ACC40SK), ',', OP (CCI), ',', OP (COND), 0 } },
& ifmt_cmmulhs, { 0x1d00080 }
{ { MNEM, OP (PACK), ' ', OP (FRINTIEVEN), ',', OP (FRINTJEVEN), ',', OP (ACC40SK), ',', OP (CCI), ',', OP (COND), 0 } },
& ifmt_cmqmulhs, { 0x1d00080 }
},
/* cmqmachu$pack $FRinti,$FRintj,$ACC40Uk,$CCi,$cond */
/* cmqmachu$pack $FRintieven,$FRintjeven,$ACC40Uk,$CCi,$cond */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (ACC40UK), ',', OP (CCI), ',', OP (COND), 0 } },
& ifmt_cmmachu, { 0x1d000c0 }
{ { MNEM, OP (PACK), ' ', OP (FRINTIEVEN), ',', OP (FRINTJEVEN), ',', OP (ACC40UK), ',', OP (CCI), ',', OP (COND), 0 } },
& ifmt_cmqmachu, { 0x1d000c0 }
},
/* mqxmachs$pack $FRinti,$FRintj,$ACC40Sk */
/* mqxmachs$pack $FRintieven,$FRintjeven,$ACC40Sk */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (ACC40SK), 0 } },
& ifmt_mmulhs, { 0x1e00000 }
{ { MNEM, OP (PACK), ' ', OP (FRINTIEVEN), ',', OP (FRINTJEVEN), ',', OP (ACC40SK), 0 } },
& ifmt_mqmulhs, { 0x1e00000 }
},
/* mqxmacxhs$pack $FRinti,$FRintj,$ACC40Sk */
/* mqxmacxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (ACC40SK), 0 } },
& ifmt_mmulhs, { 0x1e00040 }
{ { MNEM, OP (PACK), ' ', OP (FRINTIEVEN), ',', OP (FRINTJEVEN), ',', OP (ACC40SK), 0 } },
& ifmt_mqmulhs, { 0x1e00040 }
},
/* mqmacxhs$pack $FRinti,$FRintj,$ACC40Sk */
/* mqmacxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (ACC40SK), 0 } },
& ifmt_mmulhs, { 0x1e00080 }
{ { MNEM, OP (PACK), ' ', OP (FRINTIEVEN), ',', OP (FRINTJEVEN), ',', OP (ACC40SK), 0 } },
& ifmt_mqmulhs, { 0x1e00080 }
},
/* mcpxrs$pack $FRinti,$FRintj,$ACC40Sk */
{
@ -5396,29 +5452,29 @@ static const CGEN_OPCODE frv_cgen_insn_opcode_table[MAX_INSNS] =
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (ACC40SK), ',', OP (CCI), ',', OP (COND), 0 } },
& ifmt_cmmulhs, { 0x1d400c0 }
},
/* mqcpxrs$pack $FRinti,$FRintj,$ACC40Sk */
/* mqcpxrs$pack $FRintieven,$FRintjeven,$ACC40Sk */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (ACC40SK), 0 } },
& ifmt_mmulhs, { 0x1ec0900 }
{ { MNEM, OP (PACK), ' ', OP (FRINTIEVEN), ',', OP (FRINTJEVEN), ',', OP (ACC40SK), 0 } },
& ifmt_mqmulhs, { 0x1ec0900 }
},
/* mqcpxru$pack $FRinti,$FRintj,$ACC40Sk */
/* mqcpxru$pack $FRintieven,$FRintjeven,$ACC40Sk */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (ACC40SK), 0 } },
& ifmt_mmulhs, { 0x1ec0940 }
{ { MNEM, OP (PACK), ' ', OP (FRINTIEVEN), ',', OP (FRINTJEVEN), ',', OP (ACC40SK), 0 } },
& ifmt_mqmulhs, { 0x1ec0940 }
},
/* mqcpxis$pack $FRinti,$FRintj,$ACC40Sk */
/* mqcpxis$pack $FRintieven,$FRintjeven,$ACC40Sk */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (ACC40SK), 0 } },
& ifmt_mmulhs, { 0x1ec0980 }
{ { MNEM, OP (PACK), ' ', OP (FRINTIEVEN), ',', OP (FRINTJEVEN), ',', OP (ACC40SK), 0 } },
& ifmt_mqmulhs, { 0x1ec0980 }
},
/* mqcpxiu$pack $FRinti,$FRintj,$ACC40Sk */
/* mqcpxiu$pack $FRintieven,$FRintjeven,$ACC40Sk */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (ACC40SK), 0 } },
& ifmt_mmulhs, { 0x1ec09c0 }
{ { MNEM, OP (PACK), ' ', OP (FRINTIEVEN), ',', OP (FRINTJEVEN), ',', OP (ACC40SK), 0 } },
& ifmt_mqmulhs, { 0x1ec09c0 }
},
/* mexpdhw$pack $FRinti,$u6,$FRintk */
{
@ -5432,17 +5488,17 @@ static const CGEN_OPCODE frv_cgen_insn_opcode_table[MAX_INSNS] =
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (U6), ',', OP (FRINTK), ',', OP (CCI), ',', OP (COND), 0 } },
& ifmt_cmexpdhw, { 0x1d80080 }
},
/* mexpdhd$pack $FRinti,$u6,$FRintk */
/* mexpdhd$pack $FRinti,$u6,$FRintkeven */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (U6), ',', OP (FRINTK), 0 } },
& ifmt_mrotli, { 0x1ec0cc0 }
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (U6), ',', OP (FRINTKEVEN), 0 } },
& ifmt_mexpdhd, { 0x1ec0cc0 }
},
/* cmexpdhd$pack $FRinti,$u6,$FRintk,$CCi,$cond */
/* cmexpdhd$pack $FRinti,$u6,$FRintkeven,$CCi,$cond */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (U6), ',', OP (FRINTK), ',', OP (CCI), ',', OP (COND), 0 } },
& ifmt_cmexpdhw, { 0x1d800c0 }
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (U6), ',', OP (FRINTKEVEN), ',', OP (CCI), ',', OP (COND), 0 } },
& ifmt_cmexpdhd, { 0x1d800c0 }
},
/* mpackh$pack $FRinti,$FRintj,$FRintk */
{
@ -5450,47 +5506,47 @@ static const CGEN_OPCODE frv_cgen_insn_opcode_table[MAX_INSNS] =
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (FRINTK), 0 } },
& ifmt_mand, { 0x1ec0d00 }
},
/* mdpackh$pack $FRinti,$FRintj,$FRintk */
/* mdpackh$pack $FRintieven,$FRintjeven,$FRintkeven */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTJ), ',', OP (FRINTK), 0 } },
& ifmt_mand, { 0x1ec0d80 }
{ { MNEM, OP (PACK), ' ', OP (FRINTIEVEN), ',', OP (FRINTJEVEN), ',', OP (FRINTKEVEN), 0 } },
& ifmt_mqsaths, { 0x1ec0d80 }
},
/* munpackh$pack $FRinti,$FRintk */
/* munpackh$pack $FRinti,$FRintkeven */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTK), 0 } },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTKEVEN), 0 } },
& ifmt_munpackh, { 0x1ec0d40 }
},
/* mdunpackh$pack $FRinti,$FRintk */
/* mdunpackh$pack $FRintieven,$FRintk */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTI), ',', OP (FRINTK), 0 } },
& ifmt_munpackh, { 0x1ec0dc0 }
{ { MNEM, OP (PACK), ' ', OP (FRINTIEVEN), ',', OP (FRINTK), 0 } },
& ifmt_mdunpackh, { 0x1ec0dc0 }
},
/* mbtoh$pack $FRintj,$FRintk */
/* mbtoh$pack $FRintj,$FRintkeven */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTJ), ',', OP (FRINTK), 0 } },
& ifmt_mabshs, { 0x1ec0e00 }
{ { MNEM, OP (PACK), ' ', OP (FRINTJ), ',', OP (FRINTKEVEN), 0 } },
& ifmt_mbtoh, { 0x1ec0e00 }
},
/* cmbtoh$pack $FRintj,$FRintk,$CCi,$cond */
/* cmbtoh$pack $FRintj,$FRintkeven,$CCi,$cond */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTJ), ',', OP (FRINTK), ',', OP (CCI), ',', OP (COND), 0 } },
{ { MNEM, OP (PACK), ' ', OP (FRINTJ), ',', OP (FRINTKEVEN), ',', OP (CCI), ',', OP (COND), 0 } },
& ifmt_cmbtoh, { 0x1dc0000 }
},
/* mhtob$pack $FRintj,$FRintk */
/* mhtob$pack $FRintjeven,$FRintk */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTJ), ',', OP (FRINTK), 0 } },
& ifmt_mabshs, { 0x1ec0e40 }
{ { MNEM, OP (PACK), ' ', OP (FRINTJEVEN), ',', OP (FRINTK), 0 } },
& ifmt_mhtob, { 0x1ec0e40 }
},
/* cmhtob$pack $FRintj,$FRintk,$CCi,$cond */
/* cmhtob$pack $FRintjeven,$FRintk,$CCi,$cond */
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTJ), ',', OP (FRINTK), ',', OP (CCI), ',', OP (COND), 0 } },
& ifmt_cmbtoh, { 0x1dc0040 }
{ { MNEM, OP (PACK), ' ', OP (FRINTJEVEN), ',', OP (FRINTK), ',', OP (CCI), ',', OP (COND), 0 } },
& ifmt_cmhtob, { 0x1dc0040 }
},
/* mbtohe$pack $FRintj,$FRintk */
{
@ -5502,7 +5558,7 @@ static const CGEN_OPCODE frv_cgen_insn_opcode_table[MAX_INSNS] =
{
{ 0, 0, 0, 0 },
{ { MNEM, OP (PACK), ' ', OP (FRINTJ), ',', OP (FRINTK), ',', OP (CCI), ',', OP (COND), 0 } },
& ifmt_cmbtoh, { 0x1dc0080 }
& ifmt_cmbtohe, { 0x1dc0080 }
},
/* mclracc$pack $ACC40Sk,$A */
{

View File

@ -27,11 +27,14 @@ with this program; if not, write to the Free Software Foundation, Inc.,
/* -- opc.h */
#undef CGEN_DIS_HASH_SIZE
#undef CGEN_DIS_HASH_SIZE
#define CGEN_DIS_HASH_SIZE 128
#undef CGEN_DIS_HASH
#undef CGEN_DIS_HASH
#define CGEN_DIS_HASH(buffer, value) (((value) >> 18) & 127)
/* Allows reason codes to be output when assembler errors occur. */
#define CGEN_VERBOSE_ASSEMBLER_ERRORS
/* Vliw support. */
#define FRV_VLIW_SIZE 4 /* fr500 has largest vliw size of 4. */
typedef CGEN_ATTR_VALUE_TYPE VLIW_COMBO[FRV_VLIW_SIZE];

View File

@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2003-06-03 14:31+0100\n"
"POT-Creation-Date: 2003-06-05 11:34+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -87,69 +87,69 @@ msgstr ""
msgid "Address 0x%x is out of bounds.\n"
msgstr ""
#: fr30-asm.c:323 frv-asm.c:595 ip2k-asm.c:574 iq2000-asm.c:460 m32r-asm.c:325
#: fr30-asm.c:323 frv-asm.c:626 ip2k-asm.c:574 iq2000-asm.c:460 m32r-asm.c:325
#: openrisc-asm.c:244 xstormy16-asm.c:284
#, c-format
msgid "Unrecognized field %d while parsing.\n"
msgstr ""
#: fr30-asm.c:373 frv-asm.c:645 ip2k-asm.c:624 iq2000-asm.c:513 m32r-asm.c:375
#: fr30-asm.c:373 frv-asm.c:676 ip2k-asm.c:624 iq2000-asm.c:510 m32r-asm.c:375
#: openrisc-asm.c:294 xstormy16-asm.c:334
msgid "missing mnemonic in syntax string"
msgstr ""
#. We couldn't parse it.
#: fr30-asm.c:509 fr30-asm.c:513 fr30-asm.c:600 fr30-asm.c:702 frv-asm.c:781
#: frv-asm.c:785 frv-asm.c:872 frv-asm.c:974 ip2k-asm.c:760 ip2k-asm.c:764
#: ip2k-asm.c:851 ip2k-asm.c:953 iq2000-asm.c:649 iq2000-asm.c:653
#: iq2000-asm.c:740 iq2000-asm.c:842 m32r-asm.c:511 m32r-asm.c:515
#: fr30-asm.c:509 fr30-asm.c:513 fr30-asm.c:600 fr30-asm.c:702 frv-asm.c:812
#: frv-asm.c:816 frv-asm.c:903 frv-asm.c:1005 ip2k-asm.c:760 ip2k-asm.c:764
#: ip2k-asm.c:851 ip2k-asm.c:953 iq2000-asm.c:646 iq2000-asm.c:650
#: iq2000-asm.c:737 iq2000-asm.c:839 m32r-asm.c:511 m32r-asm.c:515
#: m32r-asm.c:602 m32r-asm.c:704 openrisc-asm.c:430 openrisc-asm.c:434
#: openrisc-asm.c:521 openrisc-asm.c:623 xstormy16-asm.c:470
#: xstormy16-asm.c:474 xstormy16-asm.c:561 xstormy16-asm.c:663
msgid "unrecognized instruction"
msgstr ""
#: fr30-asm.c:556 frv-asm.c:828 ip2k-asm.c:807 iq2000-asm.c:696 m32r-asm.c:558
#: fr30-asm.c:556 frv-asm.c:859 ip2k-asm.c:807 iq2000-asm.c:693 m32r-asm.c:558
#: openrisc-asm.c:477 xstormy16-asm.c:517
#, c-format
msgid "syntax error (expected char `%c', found `%c')"
msgstr ""
#: fr30-asm.c:566 frv-asm.c:838 ip2k-asm.c:817 iq2000-asm.c:706 m32r-asm.c:568
#: fr30-asm.c:566 frv-asm.c:869 ip2k-asm.c:817 iq2000-asm.c:703 m32r-asm.c:568
#: openrisc-asm.c:487 xstormy16-asm.c:527
#, c-format
msgid "syntax error (expected char `%c', found end of instruction)"
msgstr ""
#: fr30-asm.c:594 frv-asm.c:866 ip2k-asm.c:845 iq2000-asm.c:734 m32r-asm.c:596
#: fr30-asm.c:594 frv-asm.c:897 ip2k-asm.c:845 iq2000-asm.c:731 m32r-asm.c:596
#: openrisc-asm.c:515 xstormy16-asm.c:555
msgid "junk at end of line"
msgstr ""
#: fr30-asm.c:701 frv-asm.c:973 ip2k-asm.c:952 iq2000-asm.c:841 m32r-asm.c:703
#: openrisc-asm.c:622 xstormy16-asm.c:662
#: fr30-asm.c:701 frv-asm.c:1004 ip2k-asm.c:952 iq2000-asm.c:838
#: m32r-asm.c:703 openrisc-asm.c:622 xstormy16-asm.c:662
msgid "unrecognized form of instruction"
msgstr ""
#: fr30-asm.c:713 frv-asm.c:985 ip2k-asm.c:964 iq2000-asm.c:853 m32r-asm.c:715
#: openrisc-asm.c:634 xstormy16-asm.c:674
#: fr30-asm.c:713 frv-asm.c:1016 ip2k-asm.c:964 iq2000-asm.c:850
#: m32r-asm.c:715 openrisc-asm.c:634 xstormy16-asm.c:674
#, c-format
msgid "bad instruction `%.50s...'"
msgstr ""
#: fr30-asm.c:716 frv-asm.c:988 ip2k-asm.c:967 iq2000-asm.c:856 m32r-asm.c:718
#: openrisc-asm.c:637 xstormy16-asm.c:677
#: fr30-asm.c:716 frv-asm.c:1019 ip2k-asm.c:967 iq2000-asm.c:853
#: m32r-asm.c:718 openrisc-asm.c:637 xstormy16-asm.c:677
#, c-format
msgid "bad instruction `%.50s'"
msgstr ""
#. Default text to print if an instruction isn't recognized.
#: fr30-dis.c:41 frv-dis.c:41 ip2k-dis.c:41 iq2000-dis.c:39 m32r-dis.c:41
#: fr30-dis.c:41 frv-dis.c:41 ip2k-dis.c:41 iq2000-dis.c:41 m32r-dis.c:41
#: mmix-dis.c:284 openrisc-dis.c:41 xstormy16-dis.c:41
msgid "*unknown*"
msgstr ""
#: fr30-dis.c:320 frv-dis.c:362 ip2k-dis.c:329 iq2000-dis.c:190 m32r-dis.c:251
#: fr30-dis.c:320 frv-dis.c:371 ip2k-dis.c:329 iq2000-dis.c:192 m32r-dis.c:251
#: openrisc-dis.c:138 xstormy16-dis.c:171
#, c-format
msgid "Unrecognized field %d while printing insn.\n"
@ -167,50 +167,54 @@ msgstr ""
msgid "operand out of range (%lu not between 0 and %lu)"
msgstr ""
#: fr30-ibld.c:730 frv-ibld.c:820 ip2k-ibld.c:607 iq2000-ibld.c:713
#: fr30-ibld.c:730 frv-ibld.c:829 ip2k-ibld.c:607 iq2000-ibld.c:713
#: m32r-ibld.c:659 openrisc-ibld.c:633 xstormy16-ibld.c:678
#, c-format
msgid "Unrecognized field %d while building insn.\n"
msgstr ""
#: fr30-ibld.c:937 frv-ibld.c:1103 ip2k-ibld.c:684 iq2000-ibld.c:890
#: fr30-ibld.c:937 frv-ibld.c:1121 ip2k-ibld.c:684 iq2000-ibld.c:890
#: m32r-ibld.c:792 openrisc-ibld.c:735 xstormy16-ibld.c:826
#, c-format
msgid "Unrecognized field %d while decoding insn.\n"
msgstr ""
#: fr30-ibld.c:1086 frv-ibld.c:1348 ip2k-ibld.c:761 iq2000-ibld.c:1024
#: fr30-ibld.c:1086 frv-ibld.c:1375 ip2k-ibld.c:761 iq2000-ibld.c:1024
#: m32r-ibld.c:902 openrisc-ibld.c:815 xstormy16-ibld.c:939
#, c-format
msgid "Unrecognized field %d while getting int operand.\n"
msgstr ""
#: fr30-ibld.c:1215 frv-ibld.c:1573 ip2k-ibld.c:818 iq2000-ibld.c:1138
#: fr30-ibld.c:1215 frv-ibld.c:1609 ip2k-ibld.c:818 iq2000-ibld.c:1138
#: m32r-ibld.c:992 openrisc-ibld.c:875 xstormy16-ibld.c:1032
#, c-format
msgid "Unrecognized field %d while getting vma operand.\n"
msgstr ""
#: fr30-ibld.c:1349 frv-ibld.c:1807 ip2k-ibld.c:880 iq2000-ibld.c:1261
#: fr30-ibld.c:1349 frv-ibld.c:1852 ip2k-ibld.c:880 iq2000-ibld.c:1261
#: m32r-ibld.c:1090 openrisc-ibld.c:944 xstormy16-ibld.c:1134
#, c-format
msgid "Unrecognized field %d while setting int operand.\n"
msgstr ""
#: fr30-ibld.c:1471 frv-ibld.c:2029 ip2k-ibld.c:930 iq2000-ibld.c:1372
#: fr30-ibld.c:1471 frv-ibld.c:2083 ip2k-ibld.c:930 iq2000-ibld.c:1372
#: m32r-ibld.c:1176 openrisc-ibld.c:1001 xstormy16-ibld.c:1224
#, c-format
msgid "Unrecognized field %d while setting vma operand.\n"
msgstr ""
#: h8300-dis.c:407
#, c-format
msgid "Hmmmm %x"
#: frv-asm.c:365
msgid "register number must be even"
msgstr ""
#: h8300-dis.c:418
#: h8300-dis.c:377
#, c-format
msgid "Don't understand %x \n"
msgid "Hmmmm 0x%x"
msgstr ""
#: h8300-dis.c:760
#, c-format
msgid "Don't understand 0x%x \n"
msgstr ""
#: h8500-dis.c:143