;; arcextlib.s:	Extension library for ARC.
;; Copyright 2002, 2003 Free Software Foundation
;;
;; This file is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2 of the License, or
;; (at your option) any later version.
;; 
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.
;; 
;; You should have received a copy of the GNU General Public License
;; along with this program; if not, write to the Free Software
;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

;; Driver option -Xtelephony causes all telephony extensions to be activated
	
.ifdef __Xtelephony
    ; ARC4-only options.
    .set   __Xins_tel,1
    .set   __Xxy_tel,1
    .set   __Xxmac_d16_tel,1
    .set   __Xdvbf,1
.endif
	
.ifdef __Xins_tel
	.ifndef __Xbarrel_shifter
            .set   __Xbarrel_shifter,1
        .endif
        .ifndef __Xswap	
            .set           __Xswap,1
        .endif  	
	.ifndef __Xmin_max
            .set   __Xmin_max,1
	.endif
.endif
	
.ifdef __Xdsp_packa
    .set   __Xmul32x16,1
    .ifndef __Xea
            .set   __Xea,1
    .endif
.endif
.ifdef __Xmult32	
        .ifndef __Xmul32x16
	.set __Xmul32x16,1
        .endif
	.ifndef __Xmul32x32
	.set __Xmul32x32,1
        .endif
.endif        
        	
.ifndef __ARCCOMPACT__
        .ifdef __ARC700__
               .set   __ARCCOMPACT__,1
        .endif
        .ifdef __ARC600__
                .set  __ARCCOMPACT__,1
        .endif
.endif        	
	
;;  SWAP Extensions
.ifdef __Xswap
    .ifndef __ARCCOMPACT__
	.ifndef __ARC700__	
		.extInstruction	swap, 0x05, 0x00, SUFFIX_FLAG, SYNTAX_2OP
        .else
                .extInstruction	swap, 0x03, 0x09, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_2OP
        .endif
     .endif		
.endif

;; Normalise Extensions
.ifdef __Xnorm
    .ifdef __ARCCOMPACT__
		.extInstruction	norm , 0x05, 0x01, SUFFIX_FLAG, SYNTAX_2OP
		.extInstruction	normw, 0x05, 0x08, SUFFIX_FLAG, SYNTAX_2OP
                .else
                .extInstruction	norm, 0x03, 0x0A, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_2OP
    .endif
.endif

;; Barrel Shifter Extensions
.ifdef __Xbarrel_shifter
    .ifdef __ARCCOMPACT__
	.extInstruction	asl,0x05,0x00,SUFFIX_COND|SUFFIX_FLAG,SYNTAX_3OP
	.extInstruction	lsl,0x05,0x00,SUFFIX_COND|SUFFIX_FLAG,SYNTAX_3OP
	.extInstruction	lsr,0x05,0x01,SUFFIX_COND|SUFFIX_FLAG,SYNTAX_3OP
	.extInstruction	asr,0x05,0x02,SUFFIX_COND|SUFFIX_FLAG,SYNTAX_3OP
	.extInstruction	ror,0x05,0x03,SUFFIX_COND|SUFFIX_FLAG,SYNTAX_3OP
    .else
	.extInstruction	asl, 0x10, 0x00, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
	.extInstruction	lsl, 0x10, 0x00, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
	.extInstruction	lsr, 0x11, 0x00, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
	.extInstruction	asr, 0x12, 0x00, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
	.extInstruction	ror, 0x13, 0x00, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
    .endif
.endif

;; Min/Max Extensions
.ifdef __Xmin_max
    .ifdef __A4__
	.extInstruction	min, 0x1f, 0x00, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
	.extInstruction	max, 0x1e, 0x00, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
    .endif
.endif

