/* ARC SIMD include file.
   Copyright (C) 2007 Celunite, Inc.
   Written by Saurabh Verma (saurabh.verma@celunite.com).

   This file is part of GCC.

   GCC 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, or (at your
   option) any later version.

   GCC 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 GCC; see the file COPYING.  If not, write to the
   Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
   MA 02110-1301, USA.  */

/* As a special exception, if you include this header file into source
   files compiled by GCC, this header file does not by itself cause
   the resulting executable to be covered by the GNU General Public
   License.  This exception does not however invalidate any other
   reasons why the executable file might be covered by the GNU General
   Public License.  */

#ifndef _ARC_SIMD_H
#define _ARC_SIMD_H 1

#ifndef __ARC_SIMD__
#error Use the "-msimd" flag to enable ARC SIMD support
#endif

/* I0-I7 registers */
#define _IREG_I0  0
#define _IREG_I1  1
#define _IREG_I2  2
#define _IREG_I3  3
#define _IREG_I4  4
#define _IREG_I5  5
#define _IREG_I6  6
#define _IREG_I7  7

/* DMA configuration registers */
#define _DMA_REG_DR0		0
#define _DMA_SDM_SRC_ADR_REG	_DMA_REG_DR0
#define _DMA_SDM_DEST_ADR_REG	_DMA_REG_DR0

#define _DMA_REG_DR1		1
#define _DMA_SDM_STRIDE_REG	_DMA_REG_DR1

#define _DMA_REG_DR2		2
#define _DMA_BLK_REG		_DMA_REG_DR2

#define _DMA_REG_DR3		3
#define _DMA_LOC_REG		_DMA_REG_DR3

#define _DMA_REG_DR4		4
#define _DMA_SYS_SRC_ADR_REG	_DMA_REG_DR4
#define _DMA_SYS_DEST_ADR_REG	_DMA_REG_DR4

#define _DMA_REG_DR5		5
#define _DMA_SYS_STRIDE_REG	_DMA_REG_DR5

#define _DMA_REG_DR6		6
#define _DMA_CFG_REG		_DMA_REG_DR6

#define _DMA_REG_DR7		7
#define _DMA_FT_BASE_ADR_REG	_DMA_REG_DR7

/* Predefined types used in vector instructions */
typedef int   __v4si  __attribute__((vector_size(16)));
typedef short __v8hi  __attribute__((vector_size(16)));

