This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[patch] VLIW unit expansion for FRV simulator


Hi,

I've committed the attached patch which diversifies the VLIW unit attribute for FRV insns to allow for more detailed VLIW packing constraints. It also corrects the VLIW unit assignment for variants of the mclracc insn for fr400 and fr500.

Dave
2003-09-03  Dave Brolley  <brolley@redhat.com>

	* frv.opc (parse_A, parse_A0, parse_A1): New parse handlers.
	* frv.cpu (UNIT): Add IALL, FMALL, FMLOW, STORE, SCAN, DCPL, MDUALACC,
	MCLRACC-1.
	(A): Removed operand.
	(A0,A1): New operands replace operand A.
	(mnop): Now a real insn
	(mclracc): Removed insn.
	(mclracc-0, mclracc-1): New insns replace mclracc.
	(all insns): Use new UNIT attributes.

Index: cpu/frv.cpu
===================================================================
RCS file: /cvs/src/src/cpu/frv.cpu,v
retrieving revision 1.6
diff -c -p -r1.6 frv.cpu
*** cpu/frv.cpu	21 Aug 2003 13:37:01 -0000	1.6
--- cpu/frv.cpu	3 Sep 2003 22:59:29 -0000
***************
*** 931,945 ****
    (type enum)
    (name UNIT)
    (comment "parallel execution pipeline selection")
!   ; The order of declaration is significant. Keep variations on the same unit
!   ; together and keep the '01' variation last within each unit.
    (values NIL
! 	  I0 I1 I01
! 	  FM0 FM1 FM01
  	  B0 B1 B01
  	  C
  	  MULT-DIV ; multiply/division slotted differently on different machines
  	  LOAD     ; loads             slotted differently on different machines
  	  NUM_UNITS
    )
  )
--- 931,953 ----
    (type enum)
    (name UNIT)
    (comment "parallel execution pipeline selection")
!   ; The order of declaration is significant. 
!   ; See the *_unit_mapping tables in frv.opc
!   ; Keep variations on the same unit together.
!   ; Keep the '01' variant immediately after the '1' variant in each unit.
!   ; Keep the 'ALL' variations immediately after the last numbered variant in each unit.
    (values NIL
! 	  I0 I1 I01 IALL
! 	  FM0 FM1 FM01 FMALL FMLOW
  	  B0 B1 B01
  	  C
  	  MULT-DIV ; multiply/division slotted differently on different machines
  	  LOAD     ; loads             slotted differently on different machines
+ 	  STORE    ; store             slotted differently on different machines
+ 	  SCAN     ; scan, scani       slotted differently on different machines
+ 	  DCPL     ; dcpl              slotted differently on different machines
+ 	  MDUALACC ; media dual acc    slotted differently on different machines
+ 	  MCLRACC-1; mclracc A==1      slotted differently on different machines
  	  NUM_UNITS
    )
  )
***************
*** 2221,2233 ****
  (dnop LI      "link indicator"            () h-uint f-LI)
  (dnop lock    "cache lock indicator"      (HASH-PREFIX) h-uint f-lock)
  (dnop debug   "debug mode indicator"      (HASH-PREFIX) h-uint f-debug)
- (dnop A       "all accumulator indicator" (HASH-PREFIX) h-uint f-A)
  (dnop ae      "all entries indicator"     (HASH-PREFIX) h-uint f-ae)
  
  (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)
--- 2229,2260 ----
  (dnop LI      "link indicator"            () h-uint f-LI)
  (dnop lock    "cache lock indicator"      (HASH-PREFIX) h-uint f-lock)
  (dnop debug   "debug mode indicator"      (HASH-PREFIX) h-uint f-debug)
  (dnop ae      "all entries indicator"     (HASH-PREFIX) h-uint f-ae)
  
  (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 A0)