;;  Dual and Single Operand Saturated Arithmetic Instructions
.ifdef __Xea
    .ifdef __ARCCOMPACT__
    	.extInstruction	sat16,  0x05, 0x02, SUFFIX_FLAG, SYNTAX_2OP
    	.extInstruction	rnd16,  0x05, 0x03, SUFFIX_FLAG, SYNTAX_2OP
    	.extInstruction	abssw,  0x05, 0x04, SUFFIX_FLAG, SYNTAX_2OP
    	.extInstruction	abss,   0x05, 0x05, SUFFIX_FLAG, SYNTAX_2OP
    	.extInstruction	negsw,  0x05, 0x06, SUFFIX_FLAG, SYNTAX_2OP
    	.extInstruction	negs,   0x05, 0x07, SUFFIX_FLAG, SYNTAX_2OP

        .extInstruction adds,   0x05, 0x06, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
        .extInstruction subs,   0x05, 0x07, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
    	.extInstruction	divaw,  0x05, 0x08, SUFFIX_COND, SYNTAX_3OP

        .extInstruction	asls,   0x05, 0x0A, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
    	.extInstruction	asrs,   0x05, 0x0B, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP

        .extInstruction addsdw, 0x05, 0x28, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
        .extInstruction subsdw, 0x05, 0x29, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
    .else
	.ifndef __A4__
        ;; Single Operand Instructions
        .extInstruction sat,    0x03, 0x10, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_2OP
        .extInstruction sabss,  0x03, 0x11, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_2OP
        .extInstruction labss,  0x03, 0x12, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_2OP
        .extInstruction rnd16,  0x03, 0x13, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_2OP
        .extInstruction snegs,  0x03, 0x14, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_2OP
        .extInstruction lnegs,  0x03, 0x15, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_2OP
        .extInstruction snorm,  0x03, 0x16, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_2OP
        .extInstruction lnorm,  0x03, 0x17, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_2OP

        .extInstruction adds,   0x1A, 0x00, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
        .extInstruction subs,   0x1B, 0x00, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
        .extInstruction diva,   0x14, 0x00, SUFFIX_COND            , SYNTAX_3OP
        .extInstruction asls,   0x16, 0x00, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
        .extInstruction asrs,   0x17, 0x00, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
	.endif
    .endif

    .extCondCode     Ss,    0x10
    .extCondCode     Sc,    0x11

    .extAuxRegister  aux_macmode, 0x41, r|w

.endif

.ifndef __Xno_mpy
    .ifdef __ARC700__	
	.extInstruction mpy,  0x04, 0x1A, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
	.extInstruction mpyh,  0x04, 0x1B, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
	.extInstruction mpyhu, 0x04, 0x1C, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
	.extInstruction mpyu, 0x04, 0x1D, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
    .endif
.endif

;; 32-bit Multiply Extensions
.ifdef __Xmult32
	.extCoreRegister mlo , 57, r, can_shortcut
	.extCoreRegister r57 , 57, r, can_shortcut
	.extCoreRegister mmid, 58, r, can_shortcut
	.extCoreRegister r58 , 58, r, can_shortcut
	.extCoreRegister mhi , 59, r, can_shortcut
	.extCoreRegister r59 , 59, r, can_shortcut

	.extAuxRegister	 mulhi, 0x12, w

	.ifdef __ARCCOMPACT__

	;; It's important that the longer syntax versions appear after
	;; the shorter syntax versions because internally that's how the
	;; assembler works. 

	        .extInstruction	mul64 , 0x05, 0x04, SUFFIX_COND|EXTENDED_MULTIPLY, SYNTAX_2OP|OP1_IMM_IMPLIED|OP1_DEST_IGNORED
		.extInstruction	mul64 , 0x05, 0x04, SUFFIX_COND|EXTENDED_MULTIPLY, SYNTAX_3OP|OP1_MUST_BE_IMM|OP1_DEST_IGNORED
		.extInstruction	mulu64, 0x05, 0x05, SUFFIX_COND|EXTENDED_MULTIPLY, SYNTAX_2OP|OP1_IMM_IMPLIED|OP1_DEST_IGNORED
		.extInstruction	mulu64, 0x05, 0x05, SUFFIX_COND|EXTENDED_MULTIPLY, SYNTAX_3OP|OP1_MUST_BE_IMM|OP1_DEST_IGNORED

        .else
	.extInstruction	mul64 , 0x14, 0x00,SUFFIX_COND, SYNTAX_2OP|OP1_IMM_IMPLIED
	.extInstruction	mul64 , 0x14, 0x00,SUFFIX_COND, SYNTAX_3OP|OP1_MUST_BE_IMM
	.extInstruction	mulu64, 0x15, 0x00,SUFFIX_COND, SYNTAX_2OP|OP1_IMM_IMPLIED
	.extInstruction	mulu64, 0x15, 0x00,SUFFIX_COND, SYNTAX_3OP|OP1_MUST_BE_IMM
	.endif