/* Synonyms */
#define _vaddaw    __builtin_arc_vaddaw         
#define _vaddw     __builtin_arc_vaddw          
#define _vavb      __builtin_arc_vavb           
#define _vavrb     __builtin_arc_vavrb          
#define _vdifaw    __builtin_arc_vdifaw         
#define _vdifw     __builtin_arc_vdifw          
#define _vmaxaw    __builtin_arc_vmaxaw         
#define _vmaxw     __builtin_arc_vmaxw          
#define _vminaw    __builtin_arc_vminaw         
#define _vminw     __builtin_arc_vminw          
#define _vmulaw    __builtin_arc_vmulaw         
#define _vmulfaw   __builtin_arc_vmulfaw        
#define _vmulfw    __builtin_arc_vmulfw         
#define _vmulw     __builtin_arc_vmulw          
#define _vsubaw    __builtin_arc_vsubaw         
#define _vsubw     __builtin_arc_vsubw          
#define _vsummw    __builtin_arc_vsummw         
#define _vand      __builtin_arc_vand           
#define _vandaw    __builtin_arc_vandaw         
#define _vbic      __builtin_arc_vbic           
#define _vbicaw    __builtin_arc_vbicaw         
#define _vor       __builtin_arc_vor            
#define _vxor      __builtin_arc_vxor           
#define _vxoraw    __builtin_arc_vxoraw         
#define _veqw      __builtin_arc_veqw           
#define _vlew      __builtin_arc_vlew           
#define _vltw      __builtin_arc_vltw           
#define _vnew      __builtin_arc_vnew           
#define _vmr1aw    __builtin_arc_vmr1aw         
#define _vmr1w     __builtin_arc_vmr1w          
#define _vmr2aw    __builtin_arc_vmr2aw         
#define _vmr2w     __builtin_arc_vmr2w          
#define _vmr3aw    __builtin_arc_vmr3aw         
#define _vmr3w     __builtin_arc_vmr3w          
#define _vmr4aw    __builtin_arc_vmr4aw         
#define _vmr4w     __builtin_arc_vmr4w          
#define _vmr5aw    __builtin_arc_vmr5aw         
#define _vmr5w     __builtin_arc_vmr5w          
#define _vmr6aw    __builtin_arc_vmr6aw         
#define _vmr6w     __builtin_arc_vmr6w          
#define _vmr7aw    __builtin_arc_vmr7aw         
#define _vmr7w     __builtin_arc_vmr7w          
#define _vmrb      __builtin_arc_vmrb           
#define _vh264f    __builtin_arc_vh264f         
#define _vh264ft   __builtin_arc_vh264ft        
#define _vh264fw   __builtin_arc_vh264fw        
#define _vvc1f     __builtin_arc_vvc1f          
#define _vvc1ft    __builtin_arc_vvc1ft         
#define _vbaddw    __builtin_arc_vbaddw         
#define _vbmaxw    __builtin_arc_vbmaxw         
#define _vbminw    __builtin_arc_vbminw         
#define _vbmulaw   __builtin_arc_vbmulaw        
#define _vbmulfw   __builtin_arc_vbmulfw        
#define _vbmulw    __builtin_arc_vbmulw         
#define _vbrsubw   __builtin_arc_vbrsubw        
#define _vbsubw    __builtin_arc_vbsubw         
#define _vasrw     __builtin_arc_vasrw          
#define _vsr8      __builtin_arc_vsr8           
#define _vsr8aw    __builtin_arc_vsr8aw         
#define _vasrrwi   __builtin_arc_vasrrwi        
#define _vasrsrwi  __builtin_arc_vasrsrwi       
#define _vasrwi    __builtin_arc_vasrwi         
#define _vasrpwbi  __builtin_arc_vasrpwbi       
#define _vasrrpwbi __builtin_arc_vasrrpwbi      
#define _vsr8awi   __builtin_arc_vsr8awi        
#define _vsr8i     __builtin_arc_vsr8i          
#define _vmvaw     __builtin_arc_vmvaw          
#define _vmvw      __builtin_arc_vmvw           
#define _vmvzw     __builtin_arc_vmvzw          
#define _vd6tapf   __builtin_arc_vd6tapf        
#define _vmovaw    __builtin_arc_vmovaw         
#define _vmovw     __builtin_arc_vmovw          
#define _vmovzw    __builtin_arc_vmovzw         
#define _vabsaw    __builtin_arc_vabsaw         
#define _vabsw     __builtin_arc_vabsw          
#define _vaddsuw   __builtin_arc_vaddsuw        
#define _vsignw    __builtin_arc_vsignw         
#define _vexch1    __builtin_arc_vexch1         
#define _vexch2    __builtin_arc_vexch2         
#define _vexch4    __builtin_arc_vexch4         
#define _vupbaw    __builtin_arc_vupbaw         
#define _vupbw     __builtin_arc_vupbw          
#define _vupsbaw   __builtin_arc_vupsbaw        
#define _vupsbw    __builtin_arc_vupsbw         
#define _vdirun    __builtin_arc_vdirun         
#define _vdorun    __builtin_arc_vdorun         
#define _vdiwr     __builtin_arc_vdiwr          
#define _vdowr     __builtin_arc_vdowr          
#define _vrec      __builtin_arc_vrec           
#define _vrun      __builtin_arc_vrun           
#define _vrecrun   __builtin_arc_vrecrun        
#define _vendrec   __builtin_arc_vendrec        
#define _vld32wh   __builtin_arc_vld32wh        
#define _vld32wl   __builtin_arc_vld32wl        
#define _vld64     __builtin_arc_vld64          
#define _vld32     __builtin_arc_vld32          
#define _vld64w    __builtin_arc_vld64w         
#define _vld128    __builtin_arc_vld128         
#define _vst128    __builtin_arc_vst128         
#define _vst64     __builtin_arc_vst64          
#define _vst16_n   __builtin_arc_vst16_n        
#define _vst32_n   __builtin_arc_vst32_n        
#define _vinti     __builtin_arc_vinti          

/* Additional synonyms to ease programming */
#define _setup_dma_in_channel_reg  _vdiwr
#define _setup_dma_out_channel_reg _vdowr

#endif /* _ARC_SIMD_H */