+   (comment "A==0 operand of mclracc")
+   (attrs)
+   (type h-uint)
+   (index f-A)
+   (mode USI)
+   (handlers (parse "A0"))
+ )
+ 
+ (define-operand
+   (name A1)
+   (comment "A==1 operand of mclracc")
+   (attrs)
+   (type h-uint)
+   (index f-A)
+   (mode USI)
+   (handlers (parse "A1"))
+ )
+ 
+ (define-operand
    (name FRintieven)
    (comment "(even) source register 1")
    (attrs)
***************
*** 2447,2461 ****
    (trunc BI (and icc #x1))
  )
  
! ; FRV specific insn attributes:
  ;
- 
  ; Format: INT, Logic, Shift r-r
  ;
  (define-pmacro (int-logic-r-r name operation op ope comment)
    (dni name
         (comment)
!        ((UNIT I01) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
         (.str name "$pack $GRi,$GRj,$GRk")
         (+ pack GRk op GRi (ICCi_1-null) ope GRj)
         (set GRk (operation GRi GRj))
--- 2474,2488 ----
    (trunc BI (and icc #x1))
  )
  
! ; FRV insns
! ;
  ;
  ; Format: INT, Logic, Shift r-r
  ;
  (define-pmacro (int-logic-r-r name operation op ope comment)
    (dni name
         (comment)
!        ((UNIT IALL) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
         (.str name "$pack $GRi,$GRj,$GRk")
         (+ pack GRk op GRi (ICCi_1-null) ope GRj)
         (set GRk (operation GRi GRj))
***************
*** 2472,2478 ****
  
  (dni not
       ("not")
!      ((UNIT I01) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
       ("not$pack $GRj,$GRk")
       (+ pack GRk OP_01 (rs-null) (ICCi_1-null) OPE2_06 GRj)
       (set GRk (inv GRj))
--- 2499,2505 ----
  
  (dni not
       ("not")
!      ((UNIT IALL) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
       ("not$pack $GRj,$GRk")
       (+ pack GRk OP_01 (rs-null) (ICCi_1-null) OPE2_06 GRj)
       (set GRk (inv GRj))
***************
*** 2554,2560 ****
  (define-pmacro (int-shift-r-r name op ope comment)
    (dni name
         (comment)
!        ((UNIT I01) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
         (.str name "$pack $GRi,$GRj,$GRk")
         (+ pack GRk op GRi (ICCi_1-null) ope GRj)
         (set GRk (name GRi (and GRj #x1f)))
--- 2581,2587 ----
  (define-pmacro (int-shift-r-r name op ope comment)
    (dni name
         (comment)
!        ((UNIT IALL) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
         (.str name "$pack $GRi,$GRj,$GRk")
         (+ pack GRk op GRi (ICCi_1-null) ope GRj)
         (set GRk (name GRi (and GRj #x1f)))
***************
*** 2576,2582 ****
  
  (dni scan
       "scan"
!      ((UNIT MULT-DIV) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
       "scan$pack $GRi,$GRj,$GRk"
       (+ pack GRk OP_0B GRi (ICCi_1-null) OPE2_00 GRj)
       (scan-semantics GRi GRj GRk)
--- 2603,2609 ----
  
  (dni scan
       "scan"
!      ((UNIT SCAN) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
       "scan$pack $GRi,$GRj,$GRk"
       (+ pack GRk OP_0B GRi (ICCi_1-null) OPE2_00 GRj)
       (scan-semantics GRi GRj GRk)
***************
*** 2589,2595 ****
  (define-pmacro (conditional-int-logic name operation op ope comment)
    (dni name
         (comment)
!        ((UNIT I01) (FR500-MAJOR I-1) (FR400-MAJOR I-1) CONDITIONAL)
         (.str name "$pack $GRi,$GRj,$GRk,$CCi,$cond")
         (+ pack GRk op GRi CCi cond ope GRj)
         (if (eq CCi (or cond 2))
--- 2616,2622 ----
  (define-pmacro (conditional-int-logic name operation op ope comment)
    (dni name
         (comment)
!        ((UNIT IALL) (FR500-MAJOR I-1) (FR400-MAJOR I-1) CONDITIONAL)
         (.str name "$pack $GRi,$GRj,$GRk,$CCi,$cond")
         (+ pack GRk op GRi CCi cond ope GRj)
         (if (eq CCi (or cond 2))
***************
*** 2607,2613 ****
  
  (dni cnot
       "conditional not"
!      ((UNIT I01) (FR500-MAJOR I-1) (FR400-MAJOR I-1) CONDITIONAL)
       "cnot$pack $GRj,$GRk,$CCi,$cond"
       (+ pack GRk OP_5A (rs-null) CCi cond OPE4_3 GRj)
       (if (eq CCi (or cond 2))
--- 2634,2640 ----
  
  (dni cnot
       "conditional not"
!      ((UNIT IALL) (FR500-MAJOR I-1) (FR400-MAJOR I-1) CONDITIONAL)
       "cnot$pack $GRj,$GRk,$CCi,$cond"
       (+ pack GRk OP_5A (rs-null) CCi cond OPE4_3 GRj)
       (if (eq CCi (or cond 2))
***************
*** 2658,2664 ****
  (define-pmacro (conditional-shift name operation op ope comment)
    (dni name
         (comment)
!        ((UNIT I01) (FR500-MAJOR I-1) (FR400-MAJOR I-1) CONDITIONAL)
         (.str name "$pack $GRi,$GRj,$GRk,$CCi,$cond")
         (+ pack GRk op GRi CCi cond ope GRj)
         (if (eq CCi (or cond 2))
--- 2685,2691 ----
  (define-pmacro (conditional-shift name operation op ope comment)
    (dni name
         (comment)
!        ((UNIT IALL) (FR500-MAJOR I-1) (FR400-MAJOR I-1) CONDITIONAL)
         (.str name "$pack $GRi,$GRj,$GRk,$CCi,$cond")
         (+ pack GRk op GRi CCi cond ope GRj)
         (if (eq CCi (or cond 2))
***************
*** 2674,2680 ****
  
  (dni cscan
       "conditional scan"
!      ((UNIT MULT-DIV) (FR500-MAJOR I-1) (FR400-MAJOR I-1) CONDITIONAL)
       "cscan$pack $GRi,$GRj,$GRk,$CCi,$cond"
       (+ pack GRk OP_65 GRi CCi cond OPE4_3 GRj)
       (if (eq CCi (or cond 2))
--- 2701,2707 ----
  
  (dni cscan
       "conditional scan"
!      ((UNIT SCAN) (FR500-MAJOR I-1) (FR400-MAJOR I-1) CONDITIONAL)
       "cscan$pack $GRi,$GRj,$GRk,$CCi,$cond"
       (+ pack GRk OP_65 GRi CCi cond OPE4_3 GRj)
       (if (eq CCi (or cond 2))
***************
*** 2701,2707 ****
  (define-pmacro (int-arith-cc-r-r name operation op ope comment)
    (dni name
         (comment)
!        ((UNIT I01) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
         (.str name "$pack $GRi,$GRj,$GRk,$ICCi_1")
         (+ pack GRk op GRi ICCi_1 ope GRj)
         (int-arith-cc-semantics operation ICCi_1)
--- 2728,2734 ----
  (define-pmacro (int-arith-cc-r-r name operation op ope comment)
    (dni name
         (comment)
!        ((UNIT IALL) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
         (.str name "$pack $GRi,$GRj,$GRk,$ICCi_1")
         (+ pack GRk op GRi ICCi_1 ope GRj)
         (int-arith-cc-semantics operation ICCi_1)
***************
*** 2723,2729 ****
  (define-pmacro (int-logic-cc-r-r name op ope comment)
    (dni (.sym name cc)
         (comment)
!        ((UNIT I01) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
         (.str (.sym name cc) "$pack $GRi,$GRj,$GRk,$ICCi_1")
         (+ pack GRk op GRi ICCi_1 ope GRj)
         (int-logic-cc-semantics name ICCi_1)
--- 2750,2756 ----
  (define-pmacro (int-logic-cc-r-r name op ope comment)
    (dni (.sym name cc)
         (comment)
!        ((UNIT IALL) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
         (.str (.sym name cc) "$pack $GRi,$GRj,$GRk,$ICCi_1")
         (+ pack GRk op GRi ICCi_1 ope GRj)
         (int-logic-cc-semantics name ICCi_1)
***************
*** 2750,2756 ****
  (define-pmacro (int-shift-cc-r-r name l-r op ope comment)
    (dni (.sym name cc)
         (comment)
!        ((UNIT I01) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
         (.str (.sym name cc) "$pack $GRi,$GRj,$GRk,$ICCi_1")
         (+ pack GRk op GRi ICCi_1 ope GRj)
         (int-shift-cc-semantics name l-r ICCi_1)
--- 2777,2783 ----
  (define-pmacro (int-shift-cc-r-r name l-r op ope comment)
    (dni (.sym name cc)
         (comment)
!        ((UNIT IALL) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
         (.str (.sym name cc) "$pack $GRi,$GRj,$GRk,$ICCi_1")
         (+ pack GRk op GRi ICCi_1 ope GRj)
         (int-shift-cc-semantics name l-r ICCi_1)
***************
*** 2794,2800 ****
  (define-pmacro (conditional-int-arith-cc name operation op ope comment)
    (dni name
         (comment)
!        ((UNIT I01) (FR500-MAJOR I-1) (FR400-MAJOR I-1) CONDITIONAL)
         (.str name "$pack $GRi,$GRj,$GRk,$CCi,$cond")
         (+ pack GRk op GRi CCi cond ope GRj)
         (if (eq CCi (or cond 2))
--- 2821,2827 ----
  (define-pmacro (conditional-int-arith-cc name operation op ope comment)
    (dni name
         (comment)
!        ((UNIT IALL) (FR500-MAJOR I-1) (FR400-MAJOR I-1) CONDITIONAL)
         (.str name "$pack $GRi,$GRj,$GRk,$CCi,$cond")
         (+ pack GRk op GRi CCi cond ope GRj)
         (if (eq CCi (or cond 2))
***************
*** 2823,2829 ****
  (define-pmacro (conditional-int-logic-cc name operation op ope comment)
    (dni name
         (comment)
!        ((UNIT I01) (FR500-MAJOR I-1) (FR400-MAJOR I-1) CONDITIONAL)
         (.str name "$pack $GRi,$GRj,$GRk,$CCi,$cond")
         (+ pack GRk op GRi CCi cond ope GRj)
         (if (eq CCi (or cond 2))
--- 2850,2856 ----
  (define-pmacro (conditional-int-logic-cc name operation op ope comment)
    (dni name
         (comment)
!        ((UNIT IALL) (FR500-MAJOR I-1) (FR400-MAJOR I-1) CONDITIONAL)
         (.str name "$pack $GRi,$GRj,$GRk,$CCi,$cond")
         (+ pack GRk op GRi CCi cond ope GRj)
         (if (eq CCi (or cond 2))
***************
*** 2841,2847 ****
  (define-pmacro (conditional-int-shift-cc name l-r op ope comment)
    (dni (.sym c name cc)
         (comment)
!        ((UNIT I01) (FR500-MAJOR I-1) (FR400-MAJOR I-1) CONDITIONAL)
         (.str (.sym c name cc) "$pack $GRi,$GRj,$GRk,$CCi,$cond")
         (+ pack GRk op GRi CCi cond ope GRj)
         (if (eq CCi (or cond 2))
--- 2868,2874 ----
  (define-pmacro (conditional-int-shift-cc name l-r op ope comment)
    (dni (.sym c name cc)
         (comment)
!        ((UNIT IALL) (FR500-MAJOR I-1) (FR400-MAJOR I-1) CONDITIONAL)
         (.str (.sym c name cc) "$pack $GRi,$GRj,$GRk,$CCi,$cond")
         (+ pack GRk op GRi CCi cond ope GRj)
         (if (eq CCi (or cond 2))
***************
*** 2861,2867 ****
  (define-pmacro (int-arith-x-r-r name operation op ope comment)
    (dni name
         (comment)
!        ((UNIT I01) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
         (.str name "$pack $GRi,$GRj,$GRk,$ICCi_1")
         (+ pack GRk op GRi ICCi_1 ope GRj)
         (set GRk ((.sym operation c) GRi GRj (cbit ICCi_1)))
--- 2888,2894 ----
  (define-pmacro (int-arith-x-r-r name operation op ope comment)
    (dni name
         (comment)
!        ((UNIT IALL) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
         (.str name "$pack $GRi,$GRj,$GRk,$ICCi_1")
         (+ pack GRk op GRi ICCi_1 ope GRj)
         (set GRk ((.sym operation c) GRi GRj (cbit ICCi_1)))
***************
*** 2876,2882 ****
  (define-pmacro (int-arith-x-cc-r-r name operation op ope comment)
    (dni name
         (comment)
!        ((UNIT I01) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
         (.str name "$pack $GRi,$GRj,$GRk,$ICCi_1")
         (+ pack GRk op GRi ICCi_1 ope GRj)
         (sequence ((WI tmp) (QI cc))
--- 2903,2909 ----
  (define-pmacro (int-arith-x-cc-r-r name operation op ope comment)
    (dni name
         (comment)
!        ((UNIT IALL) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
         (.str name "$pack $GRi,$GRj,$GRk,$ICCi_1")
         (+ pack GRk op GRi ICCi_1 ope GRj)
         (sequence ((WI tmp) (QI cc))
***************
*** 2900,2906 ****
  (define-pmacro (int-logic-r-simm name operation op comment)
    (dni name
         (comment)
!        ((UNIT I01) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
         (.str name "$pack $GRi,$s12,$GRk")
         (+ pack GRk op GRi s12)
         (set GRk (operation GRi s12))
--- 2927,2933 ----
  (define-pmacro (int-logic-r-simm name operation op comment)
    (dni name
         (comment)
!        ((UNIT IALL) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
         (.str name "$pack $GRi,$s12,$GRk")
         (+ pack GRk op GRi s12)
         (set GRk (operation GRi s12))
***************
*** 2987,2993 ****
  (define-pmacro (int-shift-r-simm name op comment)
    (dni (.sym name i)
         (comment)
!        ((UNIT I01) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
         (.str (.sym name i) "$pack $GRi,$s12,$GRk")
         (+ pack GRk op GRi s12)
         (set GRk (name GRi (and s12 #x1f)))
--- 3014,3020 ----
  (define-pmacro (int-shift-r-simm name op comment)
    (dni (.sym name i)
         (comment)
!        ((UNIT IALL) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
         (.str (.sym name i) "$pack $GRi,$s12,$GRk")
         (+ pack GRk op GRi s12)
         (set GRk (name GRi (and s12 #x1f)))
***************
*** 3002,3008 ****
  
  (dni scani
       "scan immediate"
!      ((UNIT MULT-DIV) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
       "scani$pack $GRi,$s12,$GRk"
       (+ pack GRk OP_47 GRi s12)
       (scan-semantics GRi s12 GRk)
--- 3029,3035 ----
  
  (dni scani
       "scan immediate"
!      ((UNIT SCAN) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
       "scani$pack $GRi,$s12,$GRk"
       (+ pack GRk OP_47 GRi s12)
       (scan-semantics GRi s12 GRk)
***************
*** 3015,3021 ****
  (define-pmacro (int-arith-cc-r-simm name operation op comment)
    (dni name
         (comment)
!        ((UNIT I01) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
         (.str name "$pack $GRi,$s10,$GRk,$ICCi_1")
         (+ pack GRk op GRi ICCi_1 s10)
         (sequence ((BI tmp) (QI cc) (SI result))
--- 3042,3048 ----
  (define-pmacro (int-arith-cc-r-simm name operation op comment)
    (dni name
         (comment)
!        ((UNIT IALL) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
         (.str name "$pack $GRi,$s10,$GRk,$ICCi_1")
         (+ pack GRk op GRi ICCi_1 s10)
         (sequence ((BI tmp) (QI cc) (SI result))
***************
*** 3039,3045 ****
  (define-pmacro (int-logic-cc-r-simm name op comment)
    (dni (.sym name icc)
         (comment)
!        ((UNIT I01) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
         (.str (.sym name icc) "$pack $GRi,$s10,$GRk,$ICCi_1")
         (+ pack GRk op GRi ICCi_1 s10)
         (sequence ((SI tmp))
--- 3066,3072 ----
  (define-pmacro (int-logic-cc-r-simm name op comment)
    (dni (.sym name icc)
         (comment)
!        ((UNIT IALL) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
         (.str (.sym name icc) "$pack $GRi,$s10,$GRk,$ICCi_1")
         (+ pack GRk op GRi ICCi_1 s10)
         (sequence ((SI tmp))
***************
*** 3073,3079 ****
  (define-pmacro (int-shift-cc-r-simm name l-r op comment)
    (dni (.sym name icc)
         (comment)
!        ((UNIT I01) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
         (.str (.sym name icc) "$pack $GRi,$s10,$GRk,$ICCi_1")
         (+ pack GRk op GRi ICCi_1 s10)
         (sequence ((WI shift) (SI tmp) (QI cc))
--- 3100,3106 ----
  (define-pmacro (int-shift-cc-r-simm name l-r op comment)
    (dni (.sym name icc)
         (comment)
!        ((UNIT IALL) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
         (.str (.sym name icc) "$pack $GRi,$s10,$GRk,$ICCi_1")
         (+ pack GRk op GRi ICCi_1 s10)
         (sequence ((WI shift) (SI tmp) (QI cc))
***************
*** 3096,3102 ****
  (define-pmacro (int-arith-x-r-simm name operation op comment)
    (dni name
         (comment)
!        ((UNIT I01) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
         (.str name "$pack $GRi,$s10,$GRk,$ICCi_1")
         (+ pack GRk op GRi ICCi_1 s10)
         (set GRk ((.sym operation c) GRi s10 (cbit ICCi_1)))
--- 3123,3129 ----
  (define-pmacro (int-arith-x-r-simm name operation op comment)
    (dni name
         (comment)
!        ((UNIT IALL) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
         (.str name "$pack $GRi,$s10,$GRk,$ICCi_1")
         (+ pack GRk op GRi ICCi_1 s10)
         (set GRk ((.sym operation c) GRi s10 (cbit ICCi_1)))
***************
*** 3111,3117 ****
  (define-pmacro (int-arith-x-cc-r-simm name operation op comment)
    (dni name
         (comment)
!        ((UNIT I01) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
         (.str name "$pack $GRi,$s10,$GRk,$ICCi_1")
         (+ pack GRk op GRi ICCi_1 s10)
         (sequence ((WI tmp) (QI cc))
--- 3138,3144 ----
  (define-pmacro (int-arith-x-cc-r-simm name operation op comment)
    (dni name
         (comment)
!        ((UNIT IALL) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
         (.str name "$pack $GRi,$s10,$GRk,$ICCi_1")
         (+ pack GRk op GRi ICCi_1 s10)
         (sequence ((WI tmp) (QI cc))
***************
*** 3134,3140 ****
  
  (dni cmpb
       "Compare bytes"
!      ((UNIT I01) (FR400-MAJOR I-1) (MACH fr400))
       "cmpb$pack $GRi,$GRj,$ICCi_1"
       (+ pack (GRk-null) OP_00 GRi ICCi_1 OPE2_0C GRj)
       (sequence ((QI cc))
--- 3161,3167 ----
  
  (dni cmpb
       "Compare bytes"
!      ((UNIT IALL) (FR400-MAJOR I-1) (MACH fr400))
       "cmpb$pack $GRi,$GRj,$ICCi_1"
       (+ pack (GRk-null) OP_00 GRi ICCi_1 OPE2_0C GRj)
       (sequence ((QI cc))
***************
*** 3148,3154 ****
  
  (dni cmpba
       "OR of Compare bytes"
!      ((UNIT I01) (FR400-MAJOR I-1) (MACH fr400))
       "cmpba$pack $GRi,$GRj,$ICCi_1"
       (+ pack (GRk-null) OP_00 GRi ICCi_1 OPE2_0D GRj)
       (sequence ((QI cc))
--- 3175,3181 ----
  
  (dni cmpba
       "OR of Compare bytes"
!      ((UNIT IALL) (FR400-MAJOR I-1) (MACH fr400))
       "cmpba$pack $GRi,$GRj,$ICCi_1"
       (+ pack (GRk-null) OP_00 GRi ICCi_1 OPE2_0D GRj)
       (sequence ((QI cc))
***************
*** 3168,3174 ****
  ;
  (dni setlo
       "set low order bits"
!      ((UNIT I01) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
       "setlo$pack $ulo16,$GRklo"
       (+ pack GRk OP_3D (misc-null-4) u16)
       (set GRklo u16)
--- 3195,3201 ----
  ;
  (dni setlo
       "set low order bits"
!      ((UNIT IALL) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
       "setlo$pack $ulo16,$GRklo"
       (+ pack GRk OP_3D (misc-null-4) u16)
       (set GRklo u16)
***************
*** 3178,3184 ****
  
  (dni sethi
       "set high order bits"
!      ((UNIT I01) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
       "sethi$pack $uhi16,$GRkhi"
       (+ pack GRkhi OP_3E (misc-null-4) u16)
       (set GRkhi u16)
--- 3205,3211 ----
  
  (dni sethi
       "set high order bits"
!      ((UNIT IALL) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
       "sethi$pack $uhi16,$GRkhi"
       (+ pack GRkhi OP_3E (misc-null-4) u16)
       (set GRkhi u16)
***************
*** 3188,3194 ****
  
  (dni setlos
       "set low order bits and extend sign"
!      ((UNIT I01) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
       "setlos$pack $slo16,$GRk"
       (+ pack GRk OP_3F (misc-null-4) s16)
       (set GRk s16)
--- 3215,3221 ----
  
  (dni setlos
       "set low order bits and extend sign"
!      ((UNIT IALL) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
       "setlos$pack $slo16,$GRk"
       (+ pack GRk OP_3F (misc-null-4) s16)
       (set GRk s16)
***************
*** 3816,3822 ****
  (define-pmacro (store-r-r name mode op ope reg attr profile comment)
    (dni name
         (comment)
!        ((UNIT I0) (FR500-MAJOR I-3) (FR400-MAJOR I-3) attr)
         (.str name "$pack $" reg "k,@($GRi,$GRj)")
         (+ pack (.sym reg k) op GRi ope GRj)
         (c-call VOID (.str "@cpu@_write_mem_" mode)
--- 3843,3849 ----
  (define-pmacro (store-r-r name mode op ope reg attr profile comment)
    (dni name
         (comment)
!        ((UNIT STORE) (FR500-MAJOR I-3) (FR400-MAJOR I-3) attr)
         (.str name "$pack $" reg "k,@($GRi,$GRj)")
         (+ pack (.sym reg k) op GRi ope GRj)
         (c-call VOID (.str "@cpu@_write_mem_" mode)
***************
*** 3850,3856 ****
  (define-pmacro (r-store name mode op ope reg size is_float profile comment)
    (dni name
         (comment)
!        ((UNIT I0) (FR500-MAJOR I-3) (MACH frv))
         (.str name "$pack $" reg "k,@($GRi,$GRj)")
         (+ pack (.sym reg k) op GRi ope GRj)
         (sequence ((WI address))
--- 3877,3883 ----
  (define-pmacro (r-store name mode op ope reg size is_float profile comment)
    (dni name
         (comment)
!        ((UNIT STORE) (FR500-MAJOR I-3) (MACH frv))
         (.str name "$pack $" reg "k,@($GRi,$GRj)")
         (+ pack (.sym reg k) op GRi ope GRj)
         (sequence ((WI address))
***************
*** 3889,3895 ****
  (define-pmacro (store-double-r-r name mode op ope regtype attr profile comment)
    (dni name
         (comment)
!        ((UNIT I0) (FR500-MAJOR I-3) (FR400-MAJOR I-3) attr)
         (.str name "$pack $" regtype "k,@($GRi,$GRj)")
         (+ pack (.sym regtype k) op GRi ope GRj)
         (sequence ((WI address))
--- 3916,3922 ----
  (define-pmacro (store-double-r-r name mode op ope regtype attr profile comment)
    (dni name
         (comment)
!        ((UNIT STORE) (FR500-MAJOR I-3) (FR400-MAJOR I-3) attr)
         (.str name "$pack $" regtype "k,@($GRi,$GRj)")
         (+ pack (.sym regtype k) op GRi ope GRj)
         (sequence ((WI address))
***************
*** 3912,3918 ****
  		name mode op ope regtype is_float attr profile comment)
    (dni name
         (comment)
!        ((UNIT I0) (FR500-MAJOR I-3) (MACH frv) attr)
         (.str name "$pack $" regtype "k,@($GRi,$GRj)")
         (+ pack (.sym regtype k) op GRi ope GRj)
         (sequence ((WI address))
--- 3939,3945 ----
  		name mode op ope regtype is_float attr profile comment)
    (dni name
         (comment)
!        ((UNIT STORE) (FR500-MAJOR I-3) (MACH frv) attr)
         (.str name "$pack $" regtype "k,@($GRi,$GRj)")
         (+ pack (.sym regtype k) op GRi ope GRj)
         (sequence ((WI address))
***************
*** 3940,3946 ****
  (define-pmacro (store-quad-r-r name op ope regtype attr profile comment)
    (dni name
         (comment)
!        ((UNIT I0) (FR500-MAJOR I-3) (MACH frv) attr)
         (.str name "$pack $" regtype "k,@($GRi,$GRj)")
         (+ pack (.sym regtype k) op GRi ope GRj)
         (sequence ((WI address))
--- 3967,3973 ----
  (define-pmacro (store-quad-r-r name op ope regtype attr profile comment)
    (dni name
         (comment)
!        ((UNIT STORE) (FR500-MAJOR I-3) (MACH frv) attr)
         (.str name "$pack $" regtype "k,@($GRi,$GRj)")
         (+ pack (.sym regtype k) op GRi ope GRj)
         (sequence ((WI address))
***************
*** 3960,3966 ****
  (define-pmacro (r-store-quad name op ope regtype is_float attr profile comment)
    (dni name
         (comment)
!        ((UNIT I0) (FR500-MAJOR I-3) (MACH frv) attr)
         (.str name "$pack $" regtype "k,@($GRi,$GRj)")
         (+ pack (.sym regtype k) op GRi ope GRj)
         (sequence ((WI address))
--- 3987,3993 ----
  (define-pmacro (r-store-quad name op ope regtype is_float attr profile comment)
    (dni name
         (comment)
!        ((UNIT STORE) (FR500-MAJOR I-3) (MACH frv) attr)
         (.str name "$pack $" regtype "k,@($GRi,$GRj)")
         (+ pack (.sym regtype k) op GRi ope GRj)
         (sequence ((WI address))
***************
*** 3979,3985 ****
  (define-pmacro (store-r-r-u name mode op ope regtype attr profile comment)
    (dni name
         (comment)
!        ((UNIT I0) (FR500-MAJOR I-3) (FR400-MAJOR I-3) attr)
         (.str name "$pack $" regtype "k,@($GRi,$GRj)")
         (+ pack (.sym regtype k) op GRi ope GRj)
         (sequence ((UWI address))
--- 4006,4012 ----
  (define-pmacro (store-r-r-u name mode op ope regtype attr profile comment)
    (dni name
         (comment)
!        ((UNIT STORE) (FR500-MAJOR I-3) (FR400-MAJOR I-3) attr)
         (.str name "$pack $" regtype "k,@($GRi,$GRj)")
         (+ pack (.sym regtype k) op GRi ope GRj)
         (sequence ((UWI address))
***************
*** 4018,4024 ****
  		name mode op ope regtype attr profile comment)
    (dni name
         (comment)
!        ((UNIT I0) (FR500-MAJOR I-3) (FR400-MAJOR I-3) attr)
         (.str name "$pack $" regtype "k,@($GRi,$GRj)")
         (+ pack (.sym regtype k) op GRi ope GRj)
         (sequence ((WI address))
--- 4045,4051 ----
  		name mode op ope regtype attr profile comment)
    (dni name
         (comment)
!        ((UNIT STORE) (FR500-MAJOR I-3) (FR400-MAJOR I-3) attr)
         (.str name "$pack $" regtype "k,@($GRi,$GRj)")
         (+ pack (.sym regtype k) op GRi ope GRj)
         (sequence ((WI address))
***************
*** 4040,4046 ****
  (define-pmacro (store-quad-r-r-u name op ope regtype attr profile comment)
    (dni name
         (comment)
!        ((UNIT I0) (FR500-MAJOR I-3) (MACH frv) attr)
         (.str name "$pack $" regtype "k,@($GRi,$GRj)")
         (+ pack (.sym regtype k) op GRi ope GRj)
         (sequence ((WI address))
--- 4067,4073 ----
  (define-pmacro (store-quad-r-r-u name op ope regtype attr profile comment)
    (dni name
         (comment)
!        ((UNIT STORE) (FR500-MAJOR I-3) (MACH frv) attr)
         (.str name "$pack $" regtype "k,@($GRi,$GRj)")
         (+ pack (.sym regtype k) op GRi ope GRj)
         (sequence ((WI address))
***************
*** 4221,4227 ****
  (define-pmacro (conditional-store name mode op ope regtype profile comment)
    (dni name
         (comment)
!        ((UNIT I0) (FR500-MAJOR I-3) (FR400-MAJOR I-3) CONDITIONAL)
         (.str name "$pack $" regtype "k,@($GRi,$GRj),$CCi,$cond")
         (+ pack (.sym regtype k) op GRi CCi cond ope GRj)
         (if (eq CCi (or cond 2))
--- 4248,4254 ----
  (define-pmacro (conditional-store name mode op ope regtype profile comment)
    (dni name
         (comment)
!        ((UNIT STORE) (FR500-MAJOR I-3) (FR400-MAJOR I-3) CONDITIONAL)
         (.str name "$pack $" regtype "k,@($GRi,$GRj),$CCi,$cond")
         (+ pack (.sym regtype k) op GRi CCi cond ope GRj)
         (if (eq CCi (or cond 2))
***************
*** 4255,4261 ****
  		name mode op ope regtype attr profile comment)
    (dni name
         (comment)
!        ((UNIT I0) (FR500-MAJOR I-3) (FR400-MAJOR I-3) CONDITIONAL attr)
         (.str name "$pack $" regtype "k,@($GRi,$GRj),$CCi,$cond")
         (+ pack (.sym regtype k) op GRi CCi  cond ope GRj)
         (if (eq CCi (or cond 2))
--- 4282,4288 ----
  		name mode op ope regtype attr profile comment)
    (dni name
         (comment)
!        ((UNIT STORE) (FR500-MAJOR I-3) (FR400-MAJOR I-3) CONDITIONAL attr)
         (.str name "$pack $" regtype "k,@($GRi,$GRj),$CCi,$cond")
         (+ pack (.sym regtype k) op GRi CCi  cond ope GRj)
         (if (eq CCi (or cond 2))
***************
*** 4274,4280 ****
  
  (dni cstq
       "conditionally store quad word"
!      ((UNIT I0) (FR500-MAJOR I-3) (MACH frv) CONDITIONAL)
       "cstq$pack $GRk,@($GRi,$GRj),$CCi,$cond"
       (+ pack GRk OP_65 GRi CCi cond OPE4_0 GRj)
       (if (eq CCi (or cond 2))
--- 4301,4307 ----
  
  (dni cstq
       "conditionally store quad word"
!      ((UNIT STORE) (FR500-MAJOR I-3) (MACH frv) CONDITIONAL)
       "cstq$pack $GRk,@($GRi,$GRj),$CCi,$cond"
       (+ pack GRk OP_65 GRi CCi cond OPE4_0 GRj)
       (if (eq CCi (or cond 2))
***************
*** 4287,4293 ****
  		name mode op ope regtype attr profile comment)
    (dni name
         (comment)
!        ((UNIT I0) (FR500-MAJOR I-3) (FR400-MAJOR I-3) CONDITIONAL attr)
         (.str name "$pack $" regtype "k,@($GRi,$GRj),$CCi,$cond")
         (+ pack (.sym regtype k) op GRi CCi  cond ope GRj)
         (if (eq CCi (or cond 2))
--- 4314,4320 ----
  		name mode op ope regtype attr profile comment)
    (dni name
         (comment)
!        ((UNIT STORE) (FR500-MAJOR I-3) (FR400-MAJOR I-3) CONDITIONAL attr)
         (.str name "$pack $" regtype "k,@($GRi,$GRj),$CCi,$cond")
         (+ pack (.sym regtype k) op GRi CCi  cond ope GRj)
         (if (eq CCi (or cond 2))
***************
*** 4324,4330 ****
  		name mode op ope regtype attr profile comment)
    (dni name
         (comment)
!        ((UNIT I0) (FR500-MAJOR I-3) (FR400-MAJOR I-3) CONDITIONAL attr)
         (.str name "$pack $" regtype "k,@($GRi,$GRj),$CCi,$cond")
         (+ pack (.sym regtype k) op GRi CCi  cond ope GRj)
         (if (eq CCi (or cond 2))
--- 4351,4357 ----
  		name mode op ope regtype attr profile comment)
    (dni name
         (comment)
!        ((UNIT STORE) (FR500-MAJOR I-3) (FR400-MAJOR I-3) CONDITIONAL attr)
         (.str name "$pack $" regtype "k,@($GRi,$GRj),$CCi,$cond")
         (+ pack (.sym regtype k) op GRi CCi  cond ope GRj)
         (if (eq CCi (or cond 2))
***************
*** 4346,4352 ****
  (define-pmacro (store-r-simm name mode op regtype attr profile comment)
    (dni name
         (comment)
!        ((UNIT I0) (FR500-MAJOR I-3) (FR400-MAJOR I-3) attr)
         (.str name "$pack $" regtype "k,@($GRi,$d12)")
         (+ pack (.sym regtype k) op GRi d12)
         (c-call VOID (.str "@cpu@_write_mem_" mode)
--- 4373,4379 ----
  (define-pmacro (store-r-simm name mode op regtype attr profile comment)
    (dni name
         (comment)
!        ((UNIT STORE) (FR500-MAJOR I-3) (FR400-MAJOR I-3) attr)
         (.str name "$pack $" regtype "k,@($GRi,$d12)")
         (+ pack (.sym regtype k) op GRi d12)
         (c-call VOID (.str "@cpu@_write_mem_" mode)
***************
*** 4378,4384 ****
  (define-pmacro (store-double-r-simm name mode op regtype attr profile comment)
    (dni name
         (comment)
!        ((UNIT I0) (FR500-MAJOR I-3) (FR400-MAJOR I-3) attr)
         (.str name "$pack $" regtype "k,@($GRi,$d12)")
         (+ pack (.sym regtype k) op GRi d12)
         (sequence ((WI address))
--- 4405,4411 ----
  (define-pmacro (store-double-r-simm name mode op regtype attr profile comment)
    (dni name
         (comment)
!        ((UNIT STORE) (FR500-MAJOR I-3) (FR400-MAJOR I-3) attr)
         (.str name "$pack $" regtype "k,@($GRi,$d12)")
         (+ pack (.sym regtype k) op GRi d12)
         (sequence ((WI address))
***************
*** 4397,4403 ****
  (define-pmacro (store-quad-r-simm name op regtype attr profile comment)
    (dni name
         (comment)
!        ((UNIT I0) (FR500-MAJOR I-3) (MACH frv) attr)
         (.str name "$pack $" regtype "k,@($GRi,$d12)")
         (+ pack (.sym regtype k) op GRi d12)
         (sequence ((WI address))
--- 4424,4430 ----
  (define-pmacro (store-quad-r-simm name op regtype attr profile comment)
    (dni name
         (comment)
!        ((UNIT STORE) (FR500-MAJOR I-3) (MACH frv) attr)
         (.str name "$pack $" regtype "k,@($GRi,$d12)")
         (+ pack (.sym regtype k) op GRi d12)
         (sequence ((WI address))
***************
*** 5638,5647 ****
  (invalidate-TLB itlbi itlbi OP_03 OPE1_33 "invalidate insn TLB")
  (invalidate-TLB dtlbi dtlbi OP_03 OPE1_37 "invalidate data TLB")
  
! (define-pmacro (cache-preload name cache op ope profile comment)
    (dni name
         (comment)
!        ((UNIT C) (FR500-MAJOR C-2) (FR400-MAJOR C-2))
         (.str name "$pack $GRi,$GRj,$lock")
         (+ pack (misc-null-1) lock op GRi ope GRj)
         (c-call VOID (.str "@cpu@_" cache "_cache_preload") GRi GRj lock)
--- 5665,5674 ----
  (invalidate-TLB itlbi itlbi OP_03 OPE1_33 "invalidate insn TLB")
  (invalidate-TLB dtlbi dtlbi OP_03 OPE1_37 "invalidate data TLB")
  
! (define-pmacro (cache-preload name cache pipe op ope profile comment)
    (dni name
         (comment)
!        ((UNIT pipe) (FR500-MAJOR C-2) (FR400-MAJOR C-2))
         (.str name "$pack $GRi,$GRj,$lock")
         (+ pack (misc-null-1) lock op GRi ope GRj)
         (c-call VOID (.str "@cpu@_" cache "_cache_preload") GRi GRj lock)
***************
*** 5649,5658 ****
    )
  )
  
! (cache-preload icpl insn OP_03 OPE1_30
  	       ((fr400 (unit u-icpl)) (fr500 (unit u-icpl)))
  	       "preload insn cache")
! (cache-preload dcpl data OP_03 OPE1_34
  	       ((fr400 (unit u-dcpl)) (fr500 (unit u-dcpl)))
  	       "preload data cache")
  
--- 5676,5685 ----
    )
  )
  
! (cache-preload icpl insn C OP_03 OPE1_30
  	       ((fr400 (unit u-icpl)) (fr500 (unit u-icpl)))
  	       "preload insn cache")
! (cache-preload dcpl data DCPL OP_03 OPE1_34
  	       ((fr400 (unit u-dcpl)) (fr500 (unit u-dcpl)))
  	       "preload data cache")
  
***************
*** 5775,5781 ****
  		name op ope conv mode src targ attr comment)
    (dni name
         (comment)
!        ((UNIT FM01) (FR500-MAJOR F-1) (MACH simple,tomcat,fr500,frv) attr)
         (.str name "$pack $" src ",$" targ)
         (+ pack targ op (rs-null) ope src)
         (set targ (conv mode src))
--- 5802,5808 ----
  		name op ope conv mode src targ attr comment)
    (dni name
         (comment)
!        ((UNIT FMALL) (FR500-MAJOR F-1) (MACH simple,tomcat,fr500,frv) attr)
         (.str name "$pack $" src ",$" targ)
         (+ pack targ op (rs-null) ope src)
         (set targ (conv mode src))
***************
*** 5792,5798 ****
  		name op ope conv mode src src_hw targ targ_hw attr comment)
    (dni name
         (comment)
!        ((MACH frv) (UNIT FM01) (FR500-MAJOR F-1) attr)
         (.str name "$pack $" src ",$" targ)
         (+ pack targ op (rs-null) ope src)
         (sequence ()
--- 5819,5825 ----
  		name op ope conv mode src src_hw targ targ_hw attr comment)
    (dni name
         (comment)
!        ((MACH frv) (UNIT FMALL) (FR500-MAJOR F-1) attr)
         (.str name "$pack $" src ",$" targ)
         (+ pack targ op (rs-null) ope src)
         (sequence ()
***************
*** 5810,5816 ****
  		name op ope conv mode src src_hw targ targ_hw attr comment)
    (dni name
         (comment)
!        ((MACH frv) (UNIT FM01) (FR500-MAJOR F-1) NON-EXCEPTING attr)
         (.str name "$pack $" src ",$" targ)
         (+ pack targ op (rs-null) ope src)
         (sequence ()
--- 5837,5843 ----
  		name op ope conv mode src src_hw targ targ_hw attr comment)
    (dni name
         (comment)
!        ((MACH frv) (UNIT FMALL) (FR500-MAJOR F-1) NON-EXCEPTING attr)
         (.str name "$pack $" src ",$" targ)
         (+ pack targ op (rs-null) ope src)
         (sequence ()
***************
*** 5830,5836 ****
  		name op ope conv mode src targ comment)
    (dni name
         (comment)
!        ((UNIT FM01) (FR500-MAJOR F-1) (MACH simple,tomcat,fr500,frv))
         (.str name "$pack $" src ",$" targ ",$CCi,$cond")
         (+ pack targ op (rs-null) CCi cond ope src)
         (if (eq CCi (or cond 2))
--- 5857,5863 ----
  		name op ope conv mode src targ comment)
    (dni name
         (comment)
!        ((UNIT FMALL) (FR500-MAJOR F-1) (MACH simple,tomcat,fr500,frv))
         (.str name "$pack $" src ",$" targ ",$CCi,$cond")
         (+ pack targ op (rs-null) CCi cond ope src)
         (if (eq CCi (or cond 2))
***************
*** 5846,5852 ****
  		name op ope conv mode src targ comment)
    (dni name
         (comment)
!        ((UNIT FM01) (FR500-MAJOR F-1) (MACH simple,tomcat,fr500,frv))
         (.str name "$pack $" src ",$" targ)
         (+ pack targ op (rs-null) ope src)
         (sequence ()
--- 5873,5879 ----
  		name op ope conv mode src targ comment)
    (dni name
         (comment)
!        ((UNIT FMALL) (FR500-MAJOR F-1) (MACH simple,tomcat,fr500,frv))
         (.str name "$pack $" src ",$" targ)
         (+ pack targ op (rs-null) ope src)
         (sequence ()
***************
*** 5873,5879 ****
  
  (dni fdmovs
       "Dual move single float"
!      ((MACH frv) (UNIT FM01) (FR500-MAJOR F-1))
       "fdmovs$pack $FRj,$FRk"
       (+ pack FRk OP_79 (rs-null) OPE1_12 FRj)
       (sequence ()
--- 5900,5906 ----
  
  (dni fdmovs
       "Dual move single float"
!      ((MACH frv) (UNIT FMALL) (FR500-MAJOR F-1))
       "fdmovs$pack $FRj,$FRk"
       (+ pack FRk OP_79 (rs-null) OPE1_12 FRj)
       (sequence ()
***************
*** 5892,5898 ****
  (define-pmacro (floating-point-neg name src targ op ope attr comment)
    (dni name
         (comment)
!        ((UNIT FM01) (FR500-MAJOR F-1) attr)
         (.str name "$pack $" src ",$" targ)
         (+ pack src op (rs-null) ope targ)
         (set targ (neg src))
--- 5919,5925 ----
  (define-pmacro (floating-point-neg name src targ op ope attr comment)
    (dni name
         (comment)
!        ((UNIT FMALL) (FR500-MAJOR F-1) attr)
         (.str name "$pack $" src ",$" targ)
         (+ pack src op (rs-null) ope targ)
         (set targ (neg src))
***************
*** 5905,5911 ****
  
  (dni fdnegs
       "Floating point dual negate, single"
!      ((MACH frv) (UNIT FM01) (FR500-MAJOR F-1))
       "fdnegs$pack $FRj,$FRk"
       (+ pack FRk OP_79 (rs-null) OPE1_13 FRj)
       (sequence ()
--- 5932,5938 ----
  
  (dni fdnegs
       "Floating point dual negate, single"
!      ((MACH frv) (UNIT FMALL) (FR500-MAJOR F-1))
       "fdnegs$pack $FRj,$FRk"
       (+ pack FRk OP_79 (rs-null) OPE1_13 FRj)
       (sequence ()
***************
*** 5916,5922 ****
  
  (dni cfnegs
       "Conditional floating point negate, single"
!      ((UNIT FM01) (FR500-MAJOR F-1) (MACH simple,tomcat,fr500,frv))
       "cfnegs$pack $FRj,$FRk,$CCi,$cond"
       (+ pack FRj OP_6C (rs-null) CCi cond OPE4_1 FRk)
       (if (eq CCi (or cond 2))
--- 5943,5949 ----
  
  (dni cfnegs
       "Conditional floating point negate, single"
!      ((UNIT FMALL) (FR500-MAJOR F-1) (MACH simple,tomcat,fr500,frv))
       "cfnegs$pack $FRj,$FRk,$CCi,$cond"
       (+ pack FRj OP_6C (rs-null) CCi cond OPE4_1 FRk)
       (if (eq CCi (or cond 2))
***************
*** 5927,5933 ****
  (define-pmacro (float-abs name src targ op ope attr comment)
    (dni name
         (comment)
!        ((UNIT FM01) (FR500-MAJOR F-1) attr)
         (.str name "$pack $" src ",$" targ )
         (+ pack targ op (rs-null) ope src)
         (set targ (abs src))
--- 5954,5960 ----
  (define-pmacro (float-abs name src targ op ope attr comment)
    (dni name
         (comment)
!        ((UNIT FMALL) (FR500-MAJOR F-1) attr)
         (.str name "$pack $" src ",$" targ )
         (+ pack targ op (rs-null) ope src)
         (set targ (abs src))
***************
*** 5940,5946 ****
  
  (dni fdabss
       "Floating point dual absolute value, single"
!      ((MACH frv) (UNIT FM01) (FR500-MAJOR F-1))
       "fdabss$pack $FRj,$FRk"
       (+ pack FRk OP_79 (rs-null) OPE1_14 FRj)
       (sequence ()
--- 5967,5973 ----
  
  (dni fdabss
       "Floating point dual absolute value, single"
!      ((MACH frv) (UNIT FMALL) (FR500-MAJOR F-1))
       "fdabss$pack $FRj,$FRk"
       (+ pack FRk OP_79 (rs-null) OPE1_14 FRj)
       (sequence ()
***************
*** 5951,5957 ****
  
  (dni cfabss
       "Conditional floating point absolute value, single"
!      ((UNIT FM01) (FR500-MAJOR F-1) (MACH simple,tomcat,fr500,frv))
       "cfabss$pack $FRj,$FRk,$CCi,$cond"
       (+ pack FRj OP_6C (rs-null) CCi cond OPE4_2 FRk)
       (if (eq CCi (or cond 2))
--- 5978,5984 ----
  
  (dni cfabss
       "Conditional floating point absolute value, single"
!      ((UNIT FMALL) (FR500-MAJOR F-1) (MACH simple,tomcat,fr500,frv))
       "cfabss$pack $FRj,$FRk,$CCi,$cond"
       (+ pack FRj OP_6C (rs-null) CCi cond OPE4_2 FRk)
       (if (eq CCi (or cond 2))
***************
*** 6022,6031 ****
       ((fr500 (unit u-float-sqrt)))
  )
  
! (define-pmacro (float-binary-op-s name operation op ope major comment)
    (dni name
         (comment)
!        ((UNIT FM01) (FR500-MAJOR major) (MACH simple,tomcat,fr500,frv))
         (.str name "$pack $FRi,$FRj,$FRk")
         (+ pack FRk op FRi ope FRj)
         (set FRk (operation FRi FRj))
--- 6049,6058 ----
       ((fr500 (unit u-float-sqrt)))
  )
  
! (define-pmacro (float-binary-op-s name pipe operation op ope major comment)
    (dni name
         (comment)
!        ((UNIT pipe) (FR500-MAJOR major) (MACH simple,tomcat,fr500,frv))
         (.str name "$pack $FRi,$FRj,$FRk")
         (+ pack FRk op FRi ope FRj)
         (set FRk (operation FRi FRj))
***************
*** 6033,6041 ****
    )
  )
  
! (float-binary-op-s fadds add OP_79 OPE1_06 F-2 "add single float")
! (float-binary-op-s fsubs sub OP_79 OPE1_07 F-2 "sub single float")
! (float-binary-op-s fmuls mul OP_79 OPE1_08 F-3 "mul single float")
  
  (dni fdivs
       "div single float"
--- 6060,6068 ----
    )
  )
  
! (float-binary-op-s fadds FMALL add OP_79 OPE1_06 F-2 "add single float")
! (float-binary-op-s fsubs FMALL sub OP_79 OPE1_07 F-2 "sub single float")
! (float-binary-op-s fmuls FM01  mul OP_79 OPE1_08 F-3 "mul single float")
  
  (dni fdivs
       "div single float"
***************
*** 6049,6055 ****
  (define-pmacro (float-binary-op-d name operation op ope major comment)
    (dni name
         (comment)
!        ((UNIT FM01) (FR500-MAJOR major) (MACH frv))
         (.str name "$pack $FRdoublei,$FRdoublej,$FRdoublek")
         (+ pack FRdoublek op FRdoublei ope FRdoublej)
         (set FRdoublek (operation FRdoublei FRdoublej))
--- 6076,6082 ----
  (define-pmacro (float-binary-op-d name operation op ope major comment)
    (dni name
         (comment)
!        ((UNIT FMALL) (FR500-MAJOR major) (MACH frv))
         (.str name "$pack $FRdoublei,$FRdoublej,$FRdoublek")
         (+ pack FRdoublek op FRdoublei ope FRdoublej)
         (set FRdoublek (operation FRdoublei FRdoublej))
***************
*** 6062,6071 ****
  (float-binary-op-d fmuld mul OP_7A OPE1_08 F-3 "mul double float")
  (float-binary-op-d fdivd div OP_7A OPE1_09 F-4 "div double float")
  
! (define-pmacro (conditional-float-binary-op name operation op ope major comment)
    (dni name
         (comment)
!        ((UNIT FM01) (FR500-MAJOR major) (MACH simple,tomcat,fr500,frv))
         (.str name "$pack $FRi,$FRj,$FRk,$CCi,$cond")
         (+ pack FRk op FRi CCi cond ope FRj)
         (if (eq CCi (or cond 2))
--- 6089,6098 ----
  (float-binary-op-d fmuld mul OP_7A OPE1_08 F-3 "mul double float")
  (float-binary-op-d fdivd div OP_7A OPE1_09 F-4 "div double float")
  
! (define-pmacro (conditional-float-binary-op name pipe operation op ope major comment)
    (dni name
         (comment)
!        ((UNIT pipe) (FR500-MAJOR major) (MACH simple,tomcat,fr500,frv))
         (.str name "$pack $FRi,$FRj,$FRk,$CCi,$cond")
         (+ pack FRk op FRi CCi cond ope FRj)
         (if (eq CCi (or cond 2))
***************
*** 6074,6088 ****
    )
  )
  
! (conditional-float-binary-op cfadds add OP_6D OPE4_0 F-2 "cond add single")
! (conditional-float-binary-op cfsubs sub OP_6D OPE4_1 F-2 "cond sub single")
! (conditional-float-binary-op cfmuls mul OP_6E OPE4_0 F-3 "cond mul single")
! (conditional-float-binary-op cfdivs div OP_6E OPE4_1 F-4 "cond div single")
  
! (define-pmacro (ne-float-binary-op name operation op ope major comment)
    (dni name
         (comment)
!        ((UNIT FM01) (FR500-MAJOR major) (MACH simple,tomcat,fr500,frv))
         (.str name "$pack $FRi,$FRj,$FRk")
         (+ pack FRk op FRi ope FRj)
         (sequence ()
--- 6101,6115 ----
    )
  )
  
! (conditional-float-binary-op cfadds FMALL add OP_6D OPE4_0 F-2 "cond add single")
! (conditional-float-binary-op cfsubs FMALL sub OP_6D OPE4_1 F-2 "cond sub single")
! (conditional-float-binary-op cfmuls FM01  mul OP_6E OPE4_0 F-3 "cond mul single")
! (conditional-float-binary-op cfdivs FM01  div OP_6E OPE4_1 F-4 "cond div single")
  
! (define-pmacro (ne-float-binary-op name pipe operation op ope major comment)
    (dni name
         (comment)
!        ((UNIT pipe) (FR500-MAJOR major) (MACH simple,tomcat,fr500,frv))
         (.str name "$pack $FRi,$FRj,$FRk")
         (+ pack FRk op FRi ope FRj)
         (sequence ()
***************
*** 6092,6101 ****
    )
  )
  
! (ne-float-binary-op nfadds add OP_79 OPE1_26 F-2 "ne add single")
! (ne-float-binary-op nfsubs sub OP_79 OPE1_27 F-2 "ne sub single")
! (ne-float-binary-op nfmuls mul OP_79 OPE1_28 F-3 "ne mul single")
! (ne-float-binary-op nfdivs div OP_79 OPE1_29 F-4 "ne div single")
  
  (define-pmacro (fcc-eq) 8)
  (define-pmacro (fcc-lt) 4)
--- 6119,6128 ----
    )
  )
  
! (ne-float-binary-op nfadds FMALL add OP_79 OPE1_26 F-2 "ne add single")
! (ne-float-binary-op nfsubs FMALL sub OP_79 OPE1_27 F-2 "ne sub single")
! (ne-float-binary-op nfmuls FM01  mul OP_79 OPE1_28 F-3 "ne mul single")
! (ne-float-binary-op nfdivs FM01  div OP_79 OPE1_29 F-4 "ne div single")
  
  (define-pmacro (fcc-eq) 8)
  (define-pmacro (fcc-lt) 4)
***************
*** 6114,6120 ****
  
  (dni fcmps
       "compare single float"
!      ((UNIT FM01) (FR500-MAJOR F-2) (MACH simple,tomcat,fr500,frv))
       "fcmps$pack $FRi,$FRj,$FCCi_2"
       (+ pack (cond-null) FCCi_2 OP_79 FRi OPE1_0A FRj)
       (compare-and-set-fcc FRi FRj FCCi_2)
--- 6141,6147 ----
  
  (dni fcmps
       "compare single float"
!      ((UNIT FMALL) (FR500-MAJOR F-2) (MACH simple,tomcat,fr500,frv))
       "fcmps$pack $FRi,$FRj,$FCCi_2"
       (+ pack (cond-null) FCCi_2 OP_79 FRi OPE1_0A FRj)
       (compare-and-set-fcc FRi FRj FCCi_2)
***************
*** 6123,6129 ****
  
  (dni fcmpd
       "compare double float"
!      ((UNIT FM01) (FR500-MAJOR F-2) (MACH frv))
       "fcmpd$pack $FRdoublei,$FRdoublej,$FCCi_2"
       (+ pack (cond-null) FCCi_2 OP_7A FRdoublei OPE1_0A FRdoublej)
       (compare-and-set-fcc FRdoublei FRdoublej FCCi_2)
--- 6150,6156 ----
  
  (dni fcmpd
       "compare double float"
!      ((UNIT FMALL) (FR500-MAJOR F-2) (MACH frv))
       "fcmpd$pack $FRdoublei,$FRdoublej,$FCCi_2"
       (+ pack (cond-null) FCCi_2 OP_7A FRdoublei OPE1_0A FRdoublej)
       (compare-and-set-fcc FRdoublei FRdoublej FCCi_2)
***************
*** 6132,6138 ****
  
  (dni cfcmps
       "Conditional compare single, float"
!      ((UNIT FM01) (FR500-MAJOR F-2) (MACH simple,tomcat,fr500,frv))
       "cfcmps$pack $FRi,$FRj,$FCCi_2,$CCi,$cond"
       (+ pack (cond-null) FCCi_2 OP_6D FRi CCi cond OPE4_2 FRj)
       (if (eq CCi (or cond 2))
--- 6159,6165 ----
  
  (dni cfcmps
       "Conditional compare single, float"
!      ((UNIT FMALL) (FR500-MAJOR F-2) (MACH simple,tomcat,fr500,frv))
       "cfcmps$pack $FRi,$FRj,$FCCi_2,$CCi,$cond"
       (+ pack (cond-null) FCCi_2 OP_6D FRi CCi cond OPE4_2 FRj)
       (if (eq CCi (or cond 2))
***************
*** 6142,6148 ****
  
  (dni fdcmps
       "float dual compare single"
!      ((UNIT FM01) (FR500-MAJOR F-6) (MACH simple,tomcat,fr500,frv))
       "fdcmps$pack $FRi,$FRj,$FCCi_2"
       (+ pack (cond-null) FCCi_2 OP_79 FRi OPE1_1A FRj)
       (sequence ()
--- 6169,6175 ----
  
  (dni fdcmps
       "float dual compare single"
!      ((UNIT FMALL) (FR500-MAJOR F-6) (MACH simple,tomcat,fr500,frv))
       "fdcmps$pack $FRi,$FRj,$FCCi_2"
       (+ pack (cond-null) FCCi_2 OP_79 FRi OPE1_1A FRj)
       (sequence ()
***************
*** 6155,6161 ****
  (define-pmacro (float-mul-with-add name add_sub arg1 arg2 targ op ope comment)
    (dni name
         (comment)
!        ((UNIT FM01) (FR500-MAJOR F-5) (MACH frv))
         (.str name "$pack $" arg1 ",$" arg2 ",$" targ)
         (+ pack targ op arg1 ope arg2)
         (set targ (add_sub (mul arg1 arg2) targ))
--- 6182,6188 ----
  (define-pmacro (float-mul-with-add name add_sub arg1 arg2 targ op ope comment)
    (dni name
         (comment)
!        ((UNIT FMALL) (FR500-MAJOR F-5) (MACH frv))
         (.str name "$pack $" arg1 ",$" arg2 ",$" targ)
         (+ pack targ op arg1 ope arg2)
         (set targ (add_sub (mul arg1 arg2) targ))
***************
*** 6171,6177 ****
  
  (dni fdmadds
       "Float dual multiply with add"
!      ((UNIT FM01) (FR500-MAJOR F-5) (MACH frv))
       "fdmadds$pack $FRi,$FRj,$FRk"
       (+ pack FRk OP_79 FRi OPE1_1B FRj)
       (sequence ()
--- 6198,6204 ----
  
  (dni fdmadds
       "Float dual multiply with add"
!      ((UNIT FMALL) (FR500-MAJOR F-5) (MACH frv))
       "fdmadds$pack $FRi,$FRj,$FRk"
       (+ pack FRk OP_79 FRi OPE1_1B FRj)
       (sequence ()
***************
*** 6185,6191 ****
  
  (dni nfdmadds
       "Non excepting float dual multiply with add"
!      ((UNIT FM01) (FR500-MAJOR F-5) (MACH frv))
       "nfdmadds$pack $FRi,$FRj,$FRk"
       (+ pack FRk OP_79 FRi OPE1_3B FRj)
       (sequence ()
--- 6212,6218 ----
  
  (dni nfdmadds
       "Non excepting float dual multiply with add"
!      ((UNIT FMALL) (FR500-MAJOR F-5) (MACH frv))
       "nfdmadds$pack $FRi,$FRj,$FRk"
       (+ pack FRk OP_79 FRi OPE1_3B FRj)
       (sequence ()
***************
*** 6203,6209 ****
  		name add_sub arg1 arg2 targ op ope comment)
    (dni name
         (comment)
!        ((UNIT FM01) (FR500-MAJOR F-5) (MACH frv) CONDITIONAL)
         (.str name "$pack $FRi,$FRj,$FRk,$CCi,$cond")
         (+ pack FRk op FRi CCi cond ope FRj)
         (if (eq CCi (or cond 2))
--- 6230,6236 ----
  		name add_sub arg1 arg2 targ op ope comment)
    (dni name
         (comment)
!        ((UNIT FMALL) (FR500-MAJOR F-5) (MACH frv) CONDITIONAL)
         (.str name "$pack $FRi,$FRj,$FRk,$CCi,$cond")
         (+ pack FRk op FRi CCi cond ope FRj)
         (if (eq CCi (or cond 2))
***************
*** 6218,6224 ****
  (define-pmacro (ne-float-mul-with-add name add_sub arg1 arg2 targ op ope comment)
    (dni name
         (comment)
!        ((UNIT FM01) (FR500-MAJOR F-5) (MACH frv) NON-EXCEPTING)
         (.str name "$pack $" arg1 ",$" arg2 ",$" targ)
         (+ pack targ op arg1 ope arg2)
         (sequence ()
--- 6245,6251 ----
  (define-pmacro (ne-float-mul-with-add name add_sub arg1 arg2 targ op ope comment)
    (dni name
         (comment)
!        ((UNIT FMALL) (FR500-MAJOR F-5) (MACH frv) NON-EXCEPTING)
         (.str name "$pack $" arg1 ",$" arg2 ",$" targ)
         (+ pack targ op arg1 ope arg2)
         (sequence ()
***************
*** 6455,6461 ****
  
  (dni mhsetlos
       "Media set lower signed 12 bits"
!      ((UNIT FM01) (MACH fr400) (FR400-MAJOR M-1))
       "mhsetlos$pack $u12,$FRklo"
       (+ pack FRklo OP_78 OPE1_20 u12)
       (set FRklo u12)
--- 6482,6488 ----
  
  (dni mhsetlos
       "Media set lower signed 12 bits"
!      ((UNIT FMALL) (MACH fr400) (FR400-MAJOR M-1))
       "mhsetlos$pack $u12,$FRklo"
       (+ pack FRklo OP_78 OPE1_20 u12)
       (set FRklo u12)
***************
*** 6464,6470 ****
  
  (dni mhsethis
       "Media set upper signed 12 bits"
!      ((UNIT FM01) (MACH fr400) (FR400-MAJOR M-1))
       "mhsethis$pack $u12,$FRkhi"
       (+ pack FRkhi OP_78 OPE1_22 u12)
       (set FRkhi u12)
--- 6491,6497 ----
  
  (dni mhsethis
       "Media set upper signed 12 bits"
!      ((UNIT FMALL) (MACH fr400) (FR400-MAJOR M-1))
       "mhsethis$pack $u12,$FRkhi"
       (+ pack FRkhi OP_78 OPE1_22 u12)
       (set FRkhi u12)
***************
*** 6473,6479 ****
  
  (dni mhdsets
       "Media dual set halfword signed 12 bits"
!      ((UNIT FM01) (MACH fr400) (FR400-MAJOR M-1))
       "mhdsets$pack $u12,$FRintk"
       (+ pack FRintk OP_78 OPE1_24 u12)
       (sequence ()
--- 6500,6506 ----
  
  (dni mhdsets
       "Media dual set halfword signed 12 bits"
!      ((UNIT FMALL) (MACH fr400) (FR400-MAJOR M-1))
       "mhdsets$pack $u12,$FRintk"
       (+ pack FRintk OP_78 OPE1_24 u12)
       (sequence ()
***************
*** 6495,6501 ****
  (define-pmacro (media-set-5 name hilo op ope comment)
    (dni name
         (comment)
!        ((UNIT FM01) (MACH fr400) (FR400-MAJOR M-1))
         (.str name "$pack $s5,$FRk" hilo)
         (+ pack (.sym FRk hilo) op (FRi-null) ope (misc-null-11) s5)
         (set-5-semantics (.sym FRk hilo) s5)
--- 6522,6528 ----
  (define-pmacro (media-set-5 name hilo op ope comment)
    (dni name
         (comment)
!        ((UNIT FMALL) (MACH fr400) (FR400-MAJOR M-1))
         (.str name "$pack $s5,$FRk" hilo)
         (+ pack (.sym FRk hilo) op (FRi-null) ope (misc-null-11) s5)
         (set-5-semantics (.sym FRk hilo) s5)
***************
*** 6508,6514 ****
  
  (dni mhdseth
       "Media dual set halfword upper 5 bits"
!      ((UNIT FM01) (MACH fr400) (FR400-MAJOR M-1))
       "mhdseth$pack $s5,$FRintk"
       (+ pack FRintk OP_78 (FRi-null) OPE1_25 (misc-null-11) s5)
       (sequence ()
--- 6535,6541 ----
  
  (dni mhdseth
       "Media dual set halfword upper 5 bits"
!      ((UNIT FMALL) (MACH fr400) (FR400-MAJOR M-1))
       "mhdseth$pack $s5,$FRintk"
       (+ pack FRintk OP_78 (FRi-null) OPE1_25 (misc-null-11) s5)
       (sequence ()
***************
*** 6522,6528 ****
  (define-pmacro (media-logic-r-r name operation op ope comment)
    (dni name
         (comment)
!        ((UNIT FM01) (FR500-MAJOR M-1) (FR400-MAJOR M-1))
         (.str name "$pack $FRinti,$FRintj,$FRintk")
         (+ pack FRintk op FRinti ope FRintj)
         (set FRintk (operation FRinti FRintj))
--- 6549,6555 ----
  (define-pmacro (media-logic-r-r name operation op ope comment)
    (dni name
         (comment)
!        ((UNIT FMALL) (FR500-MAJOR M-1) (FR400-MAJOR M-1))
         (.str name "$pack $FRinti,$FRintj,$FRintk")
         (+ pack FRintk op FRinti ope FRintj)
         (set FRintk (operation FRinti FRintj))
***************
*** 6538,6544 ****
  (define-pmacro (conditional-media-logic name operation op ope comment)
    (dni name
         (comment)
!        ((UNIT FM01) (FR500-MAJOR M-1) (FR400-MAJOR M-1) CONDITIONAL)
         (.str name "$pack $FRinti,$FRintj,$FRintk,$CCi,$cond")
         (+ pack FRintk op FRinti CCi cond ope FRintj)
         (if (eq CCi (or cond 2))
--- 6565,6571 ----
  (define-pmacro (conditional-media-logic name operation op ope comment)
    (dni name
         (comment)
!        ((UNIT FMALL) (FR500-MAJOR M-1) (FR400-MAJOR M-1) CONDITIONAL)
         (.str name "$pack $FRinti,$FRintj,$FRintk,$CCi,$cond")
         (+ pack FRintk op FRinti CCi cond ope FRintj)
         (if (eq CCi (or cond 2))
***************
*** 6554,6560 ****
  
  (dni mnot
       ("mnot")
!      ((UNIT FM01) (FR500-MAJOR M-1) (FR400-MAJOR M-1))
       ("mnot$pack $FRintj,$FRintk")
       (+ pack FRintk OP_7B (rs-null) OPE1_03 FRintj)
       (set FRintk (inv FRintj))
--- 6581,6587 ----
  
  (dni mnot
       ("mnot")
!      ((UNIT FMALL) (FR500-MAJOR M-1) (FR400-MAJOR M-1))
       ("mnot$pack $FRintj,$FRintk")
       (+ pack FRintk OP_7B (rs-null) OPE1_03 FRintj)
       (set FRintk (inv FRintj))
***************
*** 6564,6570 ****
  
  (dni cmnot
       ("cmnot")
!      ((UNIT FM01) (FR500-MAJOR M-1) (FR400-MAJOR M-1) CONDITIONAL)
       ("cmnot$pack $FRintj,$FRintk,$CCi,$cond")
       (+ pack FRintk OP_70 (rs-null) CCi cond OPE4_3 FRintj)
       (if (eq CCi (or cond 2))
--- 6591,6597 ----
  
  (dni cmnot
       ("cmnot")
!      ((UNIT FMALL) (FR500-MAJOR M-1) (FR400-MAJOR M-1) CONDITIONAL)
       ("cmnot$pack $FRintj,$FRintk,$CCi,$cond")
       (+ pack FRintk OP_70 (rs-null) CCi cond OPE4_3 FRintj)
       (if (eq CCi (or cond 2))
***************
*** 6641,6647 ****
  
  (dni mdcutssi
       "Media dual cut with signed saturation"
!      ((UNIT FM0) (MACH fr400) (FR400-MAJOR M-2))
       "mdcutssi$pack $ACC40Si,$s6,$FRintkeven"
       (+ pack FRintkeven OP_78 ACC40Si OPE1_0E s6)
       (if (register-unaligned ACC40Si 2)
--- 6668,6674 ----
  
  (dni mdcutssi
       "Media dual cut with signed saturation"
!      ((UNIT FMLOW) (MACH fr400) (FR400-MAJOR M-2))
       "mdcutssi$pack $ACC40Si,$s6,$FRintkeven"
       (+ pack FRintkeven OP_78 ACC40Si OPE1_0E s6)
       (if (register-unaligned ACC40Si 2)
***************
*** 6669,6675 ****
  
  (dni maveh
       "Media dual average"
!      ((UNIT FM01) (FR500-MAJOR M-1) (FR400-MAJOR M-1))
       "maveh$pack $FRinti,$FRintj,$FRintk"
       (+ pack FRintk OP_7B FRinti OPE1_08 FRintj)
       (set FRintk (c-call SI "@cpu@_media_average" FRinti FRintj))
--- 6696,6702 ----
  
  (dni maveh
       "Media dual average"
!      ((UNIT FMALL) (FR500-MAJOR M-1) (FR400-MAJOR M-1))
       "maveh$pack $FRinti,$FRintj,$FRintk"
       (+ pack FRintk OP_7B FRinti OPE1_08 FRintj)
       (set FRintk (c-call SI "@cpu@_media_average" FRinti FRintj))
***************
*** 6708,6714 ****
  (define-pmacro (media-dual-word-rotate-r-r name operation op ope comment)
    (dni name
         (comment)
!        ((UNIT FM0) (MACH fr400) (FR400-MAJOR M-2))
         (.str name "$pack $FRintieven,$s6,$FRintkeven")
         (+ pack FRintkeven op FRintieven ope s6)
         (if (orif (register-unaligned FRintieven 2)
--- 6735,6741 ----
  (define-pmacro (media-dual-word-rotate-r-r name operation op ope comment)
    (dni name
         (comment)
!        ((UNIT FMLOW) (MACH fr400) (FR400-MAJOR M-2))
         (.str name "$pack $FRintieven,$s6,$FRintkeven")
         (+ pack FRintkeven op FRintieven ope s6)
         (if (orif (register-unaligned FRintieven 2)
***************
*** 6729,6735 ****
  
  (dni mcplhi
       "Media dual couple, halfword"
!      ((UNIT FM0) (MACH fr400) (FR400-MAJOR M-2))
       "mcplhi$pack $FRinti,$u6,$FRintk"
       (+ pack FRintk OP_78 FRinti OPE1_0C u6)
       (sequence ((HI arg1) (HI arg2) (HI shift))
--- 6756,6762 ----
  
  (dni mcplhi
       "Media dual couple, halfword"
!      ((UNIT FMLOW) (MACH fr400) (FR400-MAJOR M-2))
       "mcplhi$pack $FRinti,$u6,$FRintk"
       (+ pack FRintk OP_78 FRinti OPE1_0C u6)
       (sequence ((HI arg1) (HI arg2) (HI shift))
***************
*** 6749,6755 ****
  
  (dni mcpli
       "Media dual couple, word"
!      ((UNIT FM0) (MACH fr400) (FR400-MAJOR M-2))
       "mcpli$pack $FRinti,$u6,$FRintk"
       (+ pack FRintk OP_78 FRinti OPE1_0D u6)
       (sequence ((SI tmp) (SI shift))
--- 6776,6782 ----
  
  (dni mcpli
       "Media dual couple, word"
!      ((UNIT FMLOW) (MACH fr400) (FR400-MAJOR M-2))
       "mcpli$pack $FRinti,$u6,$FRintk"
       (+ pack FRintk OP_78 FRinti OPE1_0D u6)
       (sequence ((SI tmp) (SI shift))
***************
*** 6775,6781 ****
  
  (dni msaths
       "Media dual saturation signed"
!      ((UNIT FM01) (FR500-MAJOR M-1) (FR400-MAJOR M-1))
       "msaths$pack $FRinti,$FRintj,$FRintk"
       (+ pack FRintk OP_7B FRinti OPE1_0C FRintj)
       (sequence ((HI argihi) (HI argilo) (HI argjhi) (HI argjlo))
--- 6802,6808 ----
  
  (dni msaths
       "Media dual saturation signed"
!      ((UNIT FMALL) (FR500-MAJOR M-1) (FR400-MAJOR M-1))
       "msaths$pack $FRinti,$FRintj,$FRintk"
       (+ pack FRintk OP_7B FRinti OPE1_0C FRintj)
       (sequence ((HI argihi) (HI argilo) (HI argjhi) (HI argjlo))
***************
*** 6788,6794 ****
  
  (dni mqsaths
       "Media quad saturation signed"
!      ((UNIT FM01) (MACH fr400) (FR400-MAJOR M-1))
       "mqsaths$pack $FRintieven,$FRintjeven,$FRintkeven"
       (+ pack FRintkeven OP_78 FRintieven OPE1_0F FRintjeven)
       (if (orif (register-unaligned FRintieven 2)
--- 6815,6821 ----
  
  (dni mqsaths
       "Media quad saturation signed"
!      ((UNIT FMALL) (MACH fr400) (FR400-MAJOR M-1))
       "mqsaths$pack $FRintieven,$FRintjeven,$FRintkeven"
       (+ pack FRintkeven OP_78 FRintieven OPE1_0F FRintjeven)
       (if (orif (register-unaligned FRintieven 2)
***************
*** 6818,6824 ****
  
  (dni msathu
       "Media dual saturation unsigned"
!      ((UNIT FM01) (FR500-MAJOR M-1) (FR400-MAJOR M-1))
       "msathu$pack $FRinti,$FRintj,$FRintk"
       (+ pack FRintk OP_7B FRinti OPE1_0D FRintj)
       (sequence ((UHI argihi) (UHI argilo) (UHI argjhi) (UHI argjlo))
--- 6845,6851 ----
  
  (dni msathu
       "Media dual saturation unsigned"
!      ((UNIT FMALL) (FR500-MAJOR M-1) (FR400-MAJOR M-1))
       "msathu$pack $FRinti,$FRintj,$FRintk"
       (+ pack FRintk OP_7B FRinti OPE1_0D FRintj)
       (sequence ((UHI argihi) (UHI argilo) (UHI argjhi) (UHI argjlo))
***************
*** 6832,6838 ****
  (define-pmacro (media-dual-compare name mode op ope comment)
    (dni name
         (comment)
!        ((UNIT FM01) (FR500-MAJOR M-1) (FR400-MAJOR M-1))
         (.str name "$pack $FRinti,$FRintj,$FCCk")
         (+ pack (cond-null) FCCk op FRinti ope FRintj)
         (if (register-unaligned FCCk 2)
--- 6859,6865 ----
  (define-pmacro (media-dual-compare name mode op ope comment)
    (dni name
         (comment)
!        ((UNIT FMALL) (FR500-MAJOR M-1) (FR400-MAJOR M-1))
         (.str name "$pack $FRinti,$FRintj,$FCCk")
         (+ pack (cond-null) FCCk op FRinti ope FRintj)
         (if (register-unaligned FCCk 2)
***************
*** 6876,6882 ****
  
  (dni mabshs
       "Media dual absolute value, halfword"
!      ((UNIT FM01) (MACH fr400) (FR400-MAJOR M-1))
       "mabshs$pack $FRintj,$FRintk"
       (+ pack FRintk OP_78 (FRi-null) OPE1_0A FRintj)
       (sequence ((HI arghi) (HI arglo))
--- 6903,6909 ----
  
  (dni mabshs
       "Media dual absolute value, halfword"
!      ((UNIT FMALL) (MACH fr400) (FR400-MAJOR M-1))
       "mabshs$pack $FRintj,$FRintk"
       (+ pack FRintk OP_78 (FRi-null) OPE1_0A FRintj)
       (sequence ((HI arghi) (HI arglo))
***************
*** 6912,6918 ****
  (define-pmacro (media-dual-arith-sat name operation mode max min op ope comment)
    (dni name
         (comment)
!        ((UNIT FM01) (FR500-MAJOR M-1) (FR400-MAJOR M-1))
         (.str name "$pack $FRinti,$FRintj,$FRintk")
         (+ pack FRintk op FRinti ope FRintj)
         (media-dual-arith-sat-semantics operation mode max min)
--- 6939,6945 ----
  (define-pmacro (media-dual-arith-sat name operation mode max min op ope comment)
    (dni name
         (comment)
!        ((UNIT FMALL) (FR500-MAJOR M-1) (FR400-MAJOR M-1))
         (.str name "$pack $FRinti,$FRintj,$FRintk")
         (+ pack FRintk op FRinti ope FRintj)
         (media-dual-arith-sat-semantics operation mode max min)
***************
*** 6931,6937 ****
  		name operation mode max min op ope comment)
    (dni name
         (comment)
!        ((UNIT FM01) (FR500-MAJOR M-1) (FR400-MAJOR M-1) CONDITIONAL)
         (.str name "$pack $FRinti,$FRintj,$FRintk,$CCi,$cond")
         (+ pack FRintk op FRinti CCi cond ope FRintj)
         (if (eq CCi (or cond 2))
--- 6958,6964 ----
  		name operation mode max min op ope comment)
    (dni name
         (comment)
!        ((UNIT FMALL) (FR500-MAJOR M-1) (FR400-MAJOR M-1) CONDITIONAL)
         (.str name "$pack $FRinti,$FRintj,$FRintk,$CCi,$cond")
         (+ pack FRintk op FRinti CCi cond ope FRintj)
         (if (eq CCi (or cond 2))
***************
*** 6977,6983 ****
  (define-pmacro (media-quad-arith-sat name operation mode max min op ope comment)
    (dni name
         (comment)
!        ((UNIT FM01) (FR500-MAJOR M-1) (FR400-MAJOR M-2))
         (.str name "$pack $FRintieven,$FRintjeven,$FRintkeven")
         (+ pack FRintkeven op FRintieven ope FRintjeven)
         (media-quad-arith-sat-semantics 1 operation mode max min)
--- 7004,7010 ----
  (define-pmacro (media-quad-arith-sat name operation mode max min op ope comment)
    (dni name
         (comment)
!        ((UNIT FMALL) (FR500-MAJOR M-1) (FR400-MAJOR M-2))
         (.str name "$pack $FRintieven,$FRintjeven,$FRintkeven")
         (+ pack FRintkeven op FRintieven ope FRintjeven)
         (media-quad-arith-sat-semantics 1 operation mode max min)
***************
*** 7002,7008 ****
  		name operation mode max min op ope comment)
    (dni name
         (comment)
!        ((UNIT FM01) (FR500-MAJOR M-1) (FR400-MAJOR M-2) CONDITIONAL)
         (.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))
--- 7029,7035 ----
  		name operation mode max min op ope comment)
    (dni name
         (comment)
!        ((UNIT FMALL) (FR500-MAJOR M-1) (FR400-MAJOR M-2) CONDITIONAL)
         (.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))
***************
*** 7027,7033 ****
  (define-pmacro (media-acc-arith-sat name operation mode max min op ope comment)
    (dni name
         (comment)
!        ((UNIT FM01) (MACH fr400) (FR400-MAJOR M-1))
         (.str name "$pack $ACC40Si,$ACC40Sk")
         (+ pack ACC40Sk op ACC40Si ope (ACCj-null))
         (if (register-unaligned ACC40Si 2)
--- 7054,7060 ----
  (define-pmacro (media-acc-arith-sat name operation mode max min op ope comment)
    (dni name
         (comment)
!        ((UNIT FMALL) (MACH fr400) (FR400-MAJOR M-1))
         (.str name "$pack $ACC40Si,$ACC40Sk")
         (+ pack ACC40Sk op ACC40Si ope (ACCj-null))
         (if (register-unaligned ACC40Si 2)
***************
*** 7048,7054 ****
  					 comment)
    (dni name
         (comment)
!        ((UNIT FM0) (MACH fr400) (FR400-MAJOR M-2))
         (.str name "$pack $ACC40Si,$ACC40Sk")
         (+ pack ACC40Sk op ACC40Si ope (ACCj-null))
         (if (register-unaligned ACC40Si 4)
--- 7075,7081 ----
  					 comment)
    (dni name
         (comment)
!        ((UNIT MDUALACC) (MACH fr400) (FR400-MAJOR M-2))
         (.str name "$pack $ACC40Si,$ACC40Sk")
         (+ pack ACC40Sk op ACC40Si ope (ACCj-null))
         (if (register-unaligned ACC40Si 4)
***************
*** 7077,7083 ****
  
  (dni masaccs
       "Media add and subtract signed accumulator with saturation"
!        ((UNIT FM01) (MACH fr400) (FR400-MAJOR M-1))
         "masaccs$pack $ACC40Si,$ACC40Sk"
         (+ pack ACC40Sk OP_78 ACC40Si OPE1_08 (ACCj-null))
         (if (register-unaligned ACC40Si 2)
--- 7104,7110 ----
  
  (dni masaccs
       "Media add and subtract signed accumulator with saturation"
!        ((UNIT FMALL) (MACH fr400) (FR400-MAJOR M-1))
         "masaccs$pack $ACC40Si,$ACC40Sk"
         (+ pack ACC40Sk OP_78 ACC40Si OPE1_08 (ACCj-null))
         (if (register-unaligned ACC40Si 2)
***************
*** 7103,7109 ****
  
  (dni mdasaccs
       "Media add and subtract signed accumulator with saturation"
!        ((UNIT FM0) (MACH fr400) (FR400-MAJOR M-2))
         "mdasaccs$pack $ACC40Si,$ACC40Sk"
         (+ pack ACC40Sk OP_78 ACC40Si OPE1_09 (ACCj-null))
         (if (register-unaligned ACC40Si 4)
--- 7130,7136 ----
  
  (dni mdasaccs
       "Media add and subtract signed accumulator with saturation"
!        ((UNIT MDUALACC) (MACH fr400) (FR400-MAJOR M-2))
         "mdasaccs$pack $ACC40Si,$ACC40Sk"
         (+ pack ACC40Sk OP_78 ACC40Si OPE1_09 (ACCj-null))
         (if (register-unaligned ACC40Si 4)
***************
*** 7162,7168 ****
  (define-pmacro (media-dual-multiply name mode conv rhs1 rhs2 op ope comment)
    (dni name
         (comment)
!        ((UNIT FM01) (FR500-MAJOR M-4) (FR400-MAJOR M-1) PRESERVE-OVF)
         (.str name "$pack $FRinti,$FRintj,$ACC40Sk")
         (+ pack ACC40Sk op FRinti ope FRintj)
         (media-dual-multiply-semantics 1 mode conv rhs1 rhs2)
--- 7189,7195 ----
  (define-pmacro (media-dual-multiply name mode conv rhs1 rhs2 op ope comment)
    (dni name
         (comment)
!        ((UNIT FMALL) (FR500-MAJOR M-4) (FR400-MAJOR M-1) PRESERVE-OVF)
         (.str name "$pack $FRinti,$FRintj,$ACC40Sk")
         (+ pack ACC40Sk op FRinti ope FRintj)
         (media-dual-multiply-semantics 1 mode conv rhs1 rhs2)
***************
*** 7181,7187 ****
  		name mode conv rhs1 rhs2 op ope comment)
    (dni name
         (comment)
!        ((UNIT FM01) (FR500-MAJOR M-4) (FR400-MAJOR M-1)
  	PRESERVE-OVF CONDITIONAL)
         (.str name "$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond")
         (+ pack ACC40Sk op FRinti CCi cond ope FRintj)
--- 7208,7214 ----
  		name mode conv rhs1 rhs2 op ope comment)
    (dni name
         (comment)
!        ((UNIT FMALL) (FR500-MAJOR M-4) (FR400-MAJOR M-1)
  	PRESERVE-OVF CONDITIONAL)
         (.str name "$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond")
         (+ pack ACC40Sk op FRinti CCi cond ope FRintj)
***************
*** 7219,7225 ****
  (define-pmacro (media-quad-multiply name mode conv rhs1 rhs2 op ope comment)
    (dni name
         (comment)
!        ((UNIT FM01) (FR500-MAJOR M-4) (FR400-MAJOR M-2) PRESERVE-OVF)
         (.str name "$pack $FRintieven,$FRintjeven,$ACC40Sk")
         (+ pack ACC40Sk op FRintieven ope FRintjeven)
         (media-quad-multiply-semantics 1 mode conv rhs1 rhs2) 
--- 7246,7252 ----
  (define-pmacro (media-quad-multiply name mode conv rhs1 rhs2 op ope comment)
    (dni name
         (comment)
!        ((UNIT FMALL) (FR500-MAJOR M-4) (FR400-MAJOR M-2) PRESERVE-OVF)
         (.str name "$pack $FRintieven,$FRintjeven,$ACC40Sk")
         (+ pack ACC40Sk op FRintieven ope FRintjeven)
         (media-quad-multiply-semantics 1 mode conv rhs1 rhs2) 
***************
*** 7242,7248 ****
  		name mode conv rhs1 rhs2 op ope comment)
    (dni name
         (comment)
!        ((UNIT FM01) (FR500-MAJOR M-4) (FR400-MAJOR M-2)
  	PRESERVE-OVF CONDITIONAL)
         (.str name "$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond")
         (+ pack ACC40Sk op FRintieven CCi cond ope FRintjeven)
--- 7269,7275 ----
  		name mode conv rhs1 rhs2 op ope comment)
    (dni name
         (comment)
!        ((UNIT FMALL) (FR500-MAJOR M-4) (FR400-MAJOR M-2)
  	PRESERVE-OVF CONDITIONAL)
         (.str name "$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond")
         (+ pack ACC40Sk op FRintieven CCi cond ope FRintjeven)
***************
*** 7286,7292 ****
  		name mode conv addop rhw res max min op ope comment)
    (dni name
         (comment)
!        ((UNIT FM01) (FR500-MAJOR M-4) (FR400-MAJOR M-1))
         (.str name "$pack $FRinti,$FRintj,$" res)
         (+ pack res op FRinti ope FRintj)
         (media-dual-multiply-acc-semantics 1 mode conv addop rhw res max min)
--- 7313,7319 ----
  		name mode conv addop rhw res max min op ope comment)
    (dni name
         (comment)
!        ((UNIT FMALL) (FR500-MAJOR M-4) (FR400-MAJOR M-1))
         (.str name "$pack $FRinti,$FRintj,$" res)
         (+ pack res op FRinti ope FRintj)
         (media-dual-multiply-acc-semantics 1 mode conv addop rhw res max min)
***************
*** 7319,7325 ****
  		name mode conv addop rhw res max min op ope comment)
    (dni name
         (comment)
!        ((UNIT FM01) (FR500-MAJOR M-4) (FR400-MAJOR M-1) CONDITIONAL)
         (.str name "$pack $FRinti,$FRintj,$" res ",$CCi,$cond")
         (+ pack res op FRinti CCi cond ope FRintj)
         (media-dual-multiply-acc-semantics (eq CCi (or cond 2))
--- 7346,7352 ----
  		name mode conv addop rhw res max min op ope comment)
    (dni name
         (comment)
!        ((UNIT FMALL) (FR500-MAJOR M-4) (FR400-MAJOR M-1) CONDITIONAL)
         (.str name "$pack $FRinti,$FRintj,$" res ",$CCi,$cond")
         (+ pack res op FRinti CCi cond ope FRintj)
         (media-dual-multiply-acc-semantics (eq CCi (or cond 2))
***************
*** 7372,7378 ****
  		name mode conv addop rhw res max min op ope comment)
    (dni name
         (comment)
!        ((UNIT FM01) (FR500-MAJOR M-4) (FR400-MAJOR M-2))
         (.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)
--- 7399,7405 ----
  		name mode conv addop rhw res max min op ope comment)
    (dni name
         (comment)
!        ((UNIT FMALL) (FR500-MAJOR M-4) (FR400-MAJOR M-2))
         (.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)
***************
*** 7399,7405 ****
  		name mode conv addop rhw res max min op ope comment)
    (dni name
         (comment)
!        ((UNIT FM01) (FR500-MAJOR M-4) (FR400-MAJOR M-2) CONDITIONAL)
         (.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))
--- 7426,7432 ----
  		name mode conv addop rhw res max min op ope comment)
    (dni name
         (comment)
!        ((UNIT FMALL) (FR500-MAJOR M-4) (FR400-MAJOR M-2) CONDITIONAL)
         (.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))
***************
*** 7456,7462 ****
  		name mode conv addop rhw res max min op ope comment)
    (dni name
         (comment)
!        ((UNIT FM0) (MACH fr400) (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
--- 7483,7489 ----
  		name mode conv addop rhw res max min op ope comment)
    (dni name
         (comment)
!        ((UNIT MDUALACC) (MACH fr400) (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
***************
*** 7505,7511 ****
  		name mode conv addop rhw res max min op ope comment)
    (dni name
         (comment)
!        ((UNIT FM0) (MACH fr400) (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
--- 7532,7538 ----
  		name mode conv addop rhw res max min op ope comment)
    (dni name
         (comment)
!        ((UNIT MDUALACC) (MACH fr400) (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
***************
*** 7554,7560 ****
  		name mode conv addop rhw res max min op ope comment)
    (dni name
         (comment)
!        ((UNIT FM0) (MACH fr400) (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
--- 7581,7587 ----
  		name mode conv addop rhw res max min op ope comment)
    (dni name
         (comment)
!        ((UNIT MDUALACC) (MACH fr400) (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
***************
*** 7619,7625 ****
  		name mode conv rhs1 rhs2 max min op ope comment)
    (dni name
         (comment)
!        ((UNIT FM01) (FR500-MAJOR M-4) (FR400-MAJOR M-1))
         (.str name "$pack $FRinti,$FRintj,$ACC40Sk")
         (+ pack ACC40Sk op FRinti ope FRintj)
         (media-dual-complex-semantics-i mode conv rhs1 rhs2 max min)
--- 7646,7652 ----
  		name mode conv rhs1 rhs2 max min op ope comment)
    (dni name
         (comment)
!        ((UNIT FMALL) (FR500-MAJOR M-4) (FR400-MAJOR M-1))
         (.str name "$pack $FRinti,$FRintj,$ACC40Sk")
         (+ pack ACC40Sk op FRinti ope FRintj)
         (media-dual-complex-semantics-i mode conv rhs1 rhs2 max min)
***************
*** 7666,7672 ****
  		name mode conv rhs1 rhs2 max min op ope comment)
    (dni name
         (comment)
!        ((UNIT FM01) (FR500-MAJOR M-4) (FR400-MAJOR M-1) CONDITIONAL)
         (.str name "$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond")
         (+ pack ACC40Sk op FRinti CCi cond ope FRintj)
         (if (eq CCi (or cond 2))
--- 7693,7699 ----
  		name mode conv rhs1 rhs2 max min op ope comment)
    (dni name
         (comment)
!        ((UNIT FMALL) (FR500-MAJOR M-4) (FR400-MAJOR M-1) CONDITIONAL)
         (.str name "$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond")
         (+ pack ACC40Sk op FRinti CCi cond ope FRintj)
         (if (eq CCi (or cond 2))
***************
*** 7733,7739 ****
  		name mode conv rhs1 rhs2 max min op ope comment)
    (dni name
         (comment)
!        ((UNIT FM01) (FR500-MAJOR M-4) (FR400-MAJOR M-2))
         (.str name "$pack $FRintieven,$FRintjeven,$ACC40Sk")
         (+ pack ACC40Sk op FRintieven ope FRintjeven)
         (if (register-unaligned ACC40Sk 2)
--- 7760,7766 ----
  		name mode conv rhs1 rhs2 max min op ope comment)
    (dni name
         (comment)
!        ((UNIT FMALL) (FR500-MAJOR M-4) (FR400-MAJOR M-2))
         (.str name "$pack $FRintieven,$FRintjeven,$ACC40Sk")
         (+ pack ACC40Sk op FRintieven ope FRintjeven)
         (if (register-unaligned ACC40Sk 2)
***************
*** 8067,8078 ****
       ((fr500 (unit u-media-dual-btohe)))
  )
  
! (dni mclracc
       "Media clear accumulator(s)"
!      ((UNIT FM01) (FR500-MAJOR M-3))
!      "mclracc$pack $ACC40Sk,$A"
!      (+ pack ACC40Sk OP_7B A (misc-null-10) OPE1_3B (FRj-null))
!      (c-call VOID "@cpu@_clear_accumulators" (index-of ACC40Sk) A)
       ((fr400 (unit u-media-4))
        (fr500 (unit u-media)))
  )
--- 8094,8127 ----
       ((fr500 (unit u-media-dual-btohe)))
  )
  
! ; Media NOP
! ; A special case of mclracc
! (dni mnop "Media nop"
!      ((UNIT FMALL) (FR500-MAJOR M-1) (FR400-MAJOR M-1))
!      "mnop$pack"
!      (+ pack (f-ACC40Sk 63) OP_7B (f-A 1) (misc-null-10) OPE1_3B (FRj-null))
!      (nop)
!      ()
! )
! 
! ; mclracc with #A==0
! (dni mclracc-0
!      "Media clear accumulator(s)"
!      ((UNIT FM01) (FR500-MAJOR M-3) (FR400-MAJOR M-1))
!      "mclracc$pack $ACC40Sk,$A0"
!      (+ pack ACC40Sk OP_7B (f-A 0) (misc-null-10) OPE1_3B (FRj-null))
!      (c-call VOID "@cpu@_clear_accumulators" (index-of ACC40Sk) 0)
!      ((fr400 (unit u-media-4))
!       (fr500 (unit u-media)))
! )
! 
! ; mclracc with #A==1
! (dni mclracc-1
       "Media clear accumulator(s)"
!      ((UNIT MCLRACC-1) (FR500-MAJOR M-6) (FR400-MAJOR M-2))
!      "mclracc$pack $ACC40Sk,$A1"
!      (+ pack ACC40Sk OP_7B (f-A 1) (misc-null-10) OPE1_3B (FRj-null))
!      (c-call VOID "@cpu@_clear_accumulators" (index-of ACC40Sk) 1)
       ((fr400 (unit u-media-4))
        (fr500 (unit u-media)))
  )
***************
*** 8138,8144 ****
  ; On the other hand spending a little time in the decoder is often worth it.
  ;
  (dnmi nop "nop"
!      ((UNIT I01) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
       "nop$pack"
       (emit ori pack (GRi 0) (s12 0) (GRk 0))
  )
--- 8187,8193 ----
  ; On the other hand spending a little time in the decoder is often worth it.
  ;
  (dnmi nop "nop"
!      ((UNIT IALL) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
       "nop$pack"
       (emit ori pack (GRi 0) (s12 0) (GRk 0))
  )
***************
*** 8146,8166 ****
  ; Floating point NOP
  (dni fnop
       "Floating point nop"
!      ((UNIT FM01) (FR500-MAJOR F-8) (MACH simple,tomcat,fr500,frv))
       "fnop$pack"
       (+ pack (rd-null) OP_79 (FRi-null) OPE1_0D (FRj-null))
       (nop)
       ()
  )
  
- ; Media NOP
- ; A special case of mclracc
- (dnmi mnop "Media nop"
-       (NO-DIS (UNIT FM01) (FR500-MAJOR M-3))
-      "mnop$pack"
-      (emit mclracc pack (ACC40Sk 63) (A 1))
- )
- 
  ; A return instruction
  (dnmi ret "return"
        (NO-DIS (UNIT B01) (FR500-MAJOR B-3) (FR400-MAJOR B-3))
--- 8195,8207 ----
  ; Floating point NOP
  (dni fnop
       "Floating point nop"
!      ((UNIT FMALL) (FR500-MAJOR F-8) (MACH simple,tomcat,fr500,frv))
       "fnop$pack"
       (+ pack (rd-null) OP_79 (FRi-null) OPE1_0D (FRj-null))
       (nop)
       ()
  )
  
  ; A return instruction
  (dnmi ret "return"
        (NO-DIS (UNIT B01) (FR500-MAJOR B-3) (FR400-MAJOR B-3))
***************
*** 8169,8199 ****
  )
  
  (dnmi cmp "compare"
!       (NO-DIS (UNIT I01) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
        "cmp$pack $GRi,$GRj,$ICCi_1"
        (emit subcc pack GRi GRj (GRk 0) ICCi_1)
  )
  
  (dnmi cmpi "compare immediate"
!       (NO-DIS (UNIT I01) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
        "cmpi$pack $GRi,$s10,$ICCi_1"
        (emit subicc pack GRi s10 (GRk 0) ICCi_1)
  )
  
  (dnmi ccmp "conditional compare"
!       (NO-DIS (UNIT I01) (FR500-MAJOR I-1) (FR400-MAJOR I-1) CONDITIONAL)
        "ccmp$pack $GRi,$GRj,$CCi,$cond"
        (emit csubcc pack GRi GRj (GRk 0) CCi cond)
  )
  
  (dnmi mov "move"
!       (NO-DIS (UNIT I01) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
        "mov$pack $GRi,$GRk"
        (emit ori pack GRi (s12 0) GRk)
  )   
  
  (dnmi cmov "conditional move"
!       (NO-DIS (UNIT I01) (FR500-MAJOR I-1) (FR400-MAJOR I-1) CONDITIONAL)
        "cmov$pack $GRi,$GRk,$CCi,$cond"
        (emit cor pack GRi (GRj 0) GRk CCi cond)
  )   
--- 8210,8240 ----
  )
  
  (dnmi cmp "compare"
!       (NO-DIS (UNIT IALL) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
        "cmp$pack $GRi,$GRj,$ICCi_1"
        (emit subcc pack GRi GRj (GRk 0) ICCi_1)
  )
  
  (dnmi cmpi "compare immediate"
!       (NO-DIS (UNIT IALL) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
        "cmpi$pack $GRi,$s10,$ICCi_1"
        (emit subicc pack GRi s10 (GRk 0) ICCi_1)
  )
  
  (dnmi ccmp "conditional compare"
!       (NO-DIS (UNIT IALL) (FR500-MAJOR I-1) (FR400-MAJOR I-1) CONDITIONAL)
        "ccmp$pack $GRi,$GRj,$CCi,$cond"
        (emit csubcc pack GRi GRj (GRk 0) CCi cond)
  )
  
  (dnmi mov "move"
!       (NO-DIS (UNIT IALL) (FR500-MAJOR I-1) (FR400-MAJOR I-1))
        "mov$pack $GRi,$GRk"
        (emit ori pack GRi (s12 0) GRk)
  )   
  
  (dnmi cmov "conditional move"
!       (NO-DIS (UNIT IALL) (FR500-MAJOR I-1) (FR400-MAJOR I-1) CONDITIONAL)
        "cmov$pack $GRi,$GRk,$CCi,$cond"
        (emit cor pack GRi (GRj 0) GRk CCi cond)
  )   
Index: cpu/frv.opc
===================================================================
RCS file: /cvs/src/src/cpu/frv.opc,v
retrieving revision 1.2
diff -c -p -r1.2 frv.opc
*** cpu/frv.opc	5 Jun 2003 16:04:18 -0000	1.2
--- cpu/frv.opc	3 Sep 2003 22:59:32 -0000
*************** frv_is_media_insn (const CGEN_INSN *insn
*** 185,191 ****
  
  /* This table represents the allowable packing for vliw insns for the fr400.
     The fr400 has only 2 vliw slots. Represent this by not allowing any insns
!    in slots 2 and 3.
     Subsets of any given row are also allowed.  */
  static VLIW_COMBO fr400_allowed_vliw[] =
  {
--- 185,191 ----
  
  /* This table represents the allowable packing for vliw insns for the fr400.
     The fr400 has only 2 vliw slots. Represent this by not allowing any insns
!    in the extra slots.
     Subsets of any given row are also allowed.  */
  static VLIW_COMBO fr400_allowed_vliw[] =
  {
*************** static CGEN_ATTR_VALUE_TYPE fr400_unit_m
*** 228,242 ****
  /* I0       */     UNIT_I0,
  /* I1       */     UNIT_I1,
  /* I01      */     UNIT_I01, 
  /* FM0      */     UNIT_FM0,
  /* FM1      */     UNIT_FM1,
  /* FM01     */     UNIT_FM01,
  /* B0       */     UNIT_B0,  /* branches only in B0 unit.  */
  /* B1       */     UNIT_B0,
  /* B01      */     UNIT_B0,
  /* C        */     UNIT_C,
! /* MULT-DIV */     UNIT_I0,  /* multiply and divide only in I0 unit.  */
! /* LOAD     */     UNIT_I0   /* load                only in I0 unit.  */
  };
  
  static CGEN_ATTR_VALUE_TYPE fr500_unit_mapping[] =
--- 228,250 ----
  /* I0       */     UNIT_I0,
  /* I1       */     UNIT_I1,
  /* I01      */     UNIT_I01, 
+ /* IALL     */     UNIT_I01, /* only I0 and I1 units */
  /* FM0      */     UNIT_FM0,
  /* FM1      */     UNIT_FM1,
  /* FM01     */     UNIT_FM01,
+ /* FMALL    */     UNIT_FM01,/* Only F0,F1,M0,M1 units */
+ /* FMLOW    */     UNIT_FM0, /* Only F0,M0 units */
  /* B0       */     UNIT_B0,  /* branches only in B0 unit.  */
  /* B1       */     UNIT_B0,
  /* B01      */     UNIT_B0,
  /* C        */     UNIT_C,
! /* MULT-DIV */     UNIT_I0,  /* multiply and divide only in I0  unit.  */
! /* LOAD     */     UNIT_I0,  /* load                only in I0  unit.  */
! /* STORE    */     UNIT_I0,  /* store               only in I0  unit.  */
! /* SCAN     */     UNIT_I0,  /* scan                only in I0  unit.  */
! /* DCPL     */     UNIT_C,   /* dcpl                only in C   unit.  */
! /* MDUALACC */     UNIT_FM0, /* media dual acc insn only in FM0 unit.  */
! /* MCLRACC-1*/     UNIT_FM0  /* mclracc,A==1   insn only in FM0 unit.  */
  };
  
  static CGEN_ATTR_VALUE_TYPE fr500_unit_mapping[] =
*************** static CGEN_ATTR_VALUE_TYPE fr500_unit_m
*** 246,260 ****
  /* I0       */     UNIT_I0,
  /* I1       */     UNIT_I1,
  /* I01      */     UNIT_I01, 
  /* FM0      */     UNIT_FM0,
  /* FM1      */     UNIT_FM1,
  /* FM01     */     UNIT_FM01,
  /* B0       */     UNIT_B0,
  /* B1       */     UNIT_B1,
  /* B01      */     UNIT_B01,
  /* C        */     UNIT_C,
  /* MULT-DIV */     UNIT_I01, /* multiply and divide in I0 or I1 unit.  */
! /* LOAD     */     UNIT_I01  /* load                in I0 or I1 unit.  */
  };
  
  void
--- 254,276 ----
  /* I0       */     UNIT_I0,
  /* I1       */     UNIT_I1,
  /* I01      */     UNIT_I01, 
+ /* IALL     */     UNIT_I01, /* only I0 and I1 units */
  /* FM0      */     UNIT_FM0,
  /* FM1      */     UNIT_FM1,
  /* FM01     */     UNIT_FM01,
+ /* FMALL    */     UNIT_FM01,/* Only F0,F1,M0,M1 units */
+ /* FMLOW    */     UNIT_FM0, /* Only F0,M0 units */
  /* B0       */     UNIT_B0,
  /* B1       */     UNIT_B1,
  /* B01      */     UNIT_B01,
  /* C        */     UNIT_C,
  /* MULT-DIV */     UNIT_I01, /* multiply and divide in I0 or I1 unit.  */
! /* LOAD     */     UNIT_I01, /* load                in I0 or I1 unit.  */
! /* STORE    */     UNIT_I0,  /* store               only in I0 unit.  */
! /* SCAN     */     UNIT_I01, /* scan                in I0 or I1 unit.  */
! /* DCPL     */     UNIT_C,   /* dcpl                only in C unit.  */
! /* MDUALACC */     UNIT_FM0, /* media dual acc insn only in FM0 unit.  */
! /* MCLRACC-1*/     UNIT_FM01 /* mclracc,A==1 in FM0 or FM1 unit.  */
  };
  
  void
*************** frv_vliw_add_insn (FRV_VLIW *vliw, const
*** 537,546 ****
    if (unit == UNIT_NIL)
      abort (); /* no UNIT specified for this insn in frv.cpu  */
  
!   if (vliw->mach == bfd_mach_fr400)
!     major = CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_FR400_MAJOR);
!   else
!     major = CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_FR500_MAJOR);
  
    if (index <= 0)
      {
--- 553,567 ----
    if (unit == UNIT_NIL)
      abort (); /* no UNIT specified for this insn in frv.cpu  */
  
!   switch (vliw->mach)
!     {
!     case bfd_mach_fr400:
!       major = CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_FR400_MAJOR);
!       break;
!     default:
!       major = CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_FR500_MAJOR);
!       break;
!     }
  
    if (index <= 0)
      {
*************** static const char * parse_u12
*** 606,611 ****
--- 627,638 ----
    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_A0
+   PARAMS ((CGEN_CPU_DESC, const char **, int, long *));
+ static const char * parse_A1
+   PARAMS ((CGEN_CPU_DESC, const char **, int, long *));
+ static const char * parse_A
+   PARAMS ((CGEN_CPU_DESC, const char **, int, long *, long));
  
  static const char *
  parse_ulo16 (cd, strp, opindex, valuep)
*************** parse_u12 (cd, strp, opindex, valuep)
*** 886,891 ****
--- 913,961 ----
          ++*strp;
        return cgen_parse_signed_integer (cd, strp, opindex, valuep);
      }
+ }
+ 
+ static const char *
+ parse_A (cd, strp, opindex, valuep, A)
+      CGEN_CPU_DESC cd;
+      const char **strp;
+      int opindex;
+      long *valuep;
+      long A;
+ {
+   const char *errmsg;
+  
+   if (**strp == '#')
+     ++*strp;
+ 
+   errmsg = cgen_parse_unsigned_integer (cd, strp, opindex, valuep);
+   if (errmsg)
+     return errmsg;
+ 
+   if (*valuep != A)
+     return "Value of A operand must be 0 or 1";
+ 
+   return NULL;
+ }
+ 
+ static const char *
+ parse_A0 (cd, strp, opindex, valuep)
+      CGEN_CPU_DESC cd;
+      const char **strp;
+      int opindex;
+      long *valuep;
+ {
+   return parse_A (cd, strp, opindex, valuep, 0);
+ }
+ 
+ static const char *
+ parse_A1 (cd, strp, opindex, valuep)
+      CGEN_CPU_DESC cd;
+      const char **strp;
+      int opindex;
+      long *valuep;
+ {
+   return parse_A (cd, strp, opindex, valuep, 1);
  }
  
  static const char *

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