.endif
;; 32x16 MUL/MAC from DSP 3.1 Pack-A
.ifdef __Xmul32x16
	.extInstruction	mululw, 0x05,0x30,SUFFIX_COND|SUFFIX_FLAG,SYNTAX_3OP
	.extInstruction	mullw,  0x05,0x31,SUFFIX_COND|SUFFIX_FLAG,SYNTAX_3OP
	.extInstruction	mulflw, 0x05,0x32,SUFFIX_COND|SUFFIX_FLAG,SYNTAX_3OP
	.extInstruction	maclw,  0x05,0x33,SUFFIX_COND|SUFFIX_FLAG,SYNTAX_3OP
	.extInstruction	macflw, 0x05,0x34,SUFFIX_COND|SUFFIX_FLAG,SYNTAX_3OP
	.extInstruction	machulw,0x05,0x35,SUFFIX_COND|SUFFIX_FLAG,SYNTAX_3OP
	.extInstruction	machlw, 0x05,0x36,SUFFIX_COND|SUFFIX_FLAG,SYNTAX_3OP
	.extInstruction	machflw,0x05,0x37,SUFFIX_COND|SUFFIX_FLAG,SYNTAX_3OP
	.extInstruction	mulhlw, 0x05,0x38,SUFFIX_COND|SUFFIX_FLAG,SYNTAX_3OP
	.extInstruction	mulhflw,0x05,0x39,SUFFIX_COND|SUFFIX_FLAG,SYNTAX_3OP

        .extCondCode     Ss,    0x10
        .extCondCode     Sc,    0x11
        .extCondCode     AS,    0x12
        .extCondCode     ASc,   0x13
        .extCondCode     AZ,    0x18
        .extCondCode     AZc,   0x19
        .extCondCode     AN,    0x1A
        .extCondCode     AP,    0x1B
        .extCondCode     PS,    0x1C
        .extCondCode     PSc,   0x1D

        .extAuxRegister	 aux_macmode, 0x41, r|w
	.extAuxRegister  aux_xmac1632h, 0x9f, r|w
	.extAuxRegister  aux_xmac1632l, 0xa0, r|w

        .extCoreRegister acc1,  56, w|r, can_shortcut
        .extCoreRegister acc2,  57, w|r, can_shortcut
.ifndef __Xmult32
        .extCoreRegister r56,  56, w|r, can_shortcut
        .extCoreRegister r57,  57, w|r, can_shortcut
.endif

.endif

;; 2 New condition codes
.ifdef __ARC700__
	
    .extCondCode     qf,    0x1e
    .extCondCode     qnf,   0x1f

.endif
	
;;; arc simd control instructions
.ifdef __ARC700__	
    .extInstruction	chsd,     0x05, 0x3f, SUFFIX_NONE, SYNTAX_3OP
.endif
	
;; double-precision floating point extensions
.ifdef __Xdpfp
	.ifdef __ARCCOMPACT__
        .extInstruction dmulh11,0x06,0x08,SUFFIX_FLAG,SYNTAX_3OP
        .extInstruction dmulh12,0x06,0x09,SUFFIX_FLAG,SYNTAX_3OP
        .extInstruction dmulh21,0x06,0x0a,SUFFIX_FLAG,SYNTAX_3OP
        .extInstruction dmulh22,0x06,0x0b,SUFFIX_FLAG,SYNTAX_3OP

        .extInstruction daddh11,0x06,0x0c,SUFFIX_FLAG,SYNTAX_3OP
        .extInstruction daddh12,0x06,0x0d,SUFFIX_FLAG,SYNTAX_3OP
        .extInstruction daddh21,0x06,0x0e,SUFFIX_FLAG,SYNTAX_3OP
        .extInstruction daddh22,0x06,0x0f,SUFFIX_FLAG,SYNTAX_3OP

        .extInstruction dsubh11,0x06,0x10,SUFFIX_FLAG,SYNTAX_3OP
        .extInstruction dsubh12,0x06,0x11,SUFFIX_FLAG,SYNTAX_3OP
        .extInstruction dsubh21,0x06,0x12,SUFFIX_FLAG,SYNTAX_3OP
        .extInstruction dsubh22,0x06,0x13,SUFFIX_FLAG,SYNTAX_3OP

        .extInstruction drsubh11,0x06,0x14,SUFFIX_FLAG,SYNTAX_3OP
        .extInstruction drsubh12,0x06,0x15,SUFFIX_FLAG,SYNTAX_3OP
        .extInstruction drsubh21,0x06,0x16,SUFFIX_FLAG,SYNTAX_3OP
        .extInstruction drsubh22,0x06,0x17,SUFFIX_FLAG,SYNTAX_3OP

        .extInstruction dexcl1,0x06,0x18,SUFFIX_NONE,SYNTAX_3OP
        .extInstruction dexcl2,0x06,0x19,SUFFIX_NONE,SYNTAX_3OP

        .extAuxRegister dp_build,0x6c,r
        .extAuxRegister dp_status,0x305,r
	;; compiler uses these instead of the AUX_DPFPDx variety
        .extAuxRegister D1L,0x301,r|w
        .extAuxRegister D1H,0x302,r|w
        .extAuxRegister D2L,0x303,r|w
        .extAuxRegister D2H,0x304,r|w
        .endif
