Home | History | Annotate | Line # | Download | only in dev
sxreg.h revision 1.3.4.4
      1  1.3.4.2       tls /*	$NetBSD: sxreg.h,v 1.3.4.4 2017/12/03 11:36:43 jdolecek Exp $	*/
      2  1.3.4.2       tls 
      3  1.3.4.2       tls /*-
      4  1.3.4.2       tls  * Copyright (c) 2013 The NetBSD Foundation, Inc.
      5  1.3.4.2       tls  * All rights reserved.
      6  1.3.4.2       tls  *
      7  1.3.4.2       tls  * This code is derived from software contributed to The NetBSD Foundation
      8  1.3.4.2       tls  * by Michael Lorenz.
      9  1.3.4.2       tls  *
     10  1.3.4.2       tls  * Redistribution and use in source and binary forms, with or without
     11  1.3.4.2       tls  * modification, are permitted provided that the following conditions
     12  1.3.4.2       tls  * are met:
     13  1.3.4.2       tls  * 1. Redistributions of source code must retain the above copyright
     14  1.3.4.2       tls  *    notice, this list of conditions and the following disclaimer.
     15  1.3.4.2       tls  * 2. Redistributions in binary form must reproduce the above copyright
     16  1.3.4.2       tls  *    notice, this list of conditions and the following disclaimer in the
     17  1.3.4.2       tls  *    documentation and/or other materials provided with the distribution.
     18  1.3.4.2       tls  *
     19  1.3.4.2       tls  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     20  1.3.4.2       tls  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     21  1.3.4.2       tls  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     22  1.3.4.2       tls  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     23  1.3.4.2       tls  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     24  1.3.4.2       tls  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     25  1.3.4.2       tls  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     26  1.3.4.2       tls  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     27  1.3.4.2       tls  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     28  1.3.4.2       tls  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     29  1.3.4.2       tls  * POSSIBILITY OF SUCH DAMAGE.
     30  1.3.4.2       tls  */
     31  1.3.4.2       tls 
     32  1.3.4.2       tls /* register definitions for Sun's SX / SPAM rendering engine */
     33  1.3.4.2       tls 
     34  1.3.4.2       tls #ifndef SXREG_H
     35  1.3.4.2       tls #define SXREG_H
     36  1.3.4.2       tls 
     37  1.3.4.2       tls /* SX control registers */
     38  1.3.4.2       tls #define SX_CONTROL_STATUS	0x00000000
     39  1.3.4.2       tls #define SX_ERROR		0x00000004
     40  1.3.4.2       tls #define SX_PAGE_BOUND_LOWER	0x00000008
     41  1.3.4.2       tls #define SX_PAGE_BOUND_UPPER	0x0000000c
     42  1.3.4.2       tls #define SX_PLANEMASK		0x00000010
     43  1.3.4.2       tls #define SX_ROP_CONTROL		0x00000014	/* 8 bit ROP */
     44  1.3.4.2       tls #define SX_IQ_OVERFLOW_COUNTER	0x00000018
     45  1.3.4.2       tls #define SX_DIAGNOSTICS		0x0000001c
     46  1.3.4.2       tls #define SX_INSTRUCTIONS		0x00000020
     47  1.3.4.2       tls #define SX_ID			0x00000028
     48  1.3.4.2       tls #define SX_R0_INIT		0x0000002c
     49  1.3.4.2       tls #define SX_SOFTRESET		0x00000030
     50  1.3.4.2       tls /* write registers directly, only when processor is stopped */
     51  1.3.4.2       tls #define SX_DIRECT_R0		0x00000100
     52  1.3.4.2       tls #define SX_DIRECT_R1		0x00000104	/* and so on until R127 */
     53  1.3.4.2       tls /* write registers via pseudo instructions */
     54  1.3.4.2       tls #define SX_QUEUED_R0		0x00000300
     55  1.3.4.2       tls #define SX_QUEUED_R1		0x00000304	/* and so on until R127 */
     56  1.3.4.4  jdolecek #define SX_QUEUED(r)		(0x300 + ((r) << 2))
     57  1.3.4.2       tls 
     58  1.3.4.2       tls /* special purpose registers */
     59  1.3.4.2       tls #define R_ZERO	0
     60  1.3.4.2       tls #define R_SCAM	1
     61  1.3.4.2       tls #define R_MASK	2	/* bitmask for SX_STORE_SELECT */
     62  1.3.4.2       tls 
     63  1.3.4.2       tls /*
     64  1.3.4.2       tls  * registers are repeated at 0x1000 with certain parts read only
     65  1.3.4.3       tls  * ( like the PAGE_BOUND registers ) which userland has no business writing to
     66  1.3.4.2       tls  */
     67  1.3.4.2       tls 
     68  1.3.4.2       tls /* SX_CONTROL_STATUS */
     69  1.3.4.2       tls #define SX_EE1		0x00000001	/* illegal instruction */
     70  1.3.4.2       tls #define SX_EE2		0x00000002	/* page bound error */
     71  1.3.4.2       tls #define SX_EE3		0x00000004	/* illegal memory access */
     72  1.3.4.2       tls #define SX_EE4		0x00000008	/* illegal register access */
     73  1.3.4.2       tls #define SX_EE5		0x00000010	/* alignment violation */
     74  1.3.4.2       tls #define SX_EE6		0x00000020	/* illegal instruction queue write */
     75  1.3.4.2       tls #define SX_EI		0x00000080	/* interrupt on error */
     76  1.3.4.2       tls #define SX_PB		0x00001000	/* enable page bound checking */
     77  1.3.4.2       tls #define SX_WO		0x00002000	/* write occured ( by SX ) */
     78  1.3.4.2       tls #define SX_GO		0x00004000	/* start/stop the processor */
     79  1.3.4.2       tls #define SX_MT		0x00008000	/* instruction queue is empty */
     80  1.3.4.2       tls 
     81  1.3.4.2       tls /* SX_ERROR */
     82  1.3.4.2       tls #define SX_SE1		0x00000001	/* illegal instruction */
     83  1.3.4.2       tls #define SX_SE2		0x00000002	/* page bound error */
     84  1.3.4.2       tls #define SX_SE3		0x00000004	/* illegal memory access */
     85  1.3.4.2       tls #define SX_SE4		0x00000008	/* illegal register access */
     86  1.3.4.2       tls #define SX_SE5		0x00000010	/* alignment violation */
     87  1.3.4.2       tls #define SX_SE6		0x00000020	/* illegal instruction queue write */
     88  1.3.4.2       tls #define SX_SI		0x00000080	/* interrupt on error */
     89  1.3.4.2       tls 
     90  1.3.4.2       tls /* SX_ID */
     91  1.3.4.2       tls #define SX_ARCHITECTURE_MASK	0x000000ff
     92  1.3.4.2       tls #define SX_CHIP_REVISION	0x0000ff00
     93  1.3.4.2       tls 
     94  1.3.4.2       tls /* SX_DIAGNOSTICS */
     95  1.3.4.2       tls #define SX_IQ_FIFO_ACCESS	0x00000001	/* allow memory instructions
     96  1.3.4.2       tls 						 * in SX_INSTRUCTIONS */
     97  1.3.4.2       tls 
     98  1.3.4.2       tls /*
     99  1.3.4.2       tls  * memory referencing instructions are written to 0x800000000 + PA
    100  1.3.4.2       tls  * so we have to go through ASI 0x28 ( ASI_BYPASS + 8 )
    101  1.3.4.2       tls  */
    102  1.3.4.2       tls #define ASI_SX	0x28
    103  1.3.4.2       tls 
    104  1.3.4.2       tls /* load / store instructions */
    105  1.3.4.2       tls #define SX_STORE_COND	(0x4 << 19)	/* conditional write with mask */
    106  1.3.4.2       tls #define SX_STORE_CLAMP	(0x2 << 19)
    107  1.3.4.2       tls #define SX_STORE_MASK	(0x1 << 19)	/* apply plane mask */
    108  1.3.4.2       tls #define SX_STORE_SELECT	(0x8 << 19)	/* expand with plane reg dest[0]/dest[1] */
    109  1.3.4.2       tls #define SX_LOAD		(0xa << 19)
    110  1.3.4.2       tls #define SX_STORE	(0x0 << 19)
    111  1.3.4.2       tls 
    112  1.3.4.2       tls /* data type */
    113  1.3.4.2       tls #define SX_UBYTE_0	(0x00 << 14)
    114  1.3.4.2       tls #define SX_UBYTE_8	(0x01 << 14)
    115  1.3.4.2       tls #define SX_UBYTE_16	(0x02 << 14)
    116  1.3.4.2       tls #define SX_UBYTE_24	(0x03 << 14)
    117  1.3.4.2       tls #define SX_SBYTE_0	(0x04 << 14)
    118  1.3.4.2       tls #define SX_SBYTE_8	(0x05 << 14)
    119  1.3.4.2       tls #define SX_SBYTE_16	(0x06 << 14)
    120  1.3.4.2       tls #define SX_SBYTE_24	(0x07 << 14)
    121  1.3.4.2       tls #define SX_UQUAD_0	(0x08 << 14)
    122  1.3.4.2       tls #define SX_UQUAD_8	(0x09 << 14)
    123  1.3.4.2       tls #define SX_UQUAD_16	(0x0a << 14)
    124  1.3.4.2       tls #define SX_UQUAD_24	(0x0b << 14)
    125  1.3.4.2       tls #define SX_SQUAD_0	(0x0c << 14)
    126  1.3.4.2       tls #define SX_SQUAD_8	(0x0d << 14)
    127  1.3.4.2       tls #define SX_SQUAD_16	(0x0e << 14)
    128  1.3.4.2       tls #define SX_SQUAD_24	(0x0f << 14)
    129  1.3.4.2       tls #define SX_UCHAN_0	(0x10 << 14)
    130  1.3.4.2       tls #define SX_UCHAN_8	(0x11 << 14)
    131  1.3.4.2       tls #define SX_UCHAN_16	(0x12 << 14)
    132  1.3.4.2       tls #define SX_UCHAN_24	(0x13 << 14)
    133  1.3.4.2       tls #define SX_SCHAN_0	(0x14 << 14)
    134  1.3.4.2       tls #define SX_SCHAN_8	(0x15 << 14)
    135  1.3.4.2       tls #define SX_SCHAN_16	(0x16 << 14)
    136  1.3.4.2       tls #define SX_SCHAN_24	(0x17 << 14)
    137  1.3.4.2       tls #define SX_USHORT_0	(0x18 << 14)
    138  1.3.4.2       tls #define SX_USHORT_8	(0x19 << 14)
    139  1.3.4.2       tls #define SX_USHORT_16	(0x1a << 14)
    140  1.3.4.2       tls #define SX_SSHORT_0	(0x1c << 14)
    141  1.3.4.2       tls #define SX_SSHORT_8	(0x1d << 14)
    142  1.3.4.2       tls #define SX_SSHORT_16	(0x1e << 14)
    143  1.3.4.2       tls #define SX_LONG		(0x1b << 14)
    144  1.3.4.2       tls #define SX_PACKED	(0x1f << 14)
    145  1.3.4.2       tls 
    146  1.3.4.2       tls 
    147  1.3.4.2       tls #define SX_LD(dreg, cnt, o)  (0x80000000 | ((cnt) << 23) | SX_LOAD | \
    148  1.3.4.2       tls 				SX_LONG | (dreg << 7) | (o))
    149  1.3.4.2       tls #define SX_LDB(dreg, cnt, o) (0x80000000 | ((cnt) << 23) | SX_LOAD | \
    150  1.3.4.2       tls 				SX_UBYTE_0 | (dreg << 7) | (o))
    151  1.3.4.2       tls #define SX_LDP(dreg, cnt, o) (0x80000000 | ((cnt) << 23) | SX_LOAD | \
    152  1.3.4.2       tls 				SX_PACKED | (dreg << 7) | (o))
    153  1.3.4.3       tls #define SX_LDUQ0(dreg, cnt, o) (0x80000000 | ((cnt) << 23) | SX_LOAD | \
    154  1.3.4.3       tls 				SX_UQUAD_0 | (dreg << 7) | (o))
    155  1.3.4.3       tls #define SX_LDUQ8(dreg, cnt, o) (0x80000000 | ((cnt) << 23) | SX_LOAD | \
    156  1.3.4.3       tls 				SX_UQUAD_8 | (dreg << 7) | (o))
    157  1.3.4.3       tls #define SX_LDUQ16(dreg, cnt, o) (0x80000000 | ((cnt) << 23) | SX_LOAD | \
    158  1.3.4.3       tls 				SX_UQUAD_16 | (dreg << 7) | (o))
    159  1.3.4.3       tls #define SX_LDUQ24(dreg, cnt, o) (0x80000000 | ((cnt) << 23) | SX_LOAD | \
    160  1.3.4.3       tls 				SX_UQUAD_24 | (dreg << 7) | (o))
    161  1.3.4.4  jdolecek #define SX_LDUC0(dreg, cnt, o) (0x80000000 | ((cnt) << 23) | SX_LOAD | \
    162  1.3.4.4  jdolecek 				SX_UCHAN_0 | (dreg << 7) | (o))
    163  1.3.4.4  jdolecek #define SX_LDUC8(dreg, cnt, o) (0x80000000 | ((cnt) << 23) | SX_LOAD | \
    164  1.3.4.4  jdolecek 				SX_UCHAN_8 | (dreg << 7) | (o))
    165  1.3.4.4  jdolecek #define SX_LDUC16(dreg, cnt, o) (0x80000000 | ((cnt) << 23) | SX_LOAD | \
    166  1.3.4.4  jdolecek 				SX_UCHAN_16 | (dreg << 7) | (o))
    167  1.3.4.4  jdolecek #define SX_LDUC24(dreg, cnt, o) (0x80000000 | ((cnt) << 23) | SX_LOAD | \
    168  1.3.4.4  jdolecek 				SX_UCHAN_24 | (dreg << 7) | (o))
    169  1.3.4.2       tls #define SX_ST(sreg, cnt, o)  (0x80000000 | ((cnt) << 23) | SX_STORE | \
    170  1.3.4.2       tls 				SX_LONG | (sreg << 7) | (o))
    171  1.3.4.3       tls #define SX_STM(sreg, cnt, o)  (0x80000000 | ((cnt) << 23) | SX_STORE_MASK | \
    172  1.3.4.3       tls 				SX_LONG | (sreg << 7) | (o))
    173  1.3.4.2       tls #define SX_STB(sreg, cnt, o) (0x80000000 | ((cnt) << 23) | SX_STORE | \
    174  1.3.4.2       tls 				SX_UBYTE_0 | (sreg << 7) | (o))
    175  1.3.4.4  jdolecek #define SX_STBM(sreg, cnt, o) (0x80000000 | ((cnt) << 23) | SX_STORE_MASK | \
    176  1.3.4.4  jdolecek 				SX_UBYTE_0 | (sreg << 7) | (o))
    177  1.3.4.3       tls #define SX_STBC(sreg, cnt, o) (0x80000000 | ((cnt) << 23) | SX_STORE_CLAMP | \
    178  1.3.4.3       tls 				SX_UBYTE_0 | (sreg << 7) | (o))
    179  1.3.4.2       tls #define SX_STP(sreg, cnt, o) (0x80000000 | ((cnt) << 23) | SX_STORE | \
    180  1.3.4.2       tls 				SX_PACKED | (sreg << 7) | (o))
    181  1.3.4.2       tls #define SX_STS(sreg, cnt, o) (0x80000000 | ((cnt) << 23) | SX_STORE_SELECT \
    182  1.3.4.2       tls 				| SX_LONG | (sreg << 7) | (o))
    183  1.3.4.2       tls #define SX_STBS(reg, cnt, o) (0x80000000 | ((cnt) << 23) | SX_STORE_SELECT \
    184  1.3.4.2       tls 				| SX_UBYTE_0 | (reg << 7) | (o))
    185  1.3.4.3       tls #define SX_STUQ0(sreg, cnt, o) (0x80000000 | ((cnt) << 23) | SX_STORE | \
    186  1.3.4.3       tls 				SX_UQUAD_0 | (sreg << 7) | (o))
    187  1.3.4.3       tls #define SX_STUQ0C(sreg, cnt, o) (0x80000000 | ((cnt) << 23) | SX_STORE_CLAMP | \
    188  1.3.4.3       tls 				SX_UQUAD_0 | (sreg << 7) | (o))
    189  1.3.4.3       tls #define SX_STUQ8(sreg, cnt, o) (0x80000000 | ((cnt) << 23) | SX_STORE | \
    190  1.3.4.3       tls 				SX_UQUAD_8 | (sreg << 7) | (o))
    191  1.3.4.3       tls #define SX_STUQ16(sreg, cnt, o) (0x80000000 | ((cnt) << 23) | SX_STORE | \
    192  1.3.4.3       tls 				SX_UQUAD_16 | (sreg << 7) | (o))
    193  1.3.4.3       tls #define SX_STUQ24(sreg, cnt, o) (0x80000000 | ((cnt) << 23) | SX_STORE | \
    194  1.3.4.3       tls 				SX_UQUAD_24 | (sreg << 7) | (o))
    195  1.3.4.4  jdolecek #define SX_STUC0(sreg, cnt, o) (0x80000000 | ((cnt) << 23) | SX_STORE | \
    196  1.3.4.4  jdolecek 				SX_UCHAN_0 | (sreg << 7) | (o))
    197  1.3.4.4  jdolecek #define SX_STUC0C(sreg, cnt, o) (0x80000000 | ((cnt) << 23) | SX_STORE_CLAMP | \
    198  1.3.4.4  jdolecek 				SX_UCHAN_0 | (sreg << 7) | (o))
    199  1.3.4.4  jdolecek #define SX_STUC8(sreg, cnt, o) (0x80000000 | ((cnt) << 23) | SX_STORE | \
    200  1.3.4.4  jdolecek 				SX_UCHAN_8 | (sreg << 7) | (o))
    201  1.3.4.4  jdolecek #define SX_STUC16(sreg, cnt, o) (0x80000000 | ((cnt) << 23) | SX_STORE | \
    202  1.3.4.4  jdolecek 				SX_UCHAN_16 | (sreg << 7) | (o))
    203  1.3.4.4  jdolecek #define SX_STUC24(sreg, cnt, o) (0x80000000 | ((cnt) << 23) | SX_STORE | \
    204  1.3.4.4  jdolecek 				SX_UCHAN_24 | (sreg << 7) | (o))
    205  1.3.4.2       tls 
    206  1.3.4.3       tls /* ROP and SELECT instructions */
    207  1.3.4.2       tls #define SX_ROPB	(0x0 << 21)	/* mask bits apply to bytes */
    208  1.3.4.2       tls #define SX_ROPM	(0x1 << 21)	/* mask bits apply to each bit */
    209  1.3.4.2       tls #define SX_ROPL	(0x2 << 21)	/* mask bits apply per register */
    210  1.3.4.2       tls #define SX_SELB	(0x4 << 21)	/* byte select scalar */
    211  1.3.4.2       tls #define SX_SELV (0x6 << 21)	/* register select vector */
    212  1.3.4.2       tls #define SX_SELS (0x7 << 21)	/* register select scalar */
    213  1.3.4.2       tls 
    214  1.3.4.2       tls #define SX_ROP(sa, sb, d, cnt) (0x90000000 | ((cnt) << 24) | SX_ROPL | \
    215  1.3.4.2       tls 		((sa) << 14) | (sb) | ((d) << 7))
    216  1.3.4.3       tls #define SX_SELECT_S(sa, sb, d, cnt) (0x90000000 | ((cnt) << 24) | SX_SELS | \
    217  1.3.4.3       tls 		((sa) << 14) | (sb) | ((d) << 7))
    218  1.3.4.3       tls 
    219  1.3.4.3       tls /* multiply group */
    220  1.3.4.3       tls #define SX_M16X16SR0	(0x0 << 28)	/* 16bit multiply, no shift */
    221  1.3.4.3       tls #define SX_M16X16SR8	(0x1 << 28)	/* 16bit multiply, shift right 8 */
    222  1.3.4.3       tls #define SX_M16X16SR16	(0x2 << 28)	/* 16bit multiply, shift right 16 */
    223  1.3.4.3       tls #define SX_M32X16SR0	(0x4 << 28)	/* 32x16bit multiply, no shift */
    224  1.3.4.3       tls #define SX_M32X16SR8	(0x5 << 28)	/* 32x16bit multiply, shift right 8 */
    225  1.3.4.3       tls #define SX_M32X16SR16	(0x6 << 28)	/* 32x16bit multiply, shift right 16 */
    226  1.3.4.3       tls 
    227  1.3.4.3       tls #define SX_MULTIPLY	(0x0 << 21)	/* normal multiplication */
    228  1.3.4.3       tls #define SX_DOT		(0x1 << 21)	/* dot product of A and B */
    229  1.3.4.3       tls #define SX_SAXP		(0x2 << 21)	/* A * SCAM + B */
    230  1.3.4.3       tls 
    231  1.3.4.3       tls #define SX_ROUND	(0x1 << 23)	/* round results */
    232  1.3.4.3       tls 
    233  1.3.4.3       tls #define SX_MUL16X16(sa, sb, d, cnt) (SX_M16X16SR0 | ((cnt) << 24) | \
    234  1.3.4.3       tls 		SX_MULTIPLY | ((sa) << 14) | ((d) << 7) | (sb))
    235  1.3.4.3       tls #define SX_MUL16X16R(sa, sb, d, cnt) (SX_M16X16SR0 | ((cnt) << 24) | \
    236  1.3.4.3       tls 		SX_MULTIPLY | ((sa) << 14) | ((d) << 7) | (sb) | SX_ROUND)
    237  1.3.4.3       tls #define SX_MUL16X16SR8(sa, sb, d, cnt) (SX_M16X16SR8 | ((cnt) << 24) | \
    238  1.3.4.3       tls 		SX_MULTIPLY | ((sa) << 14) | ((d) << 7) | (sb))
    239  1.3.4.3       tls #define SX_MUL16X16SR8R(sa, sb, d, cnt) (SX_M16X16SR8 | ((cnt) << 24) | \
    240  1.3.4.3       tls 		SX_MULTIPLY | ((sa) << 14) | ((d) << 7) | (sb) | SX_ROUND)
    241  1.3.4.3       tls 
    242  1.3.4.3       tls #define SX_SAXP16X16(sa, sb, d, cnt) (SX_M16X16SR0 | ((cnt) << 24) | \
    243  1.3.4.3       tls 		SX_SAXP | ((sa) << 14) | ((d) << 7) | (sb))
    244  1.3.4.3       tls #define SX_SAXP16X16R(sa, sb, d, cnt) (SX_M16X16SR0 | ((cnt) << 24) | \
    245  1.3.4.3       tls 		SX_SAXP | ((sa) << 14) | ((d) << 7) | (sb) | SX_ROUND)
    246  1.3.4.3       tls #define SX_SAXP16X16SR8(sa, sb, d, cnt) (SX_M16X16SR8 | ((cnt) << 24) | \
    247  1.3.4.3       tls 		SX_SAXP | ((sa) << 14) | ((d) << 7) | (sb))
    248  1.3.4.3       tls #define SX_SAXP16X16SR8R(sa, sb, d, cnt) (SX_M16X16SR8 | ((cnt) << 24) | \
    249  1.3.4.3       tls 		SX_SAXP | ((sa) << 14) | ((d) << 7) | (sb) | SX_ROUND)
    250  1.3.4.3       tls 
    251  1.3.4.3       tls /* logic group */
    252  1.3.4.3       tls #define SX_AND_V	(0x0 << 21)	/* vector AND vector */
    253  1.3.4.3       tls #define SX_AND_S	(0x1 << 21)	/* vector AND scalar */
    254  1.3.4.3       tls #define SX_AND_I	(0x2 << 21)	/* vector AND immediate */
    255  1.3.4.3       tls #define SX_XOR_V	(0x3 << 21)	/* vector XOR vector */
    256  1.3.4.3       tls #define SX_XOR_S	(0x4 << 21)	/* vector XOR scalar */
    257  1.3.4.3       tls #define SX_XOR_I	(0x5 << 21)	/* vector XOR immediate */
    258  1.3.4.3       tls #define SX_OR_V		(0x6 << 21)	/* vector OR vector */
    259  1.3.4.3       tls #define SX_OR_S		(0x7 << 21)	/* vector OR scalar */
    260  1.3.4.3       tls /* immediates are 7bit sign extended to 32bit */
    261  1.3.4.3       tls 
    262  1.3.4.3       tls #define SX_ANDV(sa, sb, d, cnt) (0xb0000000 | ((cnt) << 24) | SX_AND_V | \
    263  1.3.4.3       tls 		((sa) << 14) | ((d) << 7) | (sb))
    264  1.3.4.3       tls #define SX_ANDS(sa, sb, d, cnt) (0xb0000000 | ((cnt) << 24) | SX_AND_S | \
    265  1.3.4.3       tls 		((sa) << 14) | ((d) << 7) | (sb))
    266  1.3.4.3       tls #define SX_ANDI(sa, sb, d, cnt) (0xb0000000 | ((cnt) << 24) | SX_AND_I | \
    267  1.3.4.3       tls 		((sa) << 14) | ((d) << 7) | (sb))
    268  1.3.4.3       tls #define SX_XORV(sa, sb, d, cnt) (0xb0000000 | ((cnt) << 24) | SX_XOR_V | \
    269  1.3.4.3       tls 		((sa) << 14) | ((d) << 7) | (sb))
    270  1.3.4.3       tls #define SX_XORS(sa, sb, d, cnt) (0xb0000000 | ((cnt) << 24) | SX_XOR_S | \
    271  1.3.4.3       tls 		((sa) << 14) | ((d) << 7) | (sb))
    272  1.3.4.3       tls #define SX_XORI(sa, sb, d, cnt) (0xb0000000 | ((cnt) << 24) | SX_XOR_I | \
    273  1.3.4.3       tls 		((sa) << 14) | ((d) << 7) | (sb))
    274  1.3.4.3       tls #define SX_ORV(sa, sb, d, cnt) (0xb0000000 | ((cnt) << 24) | SX_OR_V | \
    275  1.3.4.3       tls 		((sa) << 14) | ((d) << 7) | (sb))
    276  1.3.4.3       tls #define SX_ORS(sa, sb, d, cnt) (0xb0000000 | ((cnt) << 24) | SX_OR_S | \
    277  1.3.4.3       tls 		((sa) << 14) | ((d) << 7) | (sb))
    278  1.3.4.3       tls 
    279  1.3.4.3       tls /* arithmetic group */
    280  1.3.4.3       tls #define SX_ADD_V	(0x00 << 21)	/* vector + vector */
    281  1.3.4.3       tls #define SX_ADD_S	(0x01 << 21)	/* vector + scalar */
    282  1.3.4.3       tls #define SX_ADD_I	(0x02 << 21)	/* vector + immediate */
    283  1.3.4.3       tls #define SX_SUM		(0x03 << 21)	/* sum of vector and scalar */
    284  1.3.4.3       tls #define SX_SUB_V	(0x04 << 21)	/* vector - vector */
    285  1.3.4.3       tls #define SX_SUB_S	(0x05 << 21)	/* vector - scalar */
    286  1.3.4.3       tls #define SX_SUB_I	(0x06 << 21)	/* vector - immediate */
    287  1.3.4.3       tls #define SX_ABS		(0x07 << 21)	/* abs(sb) with sa=R0 */
    288  1.3.4.3       tls /* hardware does sa - sb for sb < 0 and sa + sb if sb > 0 */
    289  1.3.4.3       tls 
    290  1.3.4.3       tls #define SX_ADDV(sa, sb, d, cnt) (0xa0000000 | ((cnt) << 24) | SX_ADD_V | \
    291  1.3.4.3       tls 		((sa) << 14) | ((d) << 7) | (sb))
    292  1.3.4.3       tls 
    293  1.3.4.2       tls #endif /* SXREG_H */
    294