#ifndef RVL_SDK_GX_HARDWARE_CP_H
#define RVL_SDK_GX_HARDWARE_CP_H
#include "rvl/GX/GXTypes.h"

#include <common.h>

#ifdef __cplusplus
extern "C" {
#endif

/******************************************************************************
 *
 *
 * GX Command Processor (CP)
 *
 *
 *****************************************************************************/

/**
 * CP registers
 */
typedef enum {
    GX_CP_REG_MATRIXINDEXA = 0x30,
    GX_CP_REG_MATRIXINDEXB = 0x40,
    GX_CP_REG_VCD_LO = 0x50,
    GX_CP_REG_VCD_HI = 0x60,
    GX_CP_REG_VAT_GROUP0 = 0x70,
    GX_CP_REG_VAT_GROUP1 = 0x80,
    GX_CP_REG_VAT_GROUP2 = 0x90,
    GX_CP_REG_ARRAYBASE = 0xA0,
    GX_CP_REG_ARRAYSTRIDE = 0xB0,
} GX_CP_REG;

/******************************************************************************
 * CP register 0x30 - MatrixIndexA
 *****************************************************************************/
// TEX3 [2:7] (6)
/* start bit  */ #define GX_CP_MATRIXINDEXA_TEX3_B 2
/* end bit    */ #define GX_CP_MATRIXINDEXA_TEX3_E 7
/* bit size   */ #define GX_CP_MATRIXINDEXA_TEX3_SZ 6

/* raw mask   */ #define GX_CP_MATRIXINDEXA_TEX3_MASK (((1 << 6) - 1) << 31 - 7)
/* local mask */ #define GX_CP_MATRIXINDEXA_TEX3_LMASK ((1 << 6) - 1)
/* bit shift  */ #define GX_CP_MATRIXINDEXA_TEX3_SHIFT 24

/* get value  */ #define GX_CP_GET_MATRIXINDEXA_TEX3(reg) GX_BITGET((reg), 2, 6)
/* set value  */ #define GX_CP_SET_MATRIXINDEXA_TEX3(reg, x) ((reg) = GX_BITSET((reg), 2, 6, x))

// TEX2 [8:13] (6)
/* start bit  */ #define GX_CP_MATRIXINDEXA_TEX2_B 8
/* end bit    */ #define GX_CP_MATRIXINDEXA_TEX2_E 13
/* bit size   */ #define GX_CP_MATRIXINDEXA_TEX2_SZ 6

/* raw mask   */ #define GX_CP_MATRIXINDEXA_TEX2_MASK (((1 << 6) - 1) << 31 - 13)
/* local mask */ #define GX_CP_MATRIXINDEXA_TEX2_LMASK ((1 << 6) - 1)
/* bit shift  */ #define GX_CP_MATRIXINDEXA_TEX2_SHIFT 18

/* get value  */ #define GX_CP_GET_MATRIXINDEXA_TEX2(reg) GX_BITGET((reg), 8, 6)
/* set value  */ #define GX_CP_SET_MATRIXINDEXA_TEX2(reg, x) ((reg) = GX_BITSET((reg), 8, 6, x))

// TEX1 [14:19] (6)
/* start bit  */ #define GX_CP_MATRIXINDEXA_TEX1_B 14
/* end bit    */ #define GX_CP_MATRIXINDEXA_TEX1_E 19
/* bit size   */ #define GX_CP_MATRIXINDEXA_TEX1_SZ 6

/* raw mask   */ #define GX_CP_MATRIXINDEXA_TEX1_MASK (((1 << 6) - 1) << 31 - 19)
/* local mask */ #define GX_CP_MATRIXINDEXA_TEX1_LMASK ((1 << 6) - 1)
/* bit shift  */ #define GX_CP_MATRIXINDEXA_TEX1_SHIFT 12

/* get value  */ #define GX_CP_GET_MATRIXINDEXA_TEX1(reg) GX_BITGET((reg), 14, 6)
/* set value  */ #define GX_CP_SET_MATRIXINDEXA_TEX1(reg, x) ((reg) = GX_BITSET((reg), 14, 6, x))

// TEX0 [20:25] (6)
/* start bit  */ #define GX_CP_MATRIXINDEXA_TEX0_B 20
/* end bit    */ #define GX_CP_MATRIXINDEXA_TEX0_E 25
/* bit size   */ #define GX_CP_MATRIXINDEXA_TEX0_SZ 6

/* raw mask   */ #define GX_CP_MATRIXINDEXA_TEX0_MASK (((1 << 6) - 1) << 31 - 25)
/* local mask */ #define GX_CP_MATRIXINDEXA_TEX0_LMASK ((1 << 6) - 1)
/* bit shift  */ #define GX_CP_MATRIXINDEXA_TEX0_SHIFT 6

/* get value  */ #define GX_CP_GET_MATRIXINDEXA_TEX0(reg) GX_BITGET((reg), 20, 6)
/* set value  */ #define GX_CP_SET_MATRIXINDEXA_TEX0(reg, x) ((reg) = GX_BITSET((reg), 20, 6, x))

// POSNRM [26:31] (6)
/* start bit  */ #define GX_CP_MATRIXINDEXA_POSNRM_B 26
/* end bit    */ #define GX_CP_MATRIXINDEXA_POSNRM_E 31
/* bit size   */ #define GX_CP_MATRIXINDEXA_POSNRM_SZ 6

/* raw mask   */ #define GX_CP_MATRIXINDEXA_POSNRM_MASK (((1 << 6) - 1) << 31 - 31)
/* local mask */ #define GX_CP_MATRIXINDEXA_POSNRM_LMASK ((1 << 6) - 1)
/* bit shift  */ #define GX_CP_MATRIXINDEXA_POSNRM_SHIFT 0

/* get value  */ #define GX_CP_GET_MATRIXINDEXA_POSNRM(reg) GX_BITGET((reg), 26, 6)
/* set value  */ #define GX_CP_SET_MATRIXINDEXA_POSNRM(reg, x) ((reg) = GX_BITSET((reg), 26, 6, x))

/******************************************************************************
 * CP register 0x40 - MatrixIndexB
 *****************************************************************************/
// TEX7 [8:13] (6)
/* start bit  */ #define GX_CP_MATRIXINDEXB_TEX7_B 8
/* end bit    */ #define GX_CP_MATRIXINDEXB_TEX7_E 13
/* bit size   */ #define GX_CP_MATRIXINDEXB_TEX7_SZ 6

/* raw mask   */ #define GX_CP_MATRIXINDEXB_TEX7_MASK (((1 << 6) - 1) << 31 - 13)
/* local mask */ #define GX_CP_MATRIXINDEXB_TEX7_LMASK ((1 << 6) - 1)
/* bit shift  */ #define GX_CP_MATRIXINDEXB_TEX7_SHIFT 18

/* get value  */ #define GX_CP_GET_MATRIXINDEXB_TEX7(reg) GX_BITGET((reg), 8, 6)
/* set value  */ #define GX_CP_SET_MATRIXINDEXB_TEX7(reg, x) ((reg) = GX_BITSET((reg), 8, 6, x))

// TEX6 [14:19] (6)
/* start bit  */ #define GX_CP_MATRIXINDEXB_TEX6_B 14
/* end bit    */ #define GX_CP_MATRIXINDEXB_TEX6_E 19
/* bit size   */ #define GX_CP_MATRIXINDEXB_TEX6_SZ 6

/* raw mask   */ #define GX_CP_MATRIXINDEXB_TEX6_MASK (((1 << 6) - 1) << 31 - 19)
/* local mask */ #define GX_CP_MATRIXINDEXB_TEX6_LMASK ((1 << 6) - 1)
/* bit shift  */ #define GX_CP_MATRIXINDEXB_TEX6_SHIFT 12

/* get value  */ #define GX_CP_GET_MATRIXINDEXB_TEX6(reg) GX_BITGET((reg), 14, 6)
/* set value  */ #define GX_CP_SET_MATRIXINDEXB_TEX6(reg, x) ((reg) = GX_BITSET((reg), 14, 6, x))

// TEX5 [20:25] (6)
/* start bit  */ #define GX_CP_MATRIXINDEXB_TEX5_B 20
/* end bit    */ #define GX_CP_MATRIXINDEXB_TEX5_E 25
/* bit size   */ #define GX_CP_MATRIXINDEXB_TEX5_SZ 6

/* raw mask   */ #define GX_CP_MATRIXINDEXB_TEX5_MASK (((1 << 6) - 1) << 31 - 25)
/* local mask */ #define GX_CP_MATRIXINDEXB_TEX5_LMASK ((1 << 6) - 1)
/* bit shift  */ #define GX_CP_MATRIXINDEXB_TEX5_SHIFT 6

/* get value  */ #define GX_CP_GET_MATRIXINDEXB_TEX5(reg) GX_BITGET((reg), 20, 6)
/* set value  */ #define GX_CP_SET_MATRIXINDEXB_TEX5(reg, x) ((reg) = GX_BITSET((reg), 20, 6, x))

// TEX4 [26:31] (6)
/* start bit  */ #define GX_CP_MATRIXINDEXB_TEX4_B 26
/* end bit    */ #define GX_CP_MATRIXINDEXB_TEX4_E 31
/* bit size   */ #define GX_CP_MATRIXINDEXB_TEX4_SZ 6

/* raw mask   */ #define GX_CP_MATRIXINDEXB_TEX4_MASK (((1 << 6) - 1) << 31 - 31)
/* local mask */ #define GX_CP_MATRIXINDEXB_TEX4_LMASK ((1 << 6) - 1)
/* bit shift  */ #define GX_CP_MATRIXINDEXB_TEX4_SHIFT 0

/* get value  */ #define GX_CP_GET_MATRIXINDEXB_TEX4(reg) GX_BITGET((reg), 26, 6)
/* set value  */ #define GX_CP_SET_MATRIXINDEXB_TEX4(reg, x) ((reg) = GX_BITSET((reg), 26, 6, x))

/******************************************************************************
 * CP register 0x50 - VCD_Lo
 *****************************************************************************/
// POSMATIDX [31:31] (1)
/* start bit  */ #define GX_CP_VCD_LO_POSMATIDX_B 31
/* end bit    */ #define GX_CP_VCD_LO_POSMATIDX_E 31
/* bit size   */ #define GX_CP_VCD_LO_POSMATIDX_SZ 1

/* raw mask   */ #define GX_CP_VCD_LO_POSMATIDX_MASK (((1 << 1) - 1) << 31 - 31)
/* local mask */ #define GX_CP_VCD_LO_POSMATIDX_LMASK ((1 << 1) - 1)
/* bit shift  */ #define GX_CP_VCD_LO_POSMATIDX_SHIFT 0

/* get value  */ #define GX_CP_GET_VCD_LO_POSMATIDX(reg) GX_BITGET((reg), 31, 1)
/* set value  */ #define GX_CP_SET_VCD_LO_POSMATIDX(reg, x) ((reg) = GX_BITSET((reg), 31, 1, x))

// TEX0MATIDX [30:30] (1)
/* start bit  */ #define GX_CP_VCD_LO_TEX0MATIDX_B 30
/* end bit    */ #define GX_CP_VCD_LO_TEX0MATIDX_E 30
/* bit size   */ #define GX_CP_VCD_LO_TEX0MATIDX_SZ 1

/* raw mask   */ #define GX_CP_VCD_LO_TEX0MATIDX_MASK (((1 << 1) - 1) << 31 - 30)
/* local mask */ #define GX_CP_VCD_LO_TEX0MATIDX_LMASK ((1 << 1) - 1)
/* bit shift  */ #define GX_CP_VCD_LO_TEX0MATIDX_SHIFT 1

/* get value  */ #define GX_CP_GET_VCD_LO_TEX0MATIDX(reg) GX_BITGET((reg), 30, 1)
/* set value  */ #define GX_CP_SET_VCD_LO_TEX0MATIDX(reg, x) ((reg) = GX_BITSET((reg), 30, 1, x))

// TEX1MATIDX [29:29] (1)
/* start bit  */ #define GX_CP_VCD_LO_TEX1MATIDX_B 29
/* end bit    */ #define GX_CP_VCD_LO_TEX1MATIDX_E 29
/* bit size   */ #define GX_CP_VCD_LO_TEX1MATIDX_SZ 1

/* raw mask   */ #define GX_CP_VCD_LO_TEX1MATIDX_MASK (((1 << 1) - 1) << 31 - 29)
/* local mask */ #define GX_CP_VCD_LO_TEX1MATIDX_LMASK ((1 << 1) - 1)
/* bit shift  */ #define GX_CP_VCD_LO_TEX1MATIDX_SHIFT 2

/* get value  */ #define GX_CP_GET_VCD_LO_TEX1MATIDX(reg) GX_BITGET((reg), 29, 1)
/* set value  */ #define GX_CP_SET_VCD_LO_TEX1MATIDX(reg, x) ((reg) = GX_BITSET((reg), 29, 1, x))

// TEX2MATIDX [28:28] (1)
/* start bit  */ #define GX_CP_VCD_LO_TEX2MATIDX_B 28
/* end bit    */ #define GX_CP_VCD_LO_TEX2MATIDX_E 28
/* bit size   */ #define GX_CP_VCD_LO_TEX2MATIDX_SZ 1

/* raw mask   */ #define GX_CP_VCD_LO_TEX2MATIDX_MASK (((1 << 1) - 1) << 31 - 28)
/* local mask */ #define GX_CP_VCD_LO_TEX2MATIDX_LMASK ((1 << 1) - 1)
/* bit shift  */ #define GX_CP_VCD_LO_TEX2MATIDX_SHIFT 3

/* get value  */ #define GX_CP_GET_VCD_LO_TEX2MATIDX(reg) GX_BITGET((reg), 28, 1)
/* set value  */ #define GX_CP_SET_VCD_LO_TEX2MATIDX(reg, x) ((reg) = GX_BITSET((reg), 28, 1, x))

// TEX3MATIDX [27:27] (1)
/* start bit  */ #define GX_CP_VCD_LO_TEX3MATIDX_B 27
/* end bit    */ #define GX_CP_VCD_LO_TEX3MATIDX_E 27
/* bit size   */ #define GX_CP_VCD_LO_TEX3MATIDX_SZ 1

/* raw mask   */ #define GX_CP_VCD_LO_TEX3MATIDX_MASK (((1 << 1) - 1) << 31 - 27)
/* local mask */ #define GX_CP_VCD_LO_TEX3MATIDX_LMASK ((1 << 1) - 1)
/* bit shift  */ #define GX_CP_VCD_LO_TEX3MATIDX_SHIFT 4

/* get value  */ #define GX_CP_GET_VCD_LO_TEX3MATIDX(reg) GX_BITGET((reg), 27, 1)
/* set value  */ #define GX_CP_SET_VCD_LO_TEX3MATIDX(reg, x) ((reg) = GX_BITSET((reg), 27, 1, x))

// TEX4MATIDX [26:26] (1)
/* start bit  */ #define GX_CP_VCD_LO_TEX4MATIDX_B 26
/* end bit    */ #define GX_CP_VCD_LO_TEX4MATIDX_E 26
/* bit size   */ #define GX_CP_VCD_LO_TEX4MATIDX_SZ 1

/* raw mask   */ #define GX_CP_VCD_LO_TEX4MATIDX_MASK (((1 << 1) - 1) << 31 - 26)
/* local mask */ #define GX_CP_VCD_LO_TEX4MATIDX_LMASK ((1 << 1) - 1)
/* bit shift  */ #define GX_CP_VCD_LO_TEX4MATIDX_SHIFT 5

/* get value  */ #define GX_CP_GET_VCD_LO_TEX4MATIDX(reg) GX_BITGET((reg), 26, 1)
/* set value  */ #define GX_CP_SET_VCD_LO_TEX4MATIDX(reg, x) ((reg) = GX_BITSET((reg), 26, 1, x))

// TEX5MATIDX [25:25] (1)
/* start bit  */ #define GX_CP_VCD_LO_TEX5MATIDX_B 25
/* end bit    */ #define GX_CP_VCD_LO_TEX5MATIDX_E 25
/* bit size   */ #define GX_CP_VCD_LO_TEX5MATIDX_SZ 1

/* raw mask   */ #define GX_CP_VCD_LO_TEX5MATIDX_MASK (((1 << 1) - 1) << 31 - 25)
/* local mask */ #define GX_CP_VCD_LO_TEX5MATIDX_LMASK ((1 << 1) - 1)
/* bit shift  */ #define GX_CP_VCD_LO_TEX5MATIDX_SHIFT 6

/* get value  */ #define GX_CP_GET_VCD_LO_TEX5MATIDX(reg) GX_BITGET((reg), 25, 1)
/* set value  */ #define GX_CP_SET_VCD_LO_TEX5MATIDX(reg, x) ((reg) = GX_BITSET((reg), 25, 1, x))

// TEX6MATIDX [24:24] (1)
/* start bit  */ #define GX_CP_VCD_LO_TEX6MATIDX_B 24
/* end bit    */ #define GX_CP_VCD_LO_TEX6MATIDX_E 24
/* bit size   */ #define GX_CP_VCD_LO_TEX6MATIDX_SZ 1

/* raw mask   */ #define GX_CP_VCD_LO_TEX6MATIDX_MASK (((1 << 1) - 1) << 31 - 24)
/* local mask */ #define GX_CP_VCD_LO_TEX6MATIDX_LMASK ((1 << 1) - 1)
/* bit shift  */ #define GX_CP_VCD_LO_TEX6MATIDX_SHIFT 7

/* get value  */ #define GX_CP_GET_VCD_LO_TEX6MATIDX(reg) GX_BITGET((reg), 24, 1)
/* set value  */ #define GX_CP_SET_VCD_LO_TEX6MATIDX(reg, x) ((reg) = GX_BITSET((reg), 24, 1, x))

// TEX7MATIDX [23:23] (1)
/* start bit  */ #define GX_CP_VCD_LO_TEX7MATIDX_B 23
/* end bit    */ #define GX_CP_VCD_LO_TEX7MATIDX_E 23
/* bit size   */ #define GX_CP_VCD_LO_TEX7MATIDX_SZ 1

/* raw mask   */ #define GX_CP_VCD_LO_TEX7MATIDX_MASK (((1 << 1) - 1) << 31 - 23)
/* local mask */ #define GX_CP_VCD_LO_TEX7MATIDX_LMASK ((1 << 1) - 1)
/* bit shift  */ #define GX_CP_VCD_LO_TEX7MATIDX_SHIFT 8

/* get value  */ #define GX_CP_GET_VCD_LO_TEX7MATIDX(reg) GX_BITGET((reg), 23, 1)
/* set value  */ #define GX_CP_SET_VCD_LO_TEX7MATIDX(reg, x) ((reg) = GX_BITSET((reg), 23, 1, x))

// POSITION [21:22] (2)
/* start bit  */ #define GX_CP_VCD_LO_POSITION_B 21
/* end bit    */ #define GX_CP_VCD_LO_POSITION_E 22
/* bit size   */ #define GX_CP_VCD_LO_POSITION_SZ 2

/* raw mask   */ #define GX_CP_VCD_LO_POSITION_MASK (((1 << 2) - 1) << 31 - 22)
/* local mask */ #define GX_CP_VCD_LO_POSITION_LMASK ((1 << 2) - 1)
/* bit shift  */ #define GX_CP_VCD_LO_POSITION_SHIFT 9

/* get value  */ #define GX_CP_GET_VCD_LO_POSITION(reg) GX_BITGET((reg), 21, 2)
/* set value  */ #define GX_CP_SET_VCD_LO_POSITION(reg, x) ((reg) = GX_BITSET((reg), 21, 2, x))

// NORMAL [19:20] (2)
/* start bit  */ #define GX_CP_VCD_LO_NORMAL_B 19
/* end bit    */ #define GX_CP_VCD_LO_NORMAL_E 20
/* bit size   */ #define GX_CP_VCD_LO_NORMAL_SZ 2

/* raw mask   */ #define GX_CP_VCD_LO_NORMAL_MASK (((1 << 2) - 1) << 31 - 20)
/* local mask */ #define GX_CP_VCD_LO_NORMAL_LMASK ((1 << 2) - 1)
/* bit shift  */ #define GX_CP_VCD_LO_NORMAL_SHIFT 11

/* get value  */ #define GX_CP_GET_VCD_LO_NORMAL(reg) GX_BITGET((reg), 19, 2)
/* set value  */ #define GX_CP_SET_VCD_LO_NORMAL(reg, x) ((reg) = GX_BITSET((reg), 19, 2, x))

// COLORDIFFUSED [17:18] (2)
/* start bit  */ #define GX_CP_VCD_LO_COLORDIFFUSED_B 17
/* end bit    */ #define GX_CP_VCD_LO_COLORDIFFUSED_E 18
/* bit size   */ #define GX_CP_VCD_LO_COLORDIFFUSED_SZ 2

/* raw mask   */ #define GX_CP_VCD_LO_COLORDIFFUSED_MASK (((1 << 2) - 1) << 31 - 18)
/* local mask */ #define GX_CP_VCD_LO_COLORDIFFUSED_LMASK ((1 << 2) - 1)
/* bit shift  */ #define GX_CP_VCD_LO_COLORDIFFUSED_SHIFT 13

/* get value  */ #define GX_CP_GET_VCD_LO_COLORDIFFUSED(reg) GX_BITGET((reg), 17, 2)
/* set value  */ #define GX_CP_SET_VCD_LO_COLORDIFFUSED(reg, x) ((reg) = GX_BITSET((reg), 17, 2, x))

// COLORSPECULAR [15:16] (2)
/* start bit  */ #define GX_CP_VCD_LO_COLORSPECULAR_B 15
/* end bit    */ #define GX_CP_VCD_LO_COLORSPECULAR_E 16
/* bit size   */ #define GX_CP_VCD_LO_COLORSPECULAR_SZ 2

/* raw mask   */ #define GX_CP_VCD_LO_COLORSPECULAR_MASK (((1 << 2) - 1) << 31 - 16)
/* local mask */ #define GX_CP_VCD_LO_COLORSPECULAR_LMASK ((1 << 2) - 1)
/* bit shift  */ #define GX_CP_VCD_LO_COLORSPECULAR_SHIFT 15

/* get value  */ #define GX_CP_GET_VCD_LO_COLORSPECULAR(reg) GX_BITGET((reg), 15, 2)
/* set value  */ #define GX_CP_SET_VCD_LO_COLORSPECULAR(reg, x) ((reg) = GX_BITSET((reg), 15, 2, x))

/******************************************************************************
 * CP register 0x60 - VCD_Hi
 *****************************************************************************/
// TEX0COORD [30:31] (2)
/* start bit  */ #define GX_CP_VCD_HI_TEX0COORD_B 30
/* end bit    */ #define GX_CP_VCD_HI_TEX0COORD_E 31
/* bit size   */ #define GX_CP_VCD_HI_TEX0COORD_SZ 2

/* raw mask   */ #define GX_CP_VCD_HI_TEX0COORD_MASK (((1 << 2) - 1) << 31 - 31)
/* local mask */ #define GX_CP_VCD_HI_TEX0COORD_LMASK ((1 << 2) - 1)
/* bit shift  */ #define GX_CP_VCD_HI_TEX0COORD_SHIFT 0

/* get value  */ #define GX_CP_GET_VCD_HI_TEX0COORD(reg) GX_BITGET((reg), 30, 2)
/* set value  */ #define GX_CP_SET_VCD_HI_TEX0COORD(reg, x) ((reg) = GX_BITSET((reg), 30, 2, x))

// TEX1COORD [28:29] (2)
/* start bit  */ #define GX_CP_VCD_HI_TEX1COORD_B 28
/* end bit    */ #define GX_CP_VCD_HI_TEX1COORD_E 29
/* bit size   */ #define GX_CP_VCD_HI_TEX1COORD_SZ 2

/* raw mask   */ #define GX_CP_VCD_HI_TEX1COORD_MASK (((1 << 2) - 1) << 31 - 29)
/* local mask */ #define GX_CP_VCD_HI_TEX1COORD_LMASK ((1 << 2) - 1)
/* bit shift  */ #define GX_CP_VCD_HI_TEX1COORD_SHIFT 2

/* get value  */ #define GX_CP_GET_VCD_HI_TEX1COORD(reg) GX_BITGET((reg), 28, 2)
/* set value  */ #define GX_CP_SET_VCD_HI_TEX1COORD(reg, x) ((reg) = GX_BITSET((reg), 28, 2, x))

// TEX2COORD [26:27] (2)
/* start bit  */ #define GX_CP_VCD_HI_TEX2COORD_B 26
/* end bit    */ #define GX_CP_VCD_HI_TEX2COORD_E 27
/* bit size   */ #define GX_CP_VCD_HI_TEX2COORD_SZ 2

/* raw mask   */ #define GX_CP_VCD_HI_TEX2COORD_MASK (((1 << 2) - 1) << 31 - 27)
/* local mask */ #define GX_CP_VCD_HI_TEX2COORD_LMASK ((1 << 2) - 1)
/* bit shift  */ #define GX_CP_VCD_HI_TEX2COORD_SHIFT 4

/* get value  */ #define GX_CP_GET_VCD_HI_TEX2COORD(reg) GX_BITGET((reg), 26, 2)
/* set value  */ #define GX_CP_SET_VCD_HI_TEX2COORD(reg, x) ((reg) = GX_BITSET((reg), 26, 2, x))

// TEX3COORD [24:25] (2)
/* start bit  */ #define GX_CP_VCD_HI_TEX3COORD_B 24
/* end bit    */ #define GX_CP_VCD_HI_TEX3COORD_E 25
/* bit size   */ #define GX_CP_VCD_HI_TEX3COORD_SZ 2

/* raw mask   */ #define GX_CP_VCD_HI_TEX3COORD_MASK (((1 << 2) - 1) << 31 - 25)
/* local mask */ #define GX_CP_VCD_HI_TEX3COORD_LMASK ((1 << 2) - 1)
/* bit shift  */ #define GX_CP_VCD_HI_TEX3COORD_SHIFT 6

/* get value  */ #define GX_CP_GET_VCD_HI_TEX3COORD(reg) GX_BITGET((reg), 24, 2)
/* set value  */ #define GX_CP_SET_VCD_HI_TEX3COORD(reg, x) ((reg) = GX_BITSET((reg), 24, 2, x))

// TEX4COORD [22:23] (2)
/* start bit  */ #define GX_CP_VCD_HI_TEX4COORD_B 22
/* end bit    */ #define GX_CP_VCD_HI_TEX4COORD_E 23
/* bit size   */ #define GX_CP_VCD_HI_TEX4COORD_SZ 2

/* raw mask   */ #define GX_CP_VCD_HI_TEX4COORD_MASK (((1 << 2) - 1) << 31 - 23)
/* local mask */ #define GX_CP_VCD_HI_TEX4COORD_LMASK ((1 << 2) - 1)
/* bit shift  */ #define GX_CP_VCD_HI_TEX4COORD_SHIFT 8

/* get value  */ #define GX_CP_GET_VCD_HI_TEX4COORD(reg) GX_BITGET((reg), 22, 2)
/* set value  */ #define GX_CP_SET_VCD_HI_TEX4COORD(reg, x) ((reg) = GX_BITSET((reg), 22, 2, x))

// TEX5COORD [20:21] (2)
/* start bit  */ #define GX_CP_VCD_HI_TEX5COORD_B 20
/* end bit    */ #define GX_CP_VCD_HI_TEX5COORD_E 21
/* bit size   */ #define GX_CP_VCD_HI_TEX5COORD_SZ 2

/* raw mask   */ #define GX_CP_VCD_HI_TEX5COORD_MASK (((1 << 2) - 1) << 31 - 21)
/* local mask */ #define GX_CP_VCD_HI_TEX5COORD_LMASK ((1 << 2) - 1)
/* bit shift  */ #define GX_CP_VCD_HI_TEX5COORD_SHIFT 10

/* get value  */ #define GX_CP_GET_VCD_HI_TEX5COORD(reg) GX_BITGET((reg), 20, 2)
/* set value  */ #define GX_CP_SET_VCD_HI_TEX5COORD(reg, x) ((reg) = GX_BITSET((reg), 20, 2, x))

// TEX6COORD [18:19] (2)
/* start bit  */ #define GX_CP_VCD_HI_TEX6COORD_B 18
/* end bit    */ #define GX_CP_VCD_HI_TEX6COORD_E 19
/* bit size   */ #define GX_CP_VCD_HI_TEX6COORD_SZ 2

/* raw mask   */ #define GX_CP_VCD_HI_TEX6COORD_MASK (((1 << 2) - 1) << 31 - 19)
/* local mask */ #define GX_CP_VCD_HI_TEX6COORD_LMASK ((1 << 2) - 1)
/* bit shift  */ #define GX_CP_VCD_HI_TEX6COORD_SHIFT 12

/* get value  */ #define GX_CP_GET_VCD_HI_TEX6COORD(reg) GX_BITGET((reg), 18, 2)
/* set value  */ #define GX_CP_SET_VCD_HI_TEX6COORD(reg, x) ((reg) = GX_BITSET((reg), 18, 2, x))

// TEX7COORD [16:17] (2)
/* start bit  */ #define GX_CP_VCD_HI_TEX7COORD_B 16
/* end bit    */ #define GX_CP_VCD_HI_TEX7COORD_E 17
/* bit size   */ #define GX_CP_VCD_HI_TEX7COORD_SZ 2

/* raw mask   */ #define GX_CP_VCD_HI_TEX7COORD_MASK (((1 << 2) - 1) << 31 - 17)
/* local mask */ #define GX_CP_VCD_HI_TEX7COORD_LMASK ((1 << 2) - 1)
/* bit shift  */ #define GX_CP_VCD_HI_TEX7COORD_SHIFT 14

/* get value  */ #define GX_CP_GET_VCD_HI_TEX7COORD(reg) GX_BITGET((reg), 16, 2)
/* set value  */ #define GX_CP_SET_VCD_HI_TEX7COORD(reg, x) ((reg) = GX_BITSET((reg), 16, 2, x))

/******************************************************************************
 * CP register 0x70 - VAT_group0
 *****************************************************************************/
// POS_CNT [31:31] (1)
/* start bit  */ #define GX_CP_VAT_GROUP0_POS_CNT_B 31
/* end bit    */ #define GX_CP_VAT_GROUP0_POS_CNT_E 31
/* bit size   */ #define GX_CP_VAT_GROUP0_POS_CNT_SZ 1

/* raw mask   */ #define GX_CP_VAT_GROUP0_POS_CNT_MASK (((1 << 1) - 1) << 31 - 31)
/* local mask */ #define GX_CP_VAT_GROUP0_POS_CNT_LMASK ((1 << 1) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP0_POS_CNT_SHIFT 0

/* get value  */ #define GX_CP_GET_VAT_GROUP0_POS_CNT(reg) GX_BITGET((reg), 31, 1)
/* set value  */ #define GX_CP_SET_VAT_GROUP0_POS_CNT(reg, x) ((reg) = GX_BITSET((reg), 31, 1, x))

// POS_TYPE [28:30] (3)
/* start bit  */ #define GX_CP_VAT_GROUP0_POS_TYPE_B 28
/* end bit    */ #define GX_CP_VAT_GROUP0_POS_TYPE_E 30
/* bit size   */ #define GX_CP_VAT_GROUP0_POS_TYPE_SZ 3

/* raw mask   */ #define GX_CP_VAT_GROUP0_POS_TYPE_MASK (((1 << 3) - 1) << 31 - 30)
/* local mask */ #define GX_CP_VAT_GROUP0_POS_TYPE_LMASK ((1 << 3) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP0_POS_TYPE_SHIFT 1

/* get value  */ #define GX_CP_GET_VAT_GROUP0_POS_TYPE(reg) GX_BITGET((reg), 28, 3)
/* set value  */ #define GX_CP_SET_VAT_GROUP0_POS_TYPE(reg, x) ((reg) = GX_BITSET((reg), 28, 3, x))

// POS_SHIFT [23:27] (5)
/* start bit  */ #define GX_CP_VAT_GROUP0_POS_SHIFT_B 23
/* end bit    */ #define GX_CP_VAT_GROUP0_POS_SHIFT_E 27
/* bit size   */ #define GX_CP_VAT_GROUP0_POS_SHIFT_SZ 5

/* raw mask   */ #define GX_CP_VAT_GROUP0_POS_SHIFT_MASK (((1 << 5) - 1) << 31 - 27)
/* local mask */ #define GX_CP_VAT_GROUP0_POS_SHIFT_LMASK ((1 << 5) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP0_POS_SHIFT_SHIFT 4

/* get value  */ #define GX_CP_GET_VAT_GROUP0_POS_SHIFT(reg) GX_BITGET((reg), 23, 5)
/* set value  */ #define GX_CP_SET_VAT_GROUP0_POS_SHIFT(reg, x) ((reg) = GX_BITSET((reg), 23, 5, x))

// NRM_CNT [22:22] (1)
/* start bit  */ #define GX_CP_VAT_GROUP0_NRM_CNT_B 22
/* end bit    */ #define GX_CP_VAT_GROUP0_NRM_CNT_E 22
/* bit size   */ #define GX_CP_VAT_GROUP0_NRM_CNT_SZ 1

/* raw mask   */ #define GX_CP_VAT_GROUP0_NRM_CNT_MASK (((1 << 1) - 1) << 31 - 22)
/* local mask */ #define GX_CP_VAT_GROUP0_NRM_CNT_LMASK ((1 << 1) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP0_NRM_CNT_SHIFT 9

/* get value  */ #define GX_CP_GET_VAT_GROUP0_NRM_CNT(reg) GX_BITGET((reg), 22, 1)
/* set value  */ #define GX_CP_SET_VAT_GROUP0_NRM_CNT(reg, x) ((reg) = GX_BITSET((reg), 22, 1, x))

// NRM_TYPE [19:21] (3)
/* start bit  */ #define GX_CP_VAT_GROUP0_NRM_TYPE_B 19
/* end bit    */ #define GX_CP_VAT_GROUP0_NRM_TYPE_E 21
/* bit size   */ #define GX_CP_VAT_GROUP0_NRM_TYPE_SZ 3

/* raw mask   */ #define GX_CP_VAT_GROUP0_NRM_TYPE_MASK (((1 << 3) - 1) << 31 - 21)
/* local mask */ #define GX_CP_VAT_GROUP0_NRM_TYPE_LMASK ((1 << 3) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP0_NRM_TYPE_SHIFT 10

/* get value  */ #define GX_CP_GET_VAT_GROUP0_NRM_TYPE(reg) GX_BITGET((reg), 19, 3)
/* set value  */ #define GX_CP_SET_VAT_GROUP0_NRM_TYPE(reg, x) ((reg) = GX_BITSET((reg), 19, 3, x))

// COLORDIFF_CNT [18:18] (1)
/* start bit  */ #define GX_CP_VAT_GROUP0_COLORDIFF_CNT_B 18
/* end bit    */ #define GX_CP_VAT_GROUP0_COLORDIFF_CNT_E 18
/* bit size   */ #define GX_CP_VAT_GROUP0_COLORDIFF_CNT_SZ 1

/* raw mask   */ #define GX_CP_VAT_GROUP0_COLORDIFF_CNT_MASK (((1 << 1) - 1) << 31 - 18)
/* local mask */ #define GX_CP_VAT_GROUP0_COLORDIFF_CNT_LMASK ((1 << 1) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP0_COLORDIFF_CNT_SHIFT 13

/* get value  */ #define GX_CP_GET_VAT_GROUP0_COLORDIFF_CNT(reg) GX_BITGET((reg), 18, 1)
/* set value  */ #define GX_CP_SET_VAT_GROUP0_COLORDIFF_CNT(reg, x) ((reg) = GX_BITSET((reg), 18, 1, x))

// COLORDIFF_TYPE [15:17] (3)
/* start bit  */ #define GX_CP_VAT_GROUP0_COLORDIFF_TYPE_B 15
/* end bit    */ #define GX_CP_VAT_GROUP0_COLORDIFF_TYPE_E 17
/* bit size   */ #define GX_CP_VAT_GROUP0_COLORDIFF_TYPE_SZ 3

/* raw mask   */ #define GX_CP_VAT_GROUP0_COLORDIFF_TYPE_MASK (((1 << 3) - 1) << 31 - 17)
/* local mask */ #define GX_CP_VAT_GROUP0_COLORDIFF_TYPE_LMASK ((1 << 3) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP0_COLORDIFF_TYPE_SHIFT 14

/* get value  */ #define GX_CP_GET_VAT_GROUP0_COLORDIFF_TYPE(reg) GX_BITGET((reg), 15, 3)
/* set value  */ #define GX_CP_SET_VAT_GROUP0_COLORDIFF_TYPE(reg, x) ((reg) = GX_BITSET((reg), 15, 3, x))

// COLORSPEC_CNT [14:14] (1)
/* start bit  */ #define GX_CP_VAT_GROUP0_COLORSPEC_CNT_B 14
/* end bit    */ #define GX_CP_VAT_GROUP0_COLORSPEC_CNT_E 14
/* bit size   */ #define GX_CP_VAT_GROUP0_COLORSPEC_CNT_SZ 1

/* raw mask   */ #define GX_CP_VAT_GROUP0_COLORSPEC_CNT_MASK (((1 << 1) - 1) << 31 - 14)
/* local mask */ #define GX_CP_VAT_GROUP0_COLORSPEC_CNT_LMASK ((1 << 1) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP0_COLORSPEC_CNT_SHIFT 17

/* get value  */ #define GX_CP_GET_VAT_GROUP0_COLORSPEC_CNT(reg) GX_BITGET((reg), 14, 1)
/* set value  */ #define GX_CP_SET_VAT_GROUP0_COLORSPEC_CNT(reg, x) ((reg) = GX_BITSET((reg), 14, 1, x))

// COLORSPEC_TYPE [11:13] (3)
/* start bit  */ #define GX_CP_VAT_GROUP0_COLORSPEC_TYPE_B 11
/* end bit    */ #define GX_CP_VAT_GROUP0_COLORSPEC_TYPE_E 13
/* bit size   */ #define GX_CP_VAT_GROUP0_COLORSPEC_TYPE_SZ 3

/* raw mask   */ #define GX_CP_VAT_GROUP0_COLORSPEC_TYPE_MASK (((1 << 3) - 1) << 31 - 13)
/* local mask */ #define GX_CP_VAT_GROUP0_COLORSPEC_TYPE_LMASK ((1 << 3) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP0_COLORSPEC_TYPE_SHIFT 18

/* get value  */ #define GX_CP_GET_VAT_GROUP0_COLORSPEC_TYPE(reg) GX_BITGET((reg), 11, 3)
/* set value  */ #define GX_CP_SET_VAT_GROUP0_COLORSPEC_TYPE(reg, x) ((reg) = GX_BITSET((reg), 11, 3, x))

// TXC0_CNT [10:10] (1)
/* start bit  */ #define GX_CP_VAT_GROUP0_TXC0_CNT_B 10
/* end bit    */ #define GX_CP_VAT_GROUP0_TXC0_CNT_E 10
/* bit size   */ #define GX_CP_VAT_GROUP0_TXC0_CNT_SZ 1

/* raw mask   */ #define GX_CP_VAT_GROUP0_TXC0_CNT_MASK (((1 << 1) - 1) << 31 - 10)
/* local mask */ #define GX_CP_VAT_GROUP0_TXC0_CNT_LMASK ((1 << 1) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP0_TXC0_CNT_SHIFT 21

/* get value  */ #define GX_CP_GET_VAT_GROUP0_TXC0_CNT(reg) GX_BITGET((reg), 10, 1)
/* set value  */ #define GX_CP_SET_VAT_GROUP0_TXC0_CNT(reg, x) ((reg) = GX_BITSET((reg), 10, 1, x))

// TXC0_TYPE [7:9] (3)
/* start bit  */ #define GX_CP_VAT_GROUP0_TXC0_TYPE_B 7
/* end bit    */ #define GX_CP_VAT_GROUP0_TXC0_TYPE_E 9
/* bit size   */ #define GX_CP_VAT_GROUP0_TXC0_TYPE_SZ 3

/* raw mask   */ #define GX_CP_VAT_GROUP0_TXC0_TYPE_MASK (((1 << 3) - 1) << 31 - 9)
/* local mask */ #define GX_CP_VAT_GROUP0_TXC0_TYPE_LMASK ((1 << 3) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP0_TXC0_TYPE_SHIFT 22

/* get value  */ #define GX_CP_GET_VAT_GROUP0_TXC0_TYPE(reg) GX_BITGET((reg), 7, 3)
/* set value  */ #define GX_CP_SET_VAT_GROUP0_TXC0_TYPE(reg, x) ((reg) = GX_BITSET((reg), 7, 3, x))

// TXC0_SHIFT [2:6] (5)
/* start bit  */ #define GX_CP_VAT_GROUP0_TXC0_SHIFT_B 2
/* end bit    */ #define GX_CP_VAT_GROUP0_TXC0_SHIFT_E 6
/* bit size   */ #define GX_CP_VAT_GROUP0_TXC0_SHIFT_SZ 5

/* raw mask   */ #define GX_CP_VAT_GROUP0_TXC0_SHIFT_MASK (((1 << 5) - 1) << 31 - 6)
/* local mask */ #define GX_CP_VAT_GROUP0_TXC0_SHIFT_LMASK ((1 << 5) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP0_TXC0_SHIFT_SHIFT 25

/* get value  */ #define GX_CP_GET_VAT_GROUP0_TXC0_SHIFT(reg) GX_BITGET((reg), 2, 5)
/* set value  */ #define GX_CP_SET_VAT_GROUP0_TXC0_SHIFT(reg, x) ((reg) = GX_BITSET((reg), 2, 5, x))

// BYTEDEQUANT [1:1] (1)
/* start bit  */ #define GX_CP_VAT_GROUP0_BYTEDEQUANT_B 1
/* end bit    */ #define GX_CP_VAT_GROUP0_BYTEDEQUANT_E 1
/* bit size   */ #define GX_CP_VAT_GROUP0_BYTEDEQUANT_SZ 1

/* raw mask   */ #define GX_CP_VAT_GROUP0_BYTEDEQUANT_MASK (((1 << 1) - 1) << 31 - 1)
/* local mask */ #define GX_CP_VAT_GROUP0_BYTEDEQUANT_LMASK ((1 << 1) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP0_BYTEDEQUANT_SHIFT 30

/* get value  */ #define GX_CP_GET_VAT_GROUP0_BYTEDEQUANT(reg) GX_BITGET((reg), 1, 1)
/* set value  */ #define GX_CP_SET_VAT_GROUP0_BYTEDEQUANT(reg, x) ((reg) = GX_BITSET((reg), 1, 1, x))

// NORMALINDEX3 [0:0] (1) - Input will be treated as three staggered indices (one per triple biased by component size)
// into normal table
/* start bit  */ #define GX_CP_VAT_GROUP0_NORMALINDEX3_B 0
/* end bit    */ #define GX_CP_VAT_GROUP0_NORMALINDEX3_E 0
/* bit size   */ #define GX_CP_VAT_GROUP0_NORMALINDEX3_SZ 1

/* raw mask   */ #define GX_CP_VAT_GROUP0_NORMALINDEX3_MASK (((1 << 1) - 1) << 31 - 0)
/* local mask */ #define GX_CP_VAT_GROUP0_NORMALINDEX3_LMASK ((1 << 1) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP0_NORMALINDEX3_SHIFT 31

/* get value  */ #define GX_CP_GET_VAT_GROUP0_NORMALINDEX3(reg) GX_BITGET((reg), 0, 1)
/* set value  */ #define GX_CP_SET_VAT_GROUP0_NORMALINDEX3(reg, x) ((reg) = GX_BITSET((reg), 0, 1, x))

/******************************************************************************
 * CP register 0x80 - VAT_group1
 *****************************************************************************/
// TXC1_CNT [31:31] (1)
/* start bit  */ #define GX_CP_VAT_GROUP1_TXC1_CNT_B 31
/* end bit    */ #define GX_CP_VAT_GROUP1_TXC1_CNT_E 31
/* bit size   */ #define GX_CP_VAT_GROUP1_TXC1_CNT_SZ 1

/* raw mask   */ #define GX_CP_VAT_GROUP1_TXC1_CNT_MASK (((1 << 1) - 1) << 31 - 31)
/* local mask */ #define GX_CP_VAT_GROUP1_TXC1_CNT_LMASK ((1 << 1) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP1_TXC1_CNT_SHIFT 0

/* get value  */ #define GX_CP_GET_VAT_GROUP1_TXC1_CNT(reg) GX_BITGET((reg), 31, 1)
/* set value  */ #define GX_CP_SET_VAT_GROUP1_TXC1_CNT(reg, x) ((reg) = GX_BITSET((reg), 31, 1, x))

// TXC1_TYPE [28:30] (3)
/* start bit  */ #define GX_CP_VAT_GROUP1_TXC1_TYPE_B 28
/* end bit    */ #define GX_CP_VAT_GROUP1_TXC1_TYPE_E 30
/* bit size   */ #define GX_CP_VAT_GROUP1_TXC1_TYPE_SZ 3

/* raw mask   */ #define GX_CP_VAT_GROUP1_TXC1_TYPE_MASK (((1 << 3) - 1) << 31 - 30)
/* local mask */ #define GX_CP_VAT_GROUP1_TXC1_TYPE_LMASK ((1 << 3) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP1_TXC1_TYPE_SHIFT 1

/* get value  */ #define GX_CP_GET_VAT_GROUP1_TXC1_TYPE(reg) GX_BITGET((reg), 28, 3)
/* set value  */ #define GX_CP_SET_VAT_GROUP1_TXC1_TYPE(reg, x) ((reg) = GX_BITSET((reg), 28, 3, x))

// TXC1_SHIFT [23:27] (5)
/* start bit  */ #define GX_CP_VAT_GROUP1_TXC1_SHIFT_B 23
/* end bit    */ #define GX_CP_VAT_GROUP1_TXC1_SHIFT_E 27
/* bit size   */ #define GX_CP_VAT_GROUP1_TXC1_SHIFT_SZ 5

/* raw mask   */ #define GX_CP_VAT_GROUP1_TXC1_SHIFT_MASK (((1 << 5) - 1) << 31 - 27)
/* local mask */ #define GX_CP_VAT_GROUP1_TXC1_SHIFT_LMASK ((1 << 5) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP1_TXC1_SHIFT_SHIFT 4

/* get value  */ #define GX_CP_GET_VAT_GROUP1_TXC1_SHIFT(reg) GX_BITGET((reg), 23, 5)
/* set value  */ #define GX_CP_SET_VAT_GROUP1_TXC1_SHIFT(reg, x) ((reg) = GX_BITSET((reg), 23, 5, x))

// TXC2_CNT [22:22] (1)
/* start bit  */ #define GX_CP_VAT_GROUP1_TXC2_CNT_B 22
/* end bit    */ #define GX_CP_VAT_GROUP1_TXC2_CNT_E 22
/* bit size   */ #define GX_CP_VAT_GROUP1_TXC2_CNT_SZ 1

/* raw mask   */ #define GX_CP_VAT_GROUP1_TXC2_CNT_MASK (((1 << 1) - 1) << 31 - 22)
/* local mask */ #define GX_CP_VAT_GROUP1_TXC2_CNT_LMASK ((1 << 1) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP1_TXC2_CNT_SHIFT 9

/* get value  */ #define GX_CP_GET_VAT_GROUP1_TXC2_CNT(reg) GX_BITGET((reg), 22, 1)
/* set value  */ #define GX_CP_SET_VAT_GROUP1_TXC2_CNT(reg, x) ((reg) = GX_BITSET((reg), 22, 1, x))

// TXC2_TYPE [19:21] (3)
/* start bit  */ #define GX_CP_VAT_GROUP1_TXC2_TYPE_B 19
/* end bit    */ #define GX_CP_VAT_GROUP1_TXC2_TYPE_E 21
/* bit size   */ #define GX_CP_VAT_GROUP1_TXC2_TYPE_SZ 3

/* raw mask   */ #define GX_CP_VAT_GROUP1_TXC2_TYPE_MASK (((1 << 3) - 1) << 31 - 21)
/* local mask */ #define GX_CP_VAT_GROUP1_TXC2_TYPE_LMASK ((1 << 3) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP1_TXC2_TYPE_SHIFT 10

/* get value  */ #define GX_CP_GET_VAT_GROUP1_TXC2_TYPE(reg) GX_BITGET((reg), 19, 3)
/* set value  */ #define GX_CP_SET_VAT_GROUP1_TXC2_TYPE(reg, x) ((reg) = GX_BITSET((reg), 19, 3, x))

// TXC2_SHIFT [14:18] (5)
/* start bit  */ #define GX_CP_VAT_GROUP1_TXC2_SHIFT_B 14
/* end bit    */ #define GX_CP_VAT_GROUP1_TXC2_SHIFT_E 18
/* bit size   */ #define GX_CP_VAT_GROUP1_TXC2_SHIFT_SZ 5

/* raw mask   */ #define GX_CP_VAT_GROUP1_TXC2_SHIFT_MASK (((1 << 5) - 1) << 31 - 18)
/* local mask */ #define GX_CP_VAT_GROUP1_TXC2_SHIFT_LMASK ((1 << 5) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP1_TXC2_SHIFT_SHIFT 13

/* get value  */ #define GX_CP_GET_VAT_GROUP1_TXC2_SHIFT(reg) GX_BITGET((reg), 14, 5)
/* set value  */ #define GX_CP_SET_VAT_GROUP1_TXC2_SHIFT(reg, x) ((reg) = GX_BITSET((reg), 14, 5, x))

// TXC3_CNT [13:13] (1)
/* start bit  */ #define GX_CP_VAT_GROUP1_TXC3_CNT_B 13
/* end bit    */ #define GX_CP_VAT_GROUP1_TXC3_CNT_E 13
/* bit size   */ #define GX_CP_VAT_GROUP1_TXC3_CNT_SZ 1

/* raw mask   */ #define GX_CP_VAT_GROUP1_TXC3_CNT_MASK (((1 << 1) - 1) << 31 - 13)
/* local mask */ #define GX_CP_VAT_GROUP1_TXC3_CNT_LMASK ((1 << 1) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP1_TXC3_CNT_SHIFT 18

/* get value  */ #define GX_CP_GET_VAT_GROUP1_TXC3_CNT(reg) GX_BITGET((reg), 13, 1)
/* set value  */ #define GX_CP_SET_VAT_GROUP1_TXC3_CNT(reg, x) ((reg) = GX_BITSET((reg), 13, 1, x))

// TXC3_TYPE [10:12] (3)
/* start bit  */ #define GX_CP_VAT_GROUP1_TXC3_TYPE_B 10
/* end bit    */ #define GX_CP_VAT_GROUP1_TXC3_TYPE_E 12
/* bit size   */ #define GX_CP_VAT_GROUP1_TXC3_TYPE_SZ 3

/* raw mask   */ #define GX_CP_VAT_GROUP1_TXC3_TYPE_MASK (((1 << 3) - 1) << 31 - 12)
/* local mask */ #define GX_CP_VAT_GROUP1_TXC3_TYPE_LMASK ((1 << 3) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP1_TXC3_TYPE_SHIFT 19

/* get value  */ #define GX_CP_GET_VAT_GROUP1_TXC3_TYPE(reg) GX_BITGET((reg), 10, 3)
/* set value  */ #define GX_CP_SET_VAT_GROUP1_TXC3_TYPE(reg, x) ((reg) = GX_BITSET((reg), 10, 3, x))

// TXC3_SHIFT [5:9] (5)
/* start bit  */ #define GX_CP_VAT_GROUP1_TXC3_SHIFT_B 5
/* end bit    */ #define GX_CP_VAT_GROUP1_TXC3_SHIFT_E 9
/* bit size   */ #define GX_CP_VAT_GROUP1_TXC3_SHIFT_SZ 5

/* raw mask   */ #define GX_CP_VAT_GROUP1_TXC3_SHIFT_MASK (((1 << 5) - 1) << 31 - 9)
/* local mask */ #define GX_CP_VAT_GROUP1_TXC3_SHIFT_LMASK ((1 << 5) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP1_TXC3_SHIFT_SHIFT 22

/* get value  */ #define GX_CP_GET_VAT_GROUP1_TXC3_SHIFT(reg) GX_BITGET((reg), 5, 5)
/* set value  */ #define GX_CP_SET_VAT_GROUP1_TXC3_SHIFT(reg, x) ((reg) = GX_BITSET((reg), 5, 5, x))

// TXC4_CNT [4:4] (1)
/* start bit  */ #define GX_CP_VAT_GROUP1_TXC4_CNT_B 4
/* end bit    */ #define GX_CP_VAT_GROUP1_TXC4_CNT_E 4
/* bit size   */ #define GX_CP_VAT_GROUP1_TXC4_CNT_SZ 1

/* raw mask   */ #define GX_CP_VAT_GROUP1_TXC4_CNT_MASK (((1 << 1) - 1) << 31 - 4)
/* local mask */ #define GX_CP_VAT_GROUP1_TXC4_CNT_LMASK ((1 << 1) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP1_TXC4_CNT_SHIFT 27

/* get value  */ #define GX_CP_GET_VAT_GROUP1_TXC4_CNT(reg) GX_BITGET((reg), 4, 1)
/* set value  */ #define GX_CP_SET_VAT_GROUP1_TXC4_CNT(reg, x) ((reg) = GX_BITSET((reg), 4, 1, x))

// TXC4_TYPE [1:3] (3)
/* start bit  */ #define GX_CP_VAT_GROUP1_TXC4_TYPE_B 1
/* end bit    */ #define GX_CP_VAT_GROUP1_TXC4_TYPE_E 3
/* bit size   */ #define GX_CP_VAT_GROUP1_TXC4_TYPE_SZ 3

/* raw mask   */ #define GX_CP_VAT_GROUP1_TXC4_TYPE_MASK (((1 << 3) - 1) << 31 - 3)
/* local mask */ #define GX_CP_VAT_GROUP1_TXC4_TYPE_LMASK ((1 << 3) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP1_TXC4_TYPE_SHIFT 28

/* get value  */ #define GX_CP_GET_VAT_GROUP1_TXC4_TYPE(reg) GX_BITGET((reg), 1, 3)
/* set value  */ #define GX_CP_SET_VAT_GROUP1_TXC4_TYPE(reg, x) ((reg) = GX_BITSET((reg), 1, 3, x))

/******************************************************************************
 * CP register 0x90 - VAT_group2
 *****************************************************************************/
// TXC4_SHIFT [27:31] (5)
/* start bit  */ #define GX_CP_VAT_GROUP2_TXC4_SHIFT_B 27
/* end bit    */ #define GX_CP_VAT_GROUP2_TXC4_SHIFT_E 31
/* bit size   */ #define GX_CP_VAT_GROUP2_TXC4_SHIFT_SZ 5

/* raw mask   */ #define GX_CP_VAT_GROUP2_TXC4_SHIFT_MASK (((1 << 5) - 1) << 31 - 31)
/* local mask */ #define GX_CP_VAT_GROUP2_TXC4_SHIFT_LMASK ((1 << 5) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP2_TXC4_SHIFT_SHIFT 0

/* get value  */ #define GX_CP_GET_VAT_GROUP2_TXC4_SHIFT(reg) GX_BITGET((reg), 27, 5)
/* set value  */ #define GX_CP_SET_VAT_GROUP2_TXC4_SHIFT(reg, x) ((reg) = GX_BITSET((reg), 27, 5, x))

// TXC5_CNT [26:26] (1)
/* start bit  */ #define GX_CP_VAT_GROUP2_TXC5_CNT_B 26
/* end bit    */ #define GX_CP_VAT_GROUP2_TXC5_CNT_E 26
/* bit size   */ #define GX_CP_VAT_GROUP2_TXC5_CNT_SZ 1

/* raw mask   */ #define GX_CP_VAT_GROUP2_TXC5_CNT_MASK (((1 << 1) - 1) << 31 - 26)
/* local mask */ #define GX_CP_VAT_GROUP2_TXC5_CNT_LMASK ((1 << 1) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP2_TXC5_CNT_SHIFT 5

/* get value  */ #define GX_CP_GET_VAT_GROUP2_TXC5_CNT(reg) GX_BITGET((reg), 26, 1)
/* set value  */ #define GX_CP_SET_VAT_GROUP2_TXC5_CNT(reg, x) ((reg) = GX_BITSET((reg), 26, 1, x))

// TXC5_TYPE [23:25] (3)
/* start bit  */ #define GX_CP_VAT_GROUP2_TXC5_TYPE_B 23
/* end bit    */ #define GX_CP_VAT_GROUP2_TXC5_TYPE_E 25
/* bit size   */ #define GX_CP_VAT_GROUP2_TXC5_TYPE_SZ 3

/* raw mask   */ #define GX_CP_VAT_GROUP2_TXC5_TYPE_MASK (((1 << 3) - 1) << 31 - 25)
/* local mask */ #define GX_CP_VAT_GROUP2_TXC5_TYPE_LMASK ((1 << 3) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP2_TXC5_TYPE_SHIFT 6

/* get value  */ #define GX_CP_GET_VAT_GROUP2_TXC5_TYPE(reg) GX_BITGET((reg), 23, 3)
/* set value  */ #define GX_CP_SET_VAT_GROUP2_TXC5_TYPE(reg, x) ((reg) = GX_BITSET((reg), 23, 3, x))

// TXC5_SHIFT [18:22] (5)
/* start bit  */ #define GX_CP_VAT_GROUP2_TXC5_SHIFT_B 18
/* end bit    */ #define GX_CP_VAT_GROUP2_TXC5_SHIFT_E 22
/* bit size   */ #define GX_CP_VAT_GROUP2_TXC5_SHIFT_SZ 5

/* raw mask   */ #define GX_CP_VAT_GROUP2_TXC5_SHIFT_MASK (((1 << 5) - 1) << 31 - 22)
/* local mask */ #define GX_CP_VAT_GROUP2_TXC5_SHIFT_LMASK ((1 << 5) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP2_TXC5_SHIFT_SHIFT 9

/* get value  */ #define GX_CP_GET_VAT_GROUP2_TXC5_SHIFT(reg) GX_BITGET((reg), 18, 5)
/* set value  */ #define GX_CP_SET_VAT_GROUP2_TXC5_SHIFT(reg, x) ((reg) = GX_BITSET((reg), 18, 5, x))

// TXC6_CNT [17:17] (1)
/* start bit  */ #define GX_CP_VAT_GROUP2_TXC6_CNT_B 17
/* end bit    */ #define GX_CP_VAT_GROUP2_TXC6_CNT_E 17
/* bit size   */ #define GX_CP_VAT_GROUP2_TXC6_CNT_SZ 1

/* raw mask   */ #define GX_CP_VAT_GROUP2_TXC6_CNT_MASK (((1 << 1) - 1) << 31 - 17)
/* local mask */ #define GX_CP_VAT_GROUP2_TXC6_CNT_LMASK ((1 << 1) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP2_TXC6_CNT_SHIFT 14

/* get value  */ #define GX_CP_GET_VAT_GROUP2_TXC6_CNT(reg) GX_BITGET((reg), 17, 1)
/* set value  */ #define GX_CP_SET_VAT_GROUP2_TXC6_CNT(reg, x) ((reg) = GX_BITSET((reg), 17, 1, x))

// TXC6_TYPE [14:16] (3)
/* start bit  */ #define GX_CP_VAT_GROUP2_TXC6_TYPE_B 14
/* end bit    */ #define GX_CP_VAT_GROUP2_TXC6_TYPE_E 16
/* bit size   */ #define GX_CP_VAT_GROUP2_TXC6_TYPE_SZ 3

/* raw mask   */ #define GX_CP_VAT_GROUP2_TXC6_TYPE_MASK (((1 << 3) - 1) << 31 - 16)
/* local mask */ #define GX_CP_VAT_GROUP2_TXC6_TYPE_LMASK ((1 << 3) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP2_TXC6_TYPE_SHIFT 15

/* get value  */ #define GX_CP_GET_VAT_GROUP2_TXC6_TYPE(reg) GX_BITGET((reg), 14, 3)
/* set value  */ #define GX_CP_SET_VAT_GROUP2_TXC6_TYPE(reg, x) ((reg) = GX_BITSET((reg), 14, 3, x))

// TXC6_SHIFT [9:13] (5)
/* start bit  */ #define GX_CP_VAT_GROUP2_TXC6_SHIFT_B 9
/* end bit    */ #define GX_CP_VAT_GROUP2_TXC6_SHIFT_E 13
/* bit size   */ #define GX_CP_VAT_GROUP2_TXC6_SHIFT_SZ 5

/* raw mask   */ #define GX_CP_VAT_GROUP2_TXC6_SHIFT_MASK (((1 << 5) - 1) << 31 - 13)
/* local mask */ #define GX_CP_VAT_GROUP2_TXC6_SHIFT_LMASK ((1 << 5) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP2_TXC6_SHIFT_SHIFT 18

/* get value  */ #define GX_CP_GET_VAT_GROUP2_TXC6_SHIFT(reg) GX_BITGET((reg), 9, 5)
/* set value  */ #define GX_CP_SET_VAT_GROUP2_TXC6_SHIFT(reg, x) ((reg) = GX_BITSET((reg), 9, 5, x))

// TXC7_CNT [8:8] (1)
/* start bit  */ #define GX_CP_VAT_GROUP2_TXC7_CNT_B 8
/* end bit    */ #define GX_CP_VAT_GROUP2_TXC7_CNT_E 8
/* bit size   */ #define GX_CP_VAT_GROUP2_TXC7_CNT_SZ 1

/* raw mask   */ #define GX_CP_VAT_GROUP2_TXC7_CNT_MASK (((1 << 1) - 1) << 31 - 8)
/* local mask */ #define GX_CP_VAT_GROUP2_TXC7_CNT_LMASK ((1 << 1) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP2_TXC7_CNT_SHIFT 23

/* get value  */ #define GX_CP_GET_VAT_GROUP2_TXC7_CNT(reg) GX_BITGET((reg), 8, 1)
/* set value  */ #define GX_CP_SET_VAT_GROUP2_TXC7_CNT(reg, x) ((reg) = GX_BITSET((reg), 8, 1, x))

// TXC7_TYPE [5:7] (3)
/* start bit  */ #define GX_CP_VAT_GROUP2_TXC7_TYPE_B 5
/* end bit    */ #define GX_CP_VAT_GROUP2_TXC7_TYPE_E 7
/* bit size   */ #define GX_CP_VAT_GROUP2_TXC7_TYPE_SZ 3

/* raw mask   */ #define GX_CP_VAT_GROUP2_TXC7_TYPE_MASK (((1 << 3) - 1) << 31 - 7)
/* local mask */ #define GX_CP_VAT_GROUP2_TXC7_TYPE_LMASK ((1 << 3) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP2_TXC7_TYPE_SHIFT 24

/* get value  */ #define GX_CP_GET_VAT_GROUP2_TXC7_TYPE(reg) GX_BITGET((reg), 5, 3)
/* set value  */ #define GX_CP_SET_VAT_GROUP2_TXC7_TYPE(reg, x) ((reg) = GX_BITSET((reg), 5, 3, x))

// TXC7_SHIFT [0:4] (5)
/* start bit  */ #define GX_CP_VAT_GROUP2_TXC7_SHIFT_B 0
/* end bit    */ #define GX_CP_VAT_GROUP2_TXC7_SHIFT_E 4
/* bit size   */ #define GX_CP_VAT_GROUP2_TXC7_SHIFT_SZ 5

/* raw mask   */ #define GX_CP_VAT_GROUP2_TXC7_SHIFT_MASK (((1 << 5) - 1) << 31 - 4)
/* local mask */ #define GX_CP_VAT_GROUP2_TXC7_SHIFT_LMASK ((1 << 5) - 1)
/* bit shift  */ #define GX_CP_VAT_GROUP2_TXC7_SHIFT_SHIFT 27

/* get value  */ #define GX_CP_GET_VAT_GROUP2_TXC7_SHIFT(reg) GX_BITGET((reg), 0, 5)
/* set value  */ #define GX_CP_SET_VAT_GROUP2_TXC7_SHIFT(reg, x) ((reg) = GX_BITSET((reg), 0, 5, x))

/******************************************************************************
 * CP register 0xA0 - ArrayBase
 *****************************************************************************/
// BASE [6:31] (26)
/* start bit  */ #define GX_CP_ARRAYBASE_BASE_B 6
/* end bit    */ #define GX_CP_ARRAYBASE_BASE_E 31
/* bit size   */ #define GX_CP_ARRAYBASE_BASE_SZ 26

/* raw mask   */ #define GX_CP_ARRAYBASE_BASE_MASK (((1 << 26) - 1) << 31 - 31)
/* local mask */ #define GX_CP_ARRAYBASE_BASE_LMASK ((1 << 26) - 1)
/* bit shift  */ #define GX_CP_ARRAYBASE_BASE_SHIFT 0

/* get value  */ #define GX_CP_GET_ARRAYBASE_BASE(reg) GX_BITGET((reg), 6, 26)
/* set value  */ #define GX_CP_SET_ARRAYBASE_BASE(reg, x) ((reg) = GX_BITSET((reg), 6, 26, x))

/******************************************************************************
 * CP register 0xB0 - ArrayStride
 *****************************************************************************/
// STRIDE [24:31] (8)
/* start bit  */ #define GX_CP_ARRAYSTRIDE_STRIDE_B 24
/* end bit    */ #define GX_CP_ARRAYSTRIDE_STRIDE_E 31
/* bit size   */ #define GX_CP_ARRAYSTRIDE_STRIDE_SZ 8

/* raw mask   */ #define GX_CP_ARRAYSTRIDE_STRIDE_MASK (((1 << 8) - 1) << 31 - 31)
/* local mask */ #define GX_CP_ARRAYSTRIDE_STRIDE_LMASK ((1 << 8) - 1)
/* bit shift  */ #define GX_CP_ARRAYSTRIDE_STRIDE_SHIFT 0

/* get value  */ #define GX_CP_GET_ARRAYSTRIDE_STRIDE(reg) GX_BITGET((reg), 24, 8)
/* set value  */ #define GX_CP_SET_ARRAYSTRIDE_STRIDE(reg, x) ((reg) = GX_BITSET((reg), 24, 8, x))

#ifdef __cplusplus
}
#endif
#endif