.endif

.ifdef __Xspfp
.ifdef __ARCCOMPACT__
	.extInstruction fadd, 0x6, 0x1, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
	.extInstruction fmul, 0x6, 0x0, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
	.extInstruction fsub, 0x6, 0x2, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
.endif
.endif	

.ifdef __Xxy
	.ifndef __ARCCOMPACT__
	.extCoreRegister x0_nu,   48, r|w, cannot_shortcut
	.extCoreRegister x0_u,    49, r|w, cannot_shortcut
	.extCoreRegister x1_nu,   50, r|w, cannot_shortcut
	.extCoreRegister x1_u,    51, r|w, cannot_shortcut
	.extCoreRegister y0_nu,   52, r|w, cannot_shortcut
	.extCoreRegister y0_u,    53, r|w, cannot_shortcut
	.extCoreRegister y1_nu,   54, r|w, cannot_shortcut
	.extCoreRegister y1_u,    55, r|w, cannot_shortcut

	; Context switching temporary storage registers

	.extCoreRegister t0,      44, r|w, can_shortcut
	.extCoreRegister t1,      45, r|w, can_shortcut
	.extCoreRegister t2,      46, r|w, can_shortcut
	.extCoreRegister t3,      47, r|w, can_shortcut

	; Address and Modifier Register definitions
   
	.extAuxRegister ax0,      0x30, r|w
	.extAuxRegister ax1,      0x31, r|w
	.extAuxRegister ay0,      0x32, r|w
	.extAuxRegister ay1,      0x33, r|w
	.extAuxRegister mx0,      0x34, r|w
	.extAuxRegister mx1,      0x35, r|w
	.extAuxRegister my0,      0x36, r|w
	.extAuxRegister my1,      0x37, r|w

	.extAuxRegister xyconfig, 0x38, r|w
	.extAuxRegister burstsys, 0x3a, r|w
	.extAuxRegister burstxym, 0x3b, r|w
	.extAuxRegister burstsz,  0x3c, r|w
	.extAuxRegister burstval, 0x3d, r|w
                ;; 	add_check xy, 2
	.endif
.endif
	
.ifdef __Xxy	
        .ifdef __ARCCOMPACT__
;;	XY Memory extension (DSP version 3)
	.extCoreRegister x0_u0, 32,  r|w, cannot_shortcut,CORE
	.extCoreRegister x0_u1, 33,  r|w, cannot_shortcut,CORE
	.extCoreRegister x1_u0, 34,  r|w, cannot_shortcut,CORE
	.extCoreRegister x1_u1, 35,  r|w, cannot_shortcut,CORE
	.extCoreRegister x2_u0, 36,  r|w, cannot_shortcut,CORE
	.extCoreRegister x2_u1, 37,  r|w, cannot_shortcut,CORE
	.extCoreRegister x3_u0, 38,  r|w, cannot_shortcut,CORE
	.extCoreRegister x3_u1, 39,  r|w, cannot_shortcut,CORE

	.extCoreRegister y0_u0, 40,  r|w, cannot_shortcut,CORE
	.extCoreRegister y0_u1, 41,  r|w, cannot_shortcut,CORE
	.extCoreRegister y1_u0, 42,  r|w, cannot_shortcut,CORE
	.extCoreRegister y1_u1, 43,  r|w, cannot_shortcut,CORE
	.extCoreRegister y2_u0, 44,  r|w, cannot_shortcut,CORE
	.extCoreRegister y2_u1, 45,  r|w, cannot_shortcut,CORE
	.extCoreRegister y3_u0, 46,  r|w, cannot_shortcut,CORE
	.extCoreRegister y3_u1, 47,  r|w, cannot_shortcut,CORE

	.extCoreRegister x0_nu, 48,  r|w, cannot_shortcut,CORE
	.extCoreRegister x1_nu, 49,  r|w, cannot_shortcut,CORE
	.extCoreRegister x2_nu, 50,  r|w, cannot_shortcut,CORE
	.extCoreRegister x3_nu, 51,  r|w, cannot_shortcut,CORE
	.extCoreRegister y0_nu, 52,  r|w, cannot_shortcut,CORE
	.extCoreRegister y1_nu, 53,  r|w, cannot_shortcut,CORE
	.extCoreRegister y2_nu, 54,  r|w, cannot_shortcut,CORE
	.extCoreRegister y3_nu, 55,  r|w, cannot_shortcut,CORE

    ;Newly defined pointers  in Auxiliary memory space
	.extAuxRegister ax0,  0x80, r|w
	.extAuxRegister ax1,  0x81, r|w
	.extAuxRegister ax2,  0x82, r|w
	.extAuxRegister ax3,  0x83, r|w
	.extAuxRegister ay0,  0x84, r|w
	.extAuxRegister ay1,  0x85, r|w
	.extAuxRegister ay2,  0x86, r|w
	.extAuxRegister ay3,  0x87, r|w

	.extAuxRegister mx00, 0x88, r|w
	.extAuxRegister mx01, 0x89, r|w
	.extAuxRegister mx10, 0x8a, r|w
	.extAuxRegister mx11, 0x8b, r|w
	.extAuxRegister mx20, 0x8c, r|w
	.extAuxRegister mx21, 0x8d, r|w
	.extAuxRegister mx30, 0x8e, r|w
	.extAuxRegister mx31, 0x8f, r|w

	.extAuxRegister my00, 0x90, r|w
	.extAuxRegister my01, 0x91, r|w
	.extAuxRegister my10, 0x92, r|w
	.extAuxRegister my11, 0x93, r|w
	.extAuxRegister my20, 0x94, r|w
	.extAuxRegister my21, 0x95, r|w
	.extAuxRegister my30, 0x96, r|w
	.extAuxRegister my31, 0x97, r|w

	.extAuxRegister xyconfig, 0x98, r|w
	.extAuxRegister burstsys, 0x99, r|w
	.extAuxRegister burstxym, 0x9a, r|w
	.extAuxRegister burstsz,  0x9b, r|w
	.extAuxRegister burstval, 0x9c, r|w
	.extAuxRegister xylsbasex,0x9d, r|w
	.extAuxRegister xylsbasey,0x9e, r|w
        .endif
.endif
	

	
.ifdef __Xxmac_d16
	.ifndef __Xxmac
                .set  __Xxmac,1
        .endif
.endif        
.ifdef __Xxmac_24
	.ifndef _Xxmac
                .set  __Xxmac,1
	.endif
.endif        
.ifdef __Xmult32
	.ifndef __Xxmac
	.set  __Xxmac,1
        .endif          
	.ifndef __Xxmac_d16
	.set __Xxmac_d16,1
        .endif
.endif        	

.ifdef __Xxmac	
.ifdef __ARCCOMPACT__
        .extCoreRegister a1,  58, w|r, cannot_shortcut, CORE
        .extCoreRegister a2,  59, w|r, cannot_shortcut, CORE
        .extAuxRegister aux_macmode, 0x41, r|w

        .extCondCode     Ss,    0x10
        .extCondCode     Sc,    0x11
        .extCondCode     AS,    0x12
        .extCondCode     ASc,   0x13
        .extCondCode     AZ,    0x18
        .extCondCode     AZc,   0x19
        .extCondCode     AN,    0x1A
        .extCondCode     AP,    0x1B

	.ifdef __Xxmac_d16
        .extInstruction muldw,  0x05, 0x0c, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
        .extInstruction muludw, 0x05, 0x0d, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
        .extInstruction mulrdw, 0x05, 0x0e, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
        .extInstruction macdw,  0x05, 0x10, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
        .extInstruction macudw, 0x05, 0x11, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
        .extInstruction macrdw, 0x05, 0x12, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
        .extInstruction msubdw, 0x05, 0x14, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
        .extInstruction cmacrdw,0x05, 0x26, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
	.endif
	
        .ifndef __ARC700__
	    ;; FFT butterfly accelerator (not supported for ARC 700)
	    .extInstruction fbfdw,  0x05, 0x0b, SUFFIX_FLAG, SYNTAX_2OP
	.endif

	.ifdef __Xxmac_24
        .extInstruction mult,   0x05, 0x18, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
        .extInstruction mulut,  0x05, 0x19, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
        .extInstruction mulrt,  0x05, 0x1a, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
        .extInstruction mact,   0x05, 0x1c, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
        .extInstruction macrt,  0x05, 0x1e, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
        .extInstruction msubt,  0x05, 0x20, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
	.endif
    .else
	.ifndef __A4__
        .extInstruction msubnr, 0x15, 0x00, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
        .extInstruction macnr,  0x18, 0x00, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
        .extInstruction macunr, 0x19, 0x00, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
        .extInstruction mulnr,  0x1C, 0x00, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
        .extInstruction mulr,   0x1D, 0x00, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
	.endif
                ;; 	add_check xmac_d16, 3
    .endif

    .ifdef __ARCCOMPACT__
        .extCoreRegister acc1,  56, w|r, can_shortcut, CORE
        .extCoreRegister acc2,  57, w|r, can_shortcut, CORE
    .else
        .extCoreRegister acc0,  56, w|r, can_shortcut, CORE
        .extCoreRegister acc1,  57, w|r, can_shortcut, CORE
    .endif

        .extAuxRegister aux_macmode, 0x41, r|w
        .extAuxRegister aux_xmac0,   0x44, r|w
        .extAuxRegister aux_xmac1,   0x45, r|w
        .extAuxRegister aux_xmac2,   0x46, r|w
	.ifdef __Xxmac_24
        .extAuxRegister aux_xmac0_24,   0x2c, r|w
        .extAuxRegister aux_xmac1_24,   0x2d, r|w
        .extAuxRegister aux_xmac2_24,   0x2e, r|w
	.endif
    .ifdef __ARCCOMPACT__
	.ifndef __ARC700__
	    .extAuxRegister aux_fbf_store_16, 0x2f,  r|w
	.endif
    .endif

        .extCondCode     Ss,    0x10
        .extCondCode     Sc,    0x11
        .extCondCode     AS,    0x12
        .extCondCode     ASc,   0x13
        .extCondCode     AZ,    0x18
        .extCondCode     AZc,   0x19
        .extCondCode     AN,    0x1A
        .extCondCode     AP,    0x1B
        .extCondCode     PS,    0x1C
        .extCondCode     PSc,   0x1D
.endif

;;  Dual and Single Operand Instructions for Telephony
.ifdef __Xea
    .ifdef __ARCCOMPACT__
    	.extInstruction	sat16,  0x05, 0x02, SUFFIX_FLAG, SYNTAX_2OP
    	.extInstruction	rnd16,  0x05, 0x03, SUFFIX_FLAG, SYNTAX_2OP
    	.extInstruction	abssw,  0x05, 0x04, SUFFIX_FLAG, SYNTAX_2OP
    	.extInstruction	abss,   0x05, 0x05, SUFFIX_FLAG, SYNTAX_2OP
    	.extInstruction	negsw,  0x05, 0x06, SUFFIX_FLAG, SYNTAX_2OP
    	.extInstruction	negs,   0x05, 0x07, SUFFIX_FLAG, SYNTAX_2OP

        .extInstruction adds,   0x05, 0x06, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
        .extInstruction subs,   0x05, 0x07, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
    	.extInstruction	divaw,  0x05, 0x08, SUFFIX_COND, SYNTAX_3OP
	.ifdef __Xbarrel_shifter
        .extInstruction	asls,   0x05, 0x0A, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
    	.extInstruction	asrs,   0x05, 0x0B, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
	.endif
        .extInstruction addsdw, 0x05, 0x28, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
        .extInstruction subsdw, 0x05, 0x29, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
    .else
	.ifndef __A4__
        ;; Single Operand Instructions
        .extInstruction sat,    0x03, 0x10, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_2OP
        .extInstruction sabss,  0x03, 0x11, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_2OP
        .extInstruction labss,  0x03, 0x12, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_2OP
        .extInstruction rnd16,  0x03, 0x13, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_2OP
        .extInstruction snegs,  0x03, 0x14, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_2OP
        .extInstruction lnegs,  0x03, 0x15, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_2OP
        .extInstruction snorm,  0x03, 0x16, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_2OP
        .extInstruction lnorm,  0x03, 0x17, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_2OP

        .extInstruction adds,   0x1A, 0x00, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
        .extInstruction subs,   0x1B, 0x00, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
        .extInstruction diva,   0x14, 0x00, SUFFIX_COND, SYNTAX_3OP
        .extInstruction asls,   0x16, 0x00, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
        .extInstruction asrs,   0x17, 0x00, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
	.endif
    .endif

    .extCondCode     Ss,    0x10
    .extCondCode     Sc,    0x11

    ; no BCR check yet possible for Extended Arithmetic.
.endif

;; DSP 3.1 Pack A extensions
.ifdef __Xdsp_packa
    .ifndef __A4__
    ; Dual min/max extension instruction declarations:
    .extInstruction minidl,    0x05, 0x09, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
    .extInstruction maxidl,    0x05, 0x0f, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
    .extAuxRegister aux_valm2,      0xa4, r|w
    .extAuxRegister aux_valm1,      0xa5, r|w
    .extAuxRegister aux_count,      0xa6, r|w
    .extAuxRegister aux_countm,     0xa7, r|w

    ; Dual barrel-shifter extension instruction declarations:
    .extInstruction asldw,     0x05, 0x21, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
    .extInstruction asrdw,     0x05, 0x22, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
    .extInstruction lsrdw,     0x05, 0x23, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
    .extInstruction aslsdw,    0x05, 0x24, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
    .extInstruction asrsdw,    0x05, 0x25, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP

    ; Dual maxabs extension instruction declarations:
    .extInstruction maxabssdw, 0x05, 0x2b, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
    .endif
.endif

;; Dual viterbi butterfly extension
.ifdef __Xdvbf
    .ifdef __ARCCOMPACT__
        .extInstruction vbfdw, 0x05, 0x0A, SUFFIX_FLAG, SYNTAX_2OP
    .else
	.ifndef __A4__
        .extInstruction	dvbf, 0x03, 0x18, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_2OP
	.endif
    .endif
        .ifndef __A4__
	; these are the names for telephony and A5 DSP ver 3.0
        .extAuxRegister aux_dvbf_mode,    0x26,  r|w
        .extAuxRegister aux_dvbf_bm0,     0x27,  r|w
        .extAuxRegister aux_dvbf_bm1,     0x28,  r|w
        .extAuxRegister aux_dvbf_accu,    0x29,  r|w
        .extAuxRegister aux_dvbf_ofst,    0x2A,  r|w
        .extAuxRegister aux_dvbf_intstat, 0x2B,  r|w

	; these are the names for A5 DSP ver 3.1 and later
        .extAuxRegister aux_vbfdw_mode,    0x26,  r|w
        .extAuxRegister aux_vbfdw_bm0,     0x27,  r|w
        .extAuxRegister aux_vbfdw_bm1,     0x28,  r|w
        .extAuxRegister aux_vbfdw_accu,    0x29,  r|w
        .extAuxRegister aux_vbfdw_ofst,    0x2A,  r|w
        .extAuxRegister aux_vbfdw_intstat, 0x2B,  r|w

	; No known reliable BCR check for vbfdw
	.endif
.endif

;; variable polynomial CRC
.ifdef __Xcrc
    .ifdef __ARCCOMPACT__
	.extInstruction crc, 0x05, 0x2c, SUFFIX_COND|SUFFIX_FLAG, SYNTAX_3OP
        .extAuxRegister aux_crc_poly, 0x32,  r|w
        .extAuxRegister aux_crc_mode, 0x33,  r|w
	; No known BCR check for CRC.
    .endif
.endif